python - 向记录器添加特定名称
问题描述
我正在设置一个 python 记录器,但我在使用特定名称时遇到了问题,具体取决于它调用记录器的文件。
这是我要登录的文件:
2020-05-06 13:51:31,032 - myModule - WARNING - warn message
代替2020-05-06 13:51:31,032 - sLogger - WARNING - warn message
这就是我所拥有的
import logging, logging.config
# set up logging
logging.config.fileConfig("config.ini")
logger = logging.getLogger('sLogger')
# log something
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')
和我的config.ini
[loggers]
keys=root,sLogger
[handlers]
keys=consoleHandler,fileHandler
[formatters]
keys=fileFormatter,consoleFormatter
[logger_root]
level=DEBUG
handlers=consoleHandler
[logger_sLogger]
level=DEBUG
handlers=consoleHandler,fileHandler
qualname=sLogger
propagate=0
[handler_consoleHandler]
class=StreamHandler
level=WARNING
formatter=consoleFormatter
args=(sys.stdout,)
[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=fileFormatter
args=('logfile.log',)
[formatter_fileFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=
[formatter_consoleFormatter]
format=%(levelname)s - %(message)s
datefmt=
我见过类似logger = logging.getLogger(__name__)
的代码,但这样它不会调用slogger
.
我怎么能同时拥有这两种东西?
解决方案
将格式中的名称替换为文件名。
format=%(asctime)s - %(filename)s - %(levelname)s - %(message)s
您可以使用python 以格式提供的 LogRecord对象的任何属性。
推荐阅读
- python - 如何打印数据集中的最大值和最小值以及 Python 3 中的相关日期?
- python - 如何在一个查询中获取所有对象子对象?
- linkedin - LinkedIn从人名中查找人ID
- r - 在 "%Y-%m-%d %H" 中以 "%Y-%m-%d %H:%M:%S" 的形式转换日期时间
- node.js - websocket每秒创建新连接
- python - 忽略具有计算能力 3.0 的可见 gpu 设备。所需的最低 Cuda 能力为 3.5
- elixir - Distillery 未替换 systemd 版本中的变量
- antlr4 - ANTLR4:规则“规则”包含一个闭包,其中至少有一个可以匹配空字符串的替代方案
- excel - 调用退出函数时出错 | 递归的
- sql - Hiveql - 如何在字符串中只保留数字和空格