Skip to content

Instantly share code, notes, and snippets.

@justinnaldzin
Created June 24, 2019 19:20
Show Gist options
  • Save justinnaldzin/b05f1233e3e151fb412319a7c444a61e to your computer and use it in GitHub Desktop.
Save justinnaldzin/b05f1233e3e151fb412319a7c444a61e to your computer and use it in GitHub Desktop.
Python logging to both standard out and file
import os
import sys
import logging
FORMATTER = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(module)s - %(message)s')
LOG_FOLDER = 'log'
def get_console_handler():
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setFormatter(FORMATTER)
return console_handler
def get_file_handler(log_file='untitled.log'):
if not os.path.exists(LOG_FOLDER):
os.mkdir(LOG_FOLDER)
log_path = os.path.join(LOG_FOLDER, log_file)
file_handler = logging.FileHandler(log_path, mode='a', encoding='utf-8')
file_handler.setFormatter(FORMATTER)
return file_handler
def get_logger(logger_name):
logger = logging.getLogger(logger_name)
logger.setLevel(logging.DEBUG)
logger.addHandler(get_console_handler())
logger.addHandler(get_file_handler(os.path.join(logger_name + '.log')))
return logger
if __name__ == '__main__':
logger = get_logger(__name__)
logger.debug('This is a message')
try:
raise Exception('Some exception')
except:
logger.exception('My app crashed!')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment