使用Python的logging.config

使用Python的logging.config

Python的logging模块接口仿log4j,概念上一致,使用上相当方便。
利用logging.config.fileConfig(),可以将日志的配置用文件来描述,简化了日志的初始化。

例程:
#  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

[ formatters ]
keys
= simpleFormatter

[ formatter_simpleFormatter ]
format
= [ %(asctime)s ] (%(levelname)s)%(name)s : %(message)s

[ logger_root ]
level
= DEBUG
handlers
= consoleHandler , rotateFileHandler

[ logger_example ]
level
= DEBUG
handlers
= consoleHandler , rotateFileHandler
qualname
= example
propagate
= 0

[ handler_consoleHandler ]
class
= StreamHandler
level
= DEBUG
formatter
= simpleFormatter
args
= (sys.stdout , )

[ handler_rotateFileHandler ]
class
= handlers.RotatingFileHandler
level
= DEBUG
formatter
= simpleFormatter
args
= ('test.log' ,  'a' ,   200000 ,   9 )



注意,RotatingFileHandler中doRollover()会因为rename()出错而中途退出,造成日志文件没有打开,并且后继的日志消息都因为日志文件没有打开而失败。可以自己在rename()处加上try,或者不用RotatingFileHandler。估计隔一段时间就fileConfig()一次也是可以恢复正常。
详见: Python logging RotatingFileHandler bug

该错误仅当日志文件满时切换文件时才可能发生,当文件被锁定时才会出错。正常使用不会有问题,并且日志出错不会影响主程序的运行。所以可以放心使用,想再可靠点就直接在源码中加个try.

(转载请注明来源于金庆的专栏)

 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值