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号
浙公网安备 33010602011771号