【发布时间】:2020-07-25 18:01:01
【问题描述】:
我正在尝试创建自己的 Logger 类,然后在其他模块中重用它。 记录器类是: 我的包/log_class.py:
import logging
from logging.handlers import TimedRotatingFileHandler
class MyLogger(logging.Logger):
def __init__(
self, name = "MyLoggerName2222", log_file = None,
log_format = "%(asctime)s: Line %(lineno)s: %(levelname)s: %(message)s"):
self.formatter = logging.Formatter(log_format)
self.log_file = log_file
super().__init__(name=name)
# Adding handlers
self.addHandler(self.get_stream_handler())
if log_file:
self.addHandler(self.get_file_handler(log_file))
self.propagate = True
def get_stream_handler(self):
""" Returns stream handler
"""
# Initialize stream hamdler
streamhandler = logging.StreamHandler()
# Logging level
streamhandler.setLevel(logging.DEBUG)
# Formatter
streamhandler.setFormatter(self.formatter)
return streamhandler
def get_file_handler(self, log_file):
""" Returns file handler
"""
# Initialize stream hamdler
filehandler = TimedRotatingFileHandler(filename=log_file,
when="midnight",
backupCount=5)
# Logging level
filehandler.setLevel(logging.INFO)
# Formatter
filehandler.setFormatter(self.formatter)
return filehandler
模块是: 我的包/main.py
from log_class import MyLogger
import logging
logging.setLoggerClass(MyLogger)
logger = logging.getLogger("MyLogger", log_file="Test.log")
if __name__ == "__main__":
logger.debug("Debug message")
logger.info("Info message")
我有
TypeError: getLogger() 得到了一个意外的关键字参数“log_file” 当我从 getLogger 中删除 log_file="Test.log" 时,没有错误,但是没有显示日志消息。既不在文件中,也不在控制台中。 我到底做错了什么? 如何修改代码以便能够提供 log_file ? 提前致谢。
【问题讨论】:
-
我能够在控制台中获取日志消息。但是仍然不清楚在这个构造中如何提供自定义日志文件名......
标签: python-3.x logging