在这种情况下,一个模块包含一个 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."
执行后,日志中什么也没显示
答案 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