Skip to content

Instantly share code, notes, and snippets.

@binarybrat
Forked from nguyenkims/log.py
Created January 6, 2024 07:12
Show Gist options
  • Save binarybrat/ba6f950adf58e5795b05cdb04a8db8dc to your computer and use it in GitHub Desktop.
Save binarybrat/ba6f950adf58e5795b05cdb04a8db8dc to your computer and use it in GitHub Desktop.

Revisions

  1. @nguyenkims nguyenkims revised this gist Feb 12, 2018. No changes.
  2. @nguyenkims nguyenkims created this gist Feb 12, 2018.
    30 changes: 30 additions & 0 deletions log.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,30 @@
    import logging
    import sys
    from logging.handlers import TimedRotatingFileHandler

    FORMATTER = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
    LOG_FILE = "my_app.log"

    def get_console_handler():
    console_handler = logging.StreamHandler(sys.stdout)
    console_handler.setFormatter(FORMATTER)
    return console_handler

    def get_file_handler():
    file_handler = TimedRotatingFileHandler(LOG_FILE, when='midnight')
    file_handler.setFormatter(FORMATTER)
    return file_handler

    def get_logger(logger_name):
    logger = logging.getLogger(logger_name)

    logger.setLevel(logging.DEBUG) # better to have too much log than not enough

    logger.addHandler(get_console_handler())
    logger.addHandler(get_file_handler())

    # with this pattern, it's rarely necessary to propagate the error up to parent
    logger.propagate = False

    return logger