[英]Logger instance doesn't return any log records
这是一个模块包含一个Logger并且它被导入另一个模块的场景。 但是,当调用 main.py时,不会将 LogRecords 写入日志。 为了调用日志可以修改什么?
#objects.py
import logging
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
formatter = logging.Formatter()
log_handler = logging.FileHandler('log_objects.log')
log_handler.setFormatter(formatter)
logger.addHandler(log_handler)
class Person:
def __init__(self):
pass
logger.info(f"A new {self.__class__.__name__} is created.")
#main.py
from my_objects import objects
if __name__ == '__main__':
objects.Person()
-dir/
-my_objects/
__init__.py
log_objects.log
objects.py
-main.py
我期待在日志中看到这一点: "A new Person is created."
执行后,日志中不显示任何内容
由于您没有为log_objects.log
指定路径名,因此将在运行 Python 解释器的目录下创建该文件,在这种情况下,该目录是main.py
所在的位置,而不是在my_objects
子目录下。
如果希望在log_objects.log
目录下创建my_objects
,可以指定相对路径:
log_handler = logging.FileHandler('my_objects/log_objects.log')
它按预期工作。 'log_objects.log' 是使用有效行创建的。 您是否希望文本也打印在控制台上? 添加特定文件处理程序后,将覆盖默认处理程序。
(或)您可能会错过 python 中的模块加载方式
$ python main.py
$ tree .
.
├── log_objects.log
├── main.py
└── my_objects
├── __init__.py
└── objects.py
$ cat log_objects.log
A new Person is created.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.