0
  • 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"
        }
    }
}
OrenIshShalom
  • 5,974
  • 9
  • 37
  • 87

1 Answers1

0

It turns out I was missing this field:

    "loggers": { 
        "root": {
            "handlers": ["handler_default"],
            "level": "INFO"
        },
        "analyzer": { 
            "handlers": ["handler_analyzer"],
            "propagate": false, # <----- solves the problem !
            "level": "INFO"
        }
    }
}
OrenIshShalom
  • 5,974
  • 9
  • 37
  • 87