我在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
答案 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")