I've been using Python for more than 2 years now. It's sad that I never came across the amazing logging library. I was relying on the plain old print and used .format to its full potential.
Now that I know about logging, I can't think of using anything else.
There are various approaches to initialize the logging module. I prefer the one with the config file. That way it's easier to configure the format etc.
This is a sample python code using the logging library
Now that I know about logging, I can't think of using anything else.
There are various approaches to initialize the logging module. I prefer the one with the config file. That way it's easier to configure the format etc.
This is a sample python code using the logging library
import logging import logging.config logging.config.fileConfig('loggerconfig.ini') logger = logging.getLogger('server') def testmodule(): logger.info("This is a test info message") logger.critical("This is a test critical message") testmodule()Output of this sample code:
[10-11-15 23:55:12] INFO test This is a test info message (testmodule:8) [10-11-15 23:55:12] CRITICAL test This is a test critical message (testmodule:9)This is the sample loggerconfig.ini file used to achieve the above output
[loggers] keys=root,server [handlers] keys=consoleHandler [formatters] keys=simpleFormatter [logger_root] level=DEBUG handlers=consoleHandler [logger_server] level=DEBUG handlers=consoleHandler qualname=server propagate=0 ;Available debug levels ;CRITICAL 50 ERROR 40 WARNING 30 INFO 20 DEBUG 10 NOTSET 0 [handler_consoleHandler] class=StreamHandler level=DEBUG formatter=simpleFormatter args=(sys.stdout,) [formatter_simpleFormatter] format=[%(asctime)s] %(levelname)-8s %(module)-25s %(message)s (%(funcName)s:%(lineno)d) datefmt=%m-%d-%y %H:%M:%S
format and datefmt are the most important fields in the config file which you need to edit to get the desired output. List of all the attributes are documented here