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

时间:2019-10-27 03:30:07

标签: python python-3.x logging

在这种情况下,一个模块包含一个 Logger 并将其导入到另一个模块中。但是,当调用 main.py 时,不会将LogRecord写入日志。可以修改什么才能调用日志?

#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."

执行后,日志中什么也没显示

2 个答案:

答案 0 :(得分:1)

由于您没有为log_objects.log指定路径名,因此将在运行Python解释器的目录下创建文件,在本例中,该目录就是main.py所在的目录,而不是在my_objects子目录下。

如果要在log_objects.log目录下创建my_objects,则可以指定相对路径:

log_handler = logging.FileHandler('my_objects/log_objects.log')

答案 1 :(得分:0)

它按预期工作。使用有效的行创建了'log_objects.log'。 您是否希望文本也会在控制台上打印?添加特定的文件处理程序后,默认处理程序将被覆盖。

(或)您可能会错过python中模块加载的发生方式

$null