Skip to content

Instantly share code, notes, and snippets.

@bdsaglam
Last active June 18, 2020 17:02
Show Gist options
  • Save bdsaglam/02ad6fea2e410627e9a8d100ed382afe to your computer and use it in GitHub Desktop.
Save bdsaglam/02ad6fea2e410627e9a8d100ed382afe to your computer and use it in GitHub Desktop.
Python logging example
# Credits: https://gist.github.com/nguyenkims
import logging
import sys
from logging.handlers import TimedRotatingFileHandler
FORMATTER = logging.Formatter("[%(asctime)s][%(name)s][%(levelname)s] - %(message)s")
LOG_FILE = "app.log"
def make_console_handler():
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setFormatter(FORMATTER)
return console_handler
def make_file_handler():
file_handler = TimedRotatingFileHandler(LOG_FILE, when='midnight')
file_handler.setFormatter(FORMATTER)
return file_handler
def get_logger(name):
logger = logging.getLogger(name)
logger.addHandler(make_console_handler())
fh = make_file_handler()
fh.setLevel(logging.DEBUG)
logger.addHandler(fh)
# with this pattern, it's rarely necessary to propagate the error up to parent
logger.propagate = False
return logger
def main():
log = get_logger(__name__)
log.debug('Quirky bug')
log.info('Important info')
log.warning('Ultimatom')
try:
x = 1 / 0
except ZeroDivisionError as err:
log.error(err, exc_info=1)
if __name__ == '__main__':
import argparse
import logging
parser = argparse.ArgumentParser()
parser.add_argument("-v", "--verbose", help="increase output verbosity",
action="store_true")
args = parser.parse_args()
if args.verbose:
logging.basicConfig(level=logging.DEBUG)
main()
exit()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment