如何用记录器打印当前文件名?

时间:2018-01-23 17:15:06

标签: python logging

我在Python中使用Logger模型。 我希望日志还打印​​从中调用记录器的文件名。 怎么可以这样做?

这是我目前的实施:

class Logger(object):
    def __init__(self, name):
        self.logger = logging.getLogger(name)
        self.logger.setLevel(logging.INFO)

        # create the logging file handler
        fh = logging.FileHandler("{}.log".format(name))

        formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
        fh.setFormatter(formatter)

        # Add handle to logger object
        self.logger.addHandler(fh)

    def get_logger(self):
        return self.logger

1 个答案:

答案 0 :(得分:1)

import logging

LOG = logging.getLogger(__name__)

if __name__ == "__main__":
    logging.basicConfig()

    LOG.error("Foo")
    LOG.error(__file__)

结果:

ERROR:__main__:Foo
ERROR:__main__:mylog.py

对于更复杂的事情,您可以使用记录器配置来设置一个日志消息格式化程序,该格式化程序使用filename的{​​{1}}属性在每个日志行中包含文件名而不使其成为日志消息正文。

E.g。

LogRecord

将导致日志行:

logging.basicConfig(format="%(filename)s: %(message)s")