01.python logging
1.logging配置的方式
日志级别:NOTSET< DEBUG < INFO<WARNING<ERROR
1.使用INI格式文件
- 优点:使用
logging.config.listen()函数监听socket,可在运行过程中更新配置 - 缺点:通过源码控制日志配置较少( 例如 子类化定制的过滤器或记录器)
logging_config.ini
[loggers] keys=root [handlers] keys=stream_handler [formatters] keys=formatter # 一级过滤 [logger_root] level=DEBUG handlers=stream_handler # 二级过滤 [handler_stream_handler] class=StreamHandler level=DEBUG formatter=formatter args=(sys.stderr,) [formatter_formatter] format=[%(asctime)s] [%(name)-4s] [%(levelname)-4s] [%(message)s]
然后在源码中调用 logging.config.fileConfig() 方法
import logging
from logging.config import fileConfig
fileConfig('logging_config.ini')
logger = logging.getLogger()
logger.debug('this is a %s message', 'debug')
logger.info('this is a %s message', 'info')
logger.warn('this is a %s message', 'warn')
logger.error('this is a %s message', 'error')
输出:

2.使用字典或JSON格式文件
- 优点:除了可在运行时动态更新,在Python 2.6之后,还可通过
json模块从其它文件中导入配置 - 缺点:很难通过源码控制日志配置
import logging
from logging.config import dictConfig
logging_config = dict(
version=1,
formatters={
'f': {'format':
'[%(asctime)s] [%(name)-4s] [%(levelname)-4s] [%(message)s]'}
},
handlers={
'h': {'class': 'logging.StreamHandler',
'formatter': 'f',
'level': logging.DEBUG}
},
root={
'handlers': ['h'],
'level': logging.DEBUG,
},
)
dictConfig(logging_config)
logger = logging.getLogger()
logger.debug('this is a %s message', 'debug')
logger.info('this is a %s message', 'info')
logger.warn('this is a %s message', 'warn')
logger.error('this is a %s message', 'error')
3.使用源码
- 优点:对配置绝对的控制
- 缺点:对配置的更改需要对源码进行修改
import logging
logger = logging.getLogger()
handler = logging.StreamHandler()
formatter = logging.Formatter(
'[%(asctime)s] [%(name)-4s] [%(levelname)-4s] [%(message)s]')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
logger.debug('this is a %s message', 'debug')
logger.info('this is a %s message', 'info')
logger.warn('this is a %s message', 'warn')
logger.error('this is a %s message', 'error')
备注:设置log输出文件
logging.basicConfig(filename='xxx.log', filemode="w", level=logging.DEBUG)
http://www.cnblogs.com/makexu/

浙公网安备 33010602011771号