繁体   English   中英

记录器实例不返回任何日志记录

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM