我在项目中创建的记录器有问题。 我正在使用 python 3.11.9
我需要从更高的 INFO 级别写入控制台消息,并从 DEBUG 级别写入 LogFile。 脚本运行正确,但控制台和日志输出为空。
我在 Stack 上查找了许多其他问题,并尝试了一些方法,例如从 getLogger 中删除 name 并检查我的语法,但没有任何效果。
有人知道哪里可能有问题吗?
这是我的 log_handler():
def log_handler():
log_format = logging.Formatter('%(levelname)s - %(message)s')
_logger = logging.getLogger()
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
console_handler.setFormatter(log_format)
_logger.addHandler(console_handler)
log_dir = Path(Path('.').absolute(), 'logfile.txt')
file_handler = logging.FileHandler(log_dir)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(log_format)
_logger.addHandler(file_handler)
return _logger
class myApp(myAppExceptions):
def __init__(self):
self.logger = log_handler()
self.logger.info('message')
您的代码的问题是正在使用根记录器(logging.getLogger()),但其默认日志级别为 WARNING,这意味着级别低于 WARNING 的消息(例如 INFO 或 DEBUG)不会被显示。
为了确保显示所有日志消息,您需要将根记录器的日志级别设置为DEBUG。这是更新后的代码:
def log_handler():
log_format = logging.Formatter('%(levelname)s - %(message)s')
_logger = logging.getLogger()
_logget.setLevel(logging.DEBUG)
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
console_handler.setFormatter(log_format)
_logger.addHandler(console_handler)
log_dir = Path(Path('.').absolute(), 'logfile.txt')
file_handler = logging.FileHandler(log_dir)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(log_format)
_logger.addHandler(file_handler)
return _logger
class myApp(myAppExceptions):
def __init__(self):
self.logger = log_handler()
self.logger.info('message')