【问题标题】:Passing logger as an argument to functions and get the function name in log file将记录器作为参数传递给函数并在日志文件中获取函数名
【发布时间】:2017-06-09 17:23:17
【问题描述】:

我正在使用日志记录包为我的应用程序创建一个日志文件。在 ma​​in 函数中,我创建了记录器、处理程序和格式化程序,并将记录级别设置如下:

try:
    os.remove('xxx.log')
except WindowsError:
    pass
LOG_FILENAME = 'xxx.log'
logger = logging.getLogger(__name__)
logger.setLevel(20)
ch = logging.FileHandler(LOG_FILENAME)
ch.setLevel(20)
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
ch.setFormatter(formatter)
logger.addHandler(ch)

logger.info("info message")

然后,我调用不同的函数,我也想拥有记录器。所以我将 logger 作为参数传递给该函数,然后使用 logger.info 在该函数中记录信息。问题是我需要在日志文件中列出函数的名称,所以我编码如下:

test(a, b, c, d, e, f, g, logger)
def test test(a, b, c, d, e, f, g, logger):
    logger = logging.getLogger(__name__)
    logger.info("test ....")

这里有什么问题?如何解决问题?任何改进我的编码的建议也很感激。

【问题讨论】:

    标签: python logging


    【解决方案1】:

    格式化器需要改成如下:

    logging.Formatter("%(asctime)s - %(module)s - %(levelname)s - %(message)s")
    

    所以 %(name)s,%(module)s 需要根据文档来实现。

    【讨论】:

      猜你喜欢
      • 2019-04-02
      • 1970-01-01
      • 2021-04-13
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多