Python日志不包括submodu

2024-10-01 00:14:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pythonmain,它使用不同的子模块。 结构如下:

root:.
│   main.py
│
└───MyModule
        file1.py
        file2.py
        special.py

MyModule输出一些重要的日志(每个文件不包含logger=日志记录.getLogger(名称))。然而—特殊.py“日志需要单独存储。你知道吗

我尝试:

MyModuleHandler = logging.handlers.RotatingFileHandler('MyModule.log', maxBytes= 5000000, backupCount=5)
MyModuleHandler.setFormatter(formatter)
MyModuleHandler.setLevel(logging.DEBUG)


specialHandler = logging.handlers.RotatingFileHandler('special.log', maxBytes= 5000000, backupCount=5)
specialHandler.setFormatter(formatter)
specialHandler.setLevel(logging.INFO)

console = logging.StreamHandler()
console.setLevel(logging.INFO)
console.setFormatter(formatter)

logging.getLogger('MyModule.special').setLevel(logging.DEBUG)
logging.getLogger('MyModule.special').addHandler(specialHandler)

logging.getLogger('MyModule').addHandler(console)
logging.getLogger('MyModule').setLevel(logging.DEBUG)
logging.getLogger('MyModule').addHandler(MyModuleHandler)

伙计们,我做错什么了?你知道吗


Tags: pydebugformatterlogginghandlersconsolemymodulespecial
1条回答
网友
1楼 · 发布于 2024-10-01 00:14:21

好的。 这真是太傻了 我只需要在指定的记录器中设置propagate字段。你知道吗

正确代码应为:

MyModuleHandler = logging.handlers.RotatingFileHandler('MyModule.log', maxBytes= 5000000, backupCount=5)
MyModuleHandler.setFormatter(formatter)
MyModuleHandler.setLevel(logging.DEBUG)


specialHandler = logging.handlers.RotatingFileHandler('special.log', maxBytes= 5000000, backupCount=5)
specialHandler.setFormatter(formatter)
specialHandler.setLevel(logging.INFO)

console = logging.StreamHandler()
console.setLevel(logging.INFO)
console.setFormatter(formatter)

logging.getLogger('MyModule.special').setLevel(logging.DEBUG)
logging.getLogger('MyModule.special').addHandler(specialHandler)
logging.getLogger('MyModule.special').propagate = False

logging.getLogger('MyModule').addHandler(console)
logging.getLogger('MyModule').setLevel(logging.DEBUG)
logging.getLogger('MyModule').addHandler(MyModuleHandler)

相关问题 更多 >