Just wanted to share this simple log helper method I came up with after some research, which can help you quickly setup Python logging and focus on your main app logic instead of dangling around in logging documentation.
The method is very simple, takes a filename and two other optional arguments, and returns ‘logging’ object, and you can start logging in your Python projects in no time!
Here’s the code:
#file log_helper.py import os, sys import logging def logHelper(fileName, logLevel=logging.INFO, useConsole=True): """ Simple Logging Helper. Retuens logger reference. Paramsmeters: fileName: Filename, may include full path, or will open a file in default folder logLevel: Pass logging.INFO, logging.DEBUG or other enums for logging level useConsole: If Ture, will also dump log to console """ ##### init logging log = logging.getLogger() log.setLevel(logLevel) logFormatter = logging.Formatter("%(asctime)s | %(threadName)-12.12s | %(levelname)-5.5s | %(message)s") ##### file handler fileOut = logging.FileHandler(fileName) fileOut.setFormatter(logFormatter) log.addHandler(fileOut) ##### console handler if useConsole: consoleOut = logging.StreamHandler(sys.stdout) consoleOut.setFormatter(logFormatter) log.addHandler(consoleOut) ##### return reference return log
And usage is simple. Passing just filename defaults to ‘logging.INFO’ log level, and console output turned on:
#import module import log_helper as log # get logger log = log.logHelper('logfile.log') log.info("Got logger")
Or use optional arguments to set up logging level and console output:
#import module import log_helper as log # get logger log = log.logHelper('logfile.log', logging.WARN, False) log.warn("this is a warning message")
Additionally, you can always tweak the method as per your needs, for rotating file handler, additional output handlers and log output format.
Check out Python’s documentation for ‘logging’ module here for more info.
Bugs reports? Suggestions? Let me know if you found this useful. Leave a comment 🙂
Cheers,
// Sohail