在记录器上设置日志格式(无需 basicConfig)

问题描述 投票:0回答:2

我在

logger
对象上声明并设置日志级别,如下所示:

logger = logging.getLogger(__name__)
loglevel = 'DEBUG' # actually taken from a config in my code
logger.setLevel(logging.getLevelName(loglevel))

这种情况下如何设置日志格式?我尝试了

logger.setFormat
logger.setFormatter
,它们会抛出属性错误。

我读到的每本指南都谈到

logging.basicConfig(format=FORMAT)
,但我使用的是
logger
,而不是直接打电话
logging

python-3.x logging
2个回答
5
投票

文档中有一个示例,这里。 创建一个处理程序,设置格式化程序,然后将处理程序添加到记录器:

import logging
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
console = logging.StreamHandler()
console.setFormatter(logging.Formatter('%(name)-12s: %(message)s'))
logger.addHandler(console)
logger.debug('Hi')

打印

__main__    : Hi

0
投票

您可以为

basicConfig
实例设置
logger
而不是
logging
模块,如下所示:

logging.basicConfig(format='%(name)s: [%(levelname)s]: %(message)s')
logger = logging.getLogger(__name__)

这使您能够设置记录器实例

logger
并且您可以通过以下方式使用
logger
logger.<instance-function-of-the-logger-object>
。使用这种方法您将不需要使用
logging.<module-level-funtion>

© www.soinside.com 2019 - 2024. All rights reserved.