- I am using two loggers, the default (root) logger and a customized one.
- For some reason, messages sent to the customized logger appear twice.
- related post (details are brought here for completeness)
import json
import logging
import logging.config
with open("logging.json") as fl:
logging.config.dictConfig(
json.load(fl)
)
# default (root) logger
logging.info("where is my stuff ?")
# customized (analyzer) logger
# this message appears twice
logging.getLogger("analyzer").info(
"it is right there"
)
Here is my output:
[ 24/07/22 ( 08:56:26 ) ] [INFO] where is my stuff ?
{
"time": "24/07/22 ( 08:56:26 )",
"level": "INFO",
"message": "it is right there"
}
[ 24/07/22 ( 08:56:26 ) ] [INFO] it is right there # <--- why is this happening ?!
config file (appears in the related post, brought here to make post self contained)
{
"version": 1,
"formatters": {
"formatter_default": {
"format": "[ %(asctime)s ] [%(levelname)s] %(message)s",
"datefmt": "%d/%m/%y ( %H:%M:%S )"
},
"formatter_analyzer": {
"()": "pythonjsonlogger.jsonlogger.JsonFormatter",
"format": "[ %(asctime)s ] %(levelname)s %(message)s",
"datefmt": "%d/%m/%y ( %H:%M:%S )",
"rename_fields": {
"asctime": "time",
"levelname": "level"
},
"json_indent": 4
}
},
"handlers": {
"handler_default": {
"formatter": "formatter_default",
"class": "logging.StreamHandler",
"stream": "ext://sys.stdout"
},
"handler_analyzer": {
"formatter": "formatter_analyzer",
"class": "logging.StreamHandler",
"stream": "ext://sys.stdout"
}
},
"loggers": {
"root": {
"handlers": ["handler_default"],
"level": "INFO"
},
"analyzer": {
"handlers": ["handler_analyzer"],
"level": "INFO"
}
}
}