淘先锋技术网

首页 1 2 3 4 5 6 7
应用程序中的日志
  1. 配置日志至少有以下三种方式:使用INI文件格式方式,使用字典或者JSON文件,使用源码
  2. 使用INI文件格式方式:
    • 优点:使用logging.config.listen()函数监听socket,可以动态改变配置
    • 缺点:通过源码控制日志配置较少
  3. 使用字典或者Json格式文件
    • 优点:除了可以在运行时动态更新,在Python2.6之后,还可以通过json模块从其他文件中导入配置
    • 缺点:很难通过源码控制日志配置
  4. 使用源码
    • 优点:对配置绝对的控制
    • 缺点:对配置的更改需要对源码进行修改
通过INI文件进行配置的例子
#假设文件名为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)-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的参考文档