Skip to content

Instantly share code, notes, and snippets.

@m-root
Created August 16, 2019 08:21
Show Gist options
  • Save m-root/2bfa22600464d857eb6218cfea05388d to your computer and use it in GitHub Desktop.
Save m-root/2bfa22600464d857eb6218cfea05388d to your computer and use it in GitHub Desktop.
Log File Auto Generator
import sys
from logging.handlers import TimedRotatingFileHandler
import logging
import logging.handlers
from datetime import date
from pathlib import Path
def get_project_root() -> Path:
return Path(__file__).parent.parent
def fileNameLocation():
today = date.today()
return ('{}/logs/{}.log'.format(get_project_root(), today.strftime("%d-%B-%Y")))
FORMATTER = logging.Formatter('%(asctime)s — %(name)s — "pathName":"%(pathname)s" — "LINE NO":"%(lineno)d" — "levelName":"%(levelname)s" — "message":"%(message)s"')
# FORMATTER = logging.Formatter('%(asctime)s, "loggerName":"%(name)s", "pathName":"%(pathname)s", "logRecordCreationTime":"%(created)f", "functionName":"%(funcName)s", "levelNo":"%(levelno)s", "lineNo":"%(lineno)d", "time":"%(msecs)d", "levelName":"%(levelname)s", "message":"%(message)s"')
# FORMATTER = logging.Formatter("%(asctime)s — %(name)s — %(levelname)s — %(message)s")
LOG_FILE = fileNameLocation()
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())
if (logger.hasHandlers()):
logger.handlers.clear()
logger.addHandler(get_file_handler())
# with this pattern, it's rarely necessary to propagate the error up to parent
logger.propagate = False
return logger
my_logger = get_logger("BOT LOGGING")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment