【发布时间】:2017-03-02 11:24:38
【问题描述】:
我的项目由 main.py 主脚本和模块 aaa.py 组成。我已经通过使用 main.py 中的日志记录包成功地设置了一个日志过程,还指定了一个日志文件名。
让aaa.py中包含的函数写入同一个日志文件的最干净/“正确”的方法是什么?
【问题讨论】:
标签: python python-3.x logging module
我的项目由 main.py 主脚本和模块 aaa.py 组成。我已经通过使用 main.py 中的日志记录包成功地设置了一个日志过程,还指定了一个日志文件名。
让aaa.py中包含的函数写入同一个日志文件的最干净/“正确”的方法是什么?
【问题讨论】:
标签: python python-3.x logging module
如果您一次只调用一个 python 脚本 (main.py)
然后您只需定义一次日志记录配置;例如:logging.basicConfig(filename=logfilepath, format='%(levelname)s:%(message)s')
并在模块中的任意位置调用它,例如logging.<level>("log_string")
【讨论】:
通过定义使用 main.py 中的根记录器
logger = logging.getLogger()
fh = logging.FileHandler("path/to/file")
logger.addHandler(fh)
然后通过定义在aaa.py中使用模块记录器
logger = logging.getLogger(__name__)
记录器不必与模块同名,但这是常见的做法。子模块记录器将自动冒泡到根记录器并发送到任何处理程序。
引用docs
子记录器将消息传播到与其祖先记录器关联的处理程序。因此,没有必要为应用程序使用的所有记录器定义和配置处理程序。为顶级记录器配置处理程序并根据需要创建子记录器就足够了。
【讨论】: