Python日志文件未正确写入日志消息,仅写入格式

时间:2020-06-14 23:38:10

标签: python logging

我整夜运行了Python脚本,发现日志文件只是我指定的消息格式的重复行,而不是实际的消息。在main模块中,我创建了记录器,如下所示:

from datetime import datetime
import logging
import os


def main():
    msg_format = '[%(asctime)s - %(levelname)s - %(filename)s: %(lineno)d (%(funcName)s)] %(message)s'
    logging.basicConfig(format=msg_format, level=logging.INFO)
    logger = logging.getLogger()
    logger.setLevel(level=logging.INFO)

    timestamp = datetime.now().strftime(format='%Y%m%d-%H%M')
    log_filename = '_'.join(['log', run_type, timestamp]) + '.txt'
    save_pathname = '_'.join([run_type, datetime.now().strftime(format='%Y%m%d')])
    save_path = os.path.join(save_path, save_pathname)

    if not os.path.exists(save_path):
        os.mkdir(path=save_path)

    log_file = os.path.join(save_path, log_filename)
    file_handler = logging.FileHandler(filename=log_file)
    file_handler.setLevel(level=logging.INFO)
    file_handler.setFormatter(fmt=msg_format)
    logger.addHandler(hdlr=file_handler)
    .
    .
    .

我在整个模块中都有logger.info(msg='something')条语句。当我打开日志文件时,所看到的只是:

[%(asctime)s - %(levelname)s - %(filename)s: %(lineno)d (%(funcName)s)] %(message)s
[%(asctime)s - %(levelname)s - %(filename)s: %(lineno)d (%(funcName)s)] %(message)s
[%(asctime)s - %(levelname)s - %(filename)s: %(lineno)d (%(funcName)s)] %(message)s
[%(asctime)s - %(levelname)s - %(filename)s: %(lineno)d (%(funcName)s)] %(message)s
.
.
.

记录初始化的哪一部分出错了?我应该在filemode='w'中显式设置logging.basicConfig吗?谢谢。

1 个答案:

答案 0 :(得分:1)

下面的作品。

尝试将Formatter对象设置为file_handler.setFormatter

file_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(filename)s: %(lineno)d (%(funcName)s) %(message)s'))