如何在 Python 中将调用类名发送到记录器类 >

Met*_*ata 4 python

我是 Python 新手,尝试在我的代码中实现记录器。我创建了一个 python 文件:setup_logger.py

import logging

CLASS_NAME = ''

# Create and configure logger
LOG_FORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
logging.basicConfig(filename='/Users/bobby/Desktop/lumberjack.log', level=logging.DEBUG, format=LOG_FORMAT)
logger = logging.getLogger()
Run Code Online (Sandbox Code Playgroud)

我在另一个 python 文件中使用此记录器配置:GetLogger.py 如下

from LoggerLevels.setup_logger import logger

if __name__ == '__main__':
    logger.error('This is a basic log error message')
    logger.info('This is a warning message')
Run Code Online (Sandbox Code Playgroud)

日志在文件中打印为:

2020-06-17 14:54:47,161 - root - ERROR - This is a basic log error message
2020-06-17 14:54:47,161 - root - INFO - This is a warning message
Run Code Online (Sandbox Code Playgroud)

但我看到类名打印为root. 我知道这是由于文件中的设置造成的setup_logger.py。无论如何,我可以将正在记录消息的当前类名发送到我的文件中吗?例如:我正在使用GetLogger.py文件中的记录器对象。无论如何我可以将消息记录为

2020-06-17 14:54:47,161 - GetLogger - ERROR - This is a basic log error message
2020-06-17 14:54:47,161 - GetLogger - INFO - This is a warning message
Run Code Online (Sandbox Code Playgroud)

谁能让我知道我怎样才能实现这一目标?

san*_*ser 5

使用:

LOG_FORMAT = '%(asctime)s - %(module)s - %(levelname)s - %(message)s'
Run Code Online (Sandbox Code Playgroud)

如果这对您不起作用,您可以尝试使用setLoggerClass%(filename)s方法创建自定义类。