我刚刚开始使用Python,我正在努力使用Logger。我有两个python文件:app.py和liba.py.我想在app.py上设置日志记录并将其用于liba.py(以及其他库)。您有什么好主意或者您可以分享任何参考资料吗?
文件结构
entry.py
lib/liba.py
app.py
#! /usr/bin/env python3
import logging
logger = logging.getLogger(__name__)
from lib import liba
handler = logging.FileHandler('/tmp/app.log', 'a+')
logger.addHandler(handler)
logger.warn('sample')
liba.out()
LIB / liba.py
#! /usr/bin/env python3
import logging
logger = logging.getLogger(__name__)
def out():
logger.warn('liba')
运行python
$ python3 app.py
liba
app.py输出日志到日志文件。 liba.py不会将日志输出到文件中。我想将日志保存在同一个文件中。
答案 0 :(得分:0)
这样做:
app.py
#! /usr/bin/env python3
import logging
logger = logging.getLogger()
handler = logging.FileHandler('/tmp/app.log', 'a+')
logger.addHandler(handler)
logger.warn('sample')
from lib import liba
liba.out()
LIB / liba.py
#! /usr/bin/env python3
import logging
def out():
logging.warn('liba')
除非要配置只在主脚本中执行的处理程序,否则不需要实例化日志记录。然后,所有日志记录都将转到根记录器,这是在没有特定名称logging.getLogger()
进行实例化时获得的。我喜欢这样使用它,因为您不需要在所有模块中匹配名称以使其工作。在您的模块中,您只需使用logging.warn('blabla')
发送日志消息。您还需要确保在调用logging.warn之前定义所有处理程序,否则一些默认处理程序将取代它。