应用程序中的日志
- 配置日志至少有以下三种方式:使用INI文件格式方式,使用字典或者JSON文件,使用源码
- 使用INI文件格式方式:
- 优点:使用logging.config.listen()函数监听socket,可以动态改变配置
- 缺点:通过源码控制日志配置较少
- 使用字典或者Json格式文件
- 优点:除了可以在运行时动态更新,在Python2.6之后,还可以通过json模块从其他文件中导入配置
- 缺点:很难通过源码控制日志配置
- 使用源码
- 优点:对配置绝对的控制
- 缺点:对配置的更改需要对源码进行修改
通过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)-12s %(levelname)-8s %(message)s
import logging
from logging.config import fileConfig
fileConfig('logging_config.ini')
logger = logging.getLogger()
logger.debug('often makes a very good meal of %s', 'visiting tourists')
通过字典进行配置的例子
import logging
from logging.config import dictConfig
logging_config = dict(
version = 1,
formatters = {
'f': {'format':
'%(asctime)s %(name)-12s %(levelname)-8s %(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('often makes a very good meal of %s', 'visiting tourists')
通过源码进行配置
import logging
logger = logging.getLogger()
handler = logging.StreamHandler()
formatter = logging.Formatter(
'%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
logger.debug('often makes a very good meal of %s', 'visiting tourists')
logger的参考文档