python的log模块是日常使用最多的模块之一, 简单的使用这里就不多说了,见(http://blog.csdn.net/jianhong1990/article/details/17475717)。
实际运用中,我们可能需要将日志的配置信息独立出来,这时候我们就需要用到logging的另一个功能:
test.py
# test.py
import logging
import logging.config
logging.config.fileConfig("logging.conf")
#create logger
logger = logging.getLogger("example")
#"application" code
logger.debug("debug message")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
logger.critical("critical message")
logHello = logging.getLogger("hello")
logHello.info("Hello world!")
logging.conf配置文件:
[loggers]
keys=root,example
[handlers]
keys=consoleHandler,rotateFileHandler,rootFileHandler
[formatters]
keys=simpleFormatter
[formatter_simpleFormatter]
format=[%(asctime)s](%(levelname)s)%(name)s : %(message)s
[logger_root]
level=DEBUG
handlers=consoleHandler,rootFileHandler
[logger_example]
level=DEBUG
handlers=consoleHandler,rotateFileHandler
#在app中应用这个log的名字
qualname=example
#是否会传递到更高级的logger中,类似于冒泡,会传递到父logger中
propagate=0
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)
[handler_rotateFileHandler]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=simpleFormatter
args=('logs/cdnlog/test.log', 'a', 200000, 9)
[handler_rootFileHandler]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=simpleFormatter
args=('logs/cdnlog/root.log', 'a', 200000, 9)