Logger From Dictionary
In this lesson, you’ll see how to do what you did in the last lesson, but this time, but with a dictionary approach. The most straightforward way to do this is with a YAML file for your configuration. Here’s the same configuration in a YAML format for the dictionary approach:
version: 1
formatters:
simple:
format: '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
handlers:
console:
class: logging.StreamHandler
level: DEBUG
formatter: simple
stream: ext://sys.stdout
loggers:
sampleLogger:
level: DEBUG
handlers: [console]
propagate: no
root:
level: DEBUG
handlers: [console]
Here’s an example that shows how to load config from a yaml
file:
import logging
import logging.config
import yaml
with open('config.yaml', 'r') as f:
config = yaml.safe_load(f.read())
logging.config.dictConfig(config)
logger = logging.getLogger(__name__)
logger.debug('This is a debug message')
Here’s what you’d get:
2018-07-13 14:05:03,766 - __main__ - DEBUG - This is a debug message
00:00
Let’s do the same thing, but with a dictionary approach. The easiest way to do this is by using a YAML file for our configuration. This works in a similar way as in the last video. First, we define a new formatter called simple
, and we will supply it this formatting string right here.
00:21
Then we create a new handler called console
, which will use the StreamHandler
class and the stdout
stream, a level
of DEBUG
, and the simple
formatter we just defined.
00:33
Then we create a logger called sampleLogger
with a level of DEBUG
, handlers
of [console]
, and no
for propagation. Finally, we define the root
logger with a level
of DEBUG
and the same console
handler.
00:50
This file right here is saved as config.yaml
.
00:55
I’ll jump into a new Python file and start coding the mechanism for creating our logger from this YAML file. I need to import three modules this time, logging
, logging.config
, and yaml
.
01:09
If you don’t have yaml
, you can grab it by running pip install PyYAML
in a command line. Now, I can open this file in the standard Python way, with open('config.yaml')
in read mode ('r'
) as f:
. I’ll read the lines with config = yaml.safe_load(f.read())
.
01:37
And now I’ll configure the logger with logging.config.dictConfig()
, passing in the config information. I’ll create a new logger by typing logger = logging.getLogger(__name__)
.
01:54
I’ll use this logger by writing logger.debug()
, passing in 'This is a debug message'
.
02:03 And as usual, I will right-click here and choose Run Code, and we see that we get the exact same log output as in the last video.
Become a Member to join the conversation.
Olya on April 27, 2021
Austin hello,
I have reviewed your course and have attention to implement assertion for logger, could it be used for existed logs?
Thank you in advance!
Olha