【问题标题】:How to initiate python logging instance once如何启动python日志实例一次
【发布时间】:2019-11-08 14:17:53
【问题描述】:

我有一个带有多个脚本.py 的 python 3 项目。

main.pyscript1.pyscript2.pyscript3.pylogger.pymain.py 包括 3 个脚本/模块。

我创建了一个从日志模块继承的记录器类。目前,在每个 .py 模块中,我必须实例化记录器类并单独设置 loglevel/loggername/log 路径。

有没有办法在 main.py 中设置日志级别/loggername(或不需要)/日志路径,以便可以在此项目中传递相同的级别,而无需在每个脚本中单独设置它们?

【问题讨论】:

  • 也许会显示您的记录器类,当然您可以在记录器类 init 中设置记录级别、名称和路径,这样您调用它的任何其他脚本都会得到相同的设置

标签: python-3.x logging


【解决方案1】:

当然有办法。不仅如此,它还是最佳实践方式

python 日志是按记录器名称分层的,因此名为“abc.def”的日志被视为名为“abc”的记录器的子级。所有记录器都有一个名为“root”记录器的祖先。

因此,如果您想要(通常您想要)集中式日志配置,您应该配置根记录器logging.getLogger()

如果您愿意,可以使用 logging.basicConfig 辅助函数轻松完成。

那么你所有的其他记录器都会使用这个配置。

如果您想要对某些日志进行特定配置,您可以选择性地配置它们,或者使用名称层次结构通过“家庭根”进行配置。

编辑:对于多个日志配置,您还可以拥有一个集中的 logging.conf 文件,如 here 解释的那样。

【讨论】:

  • 感谢 Lior,“如果您想要对某些日志进行特定配置,您可以选择性地配置它们,或者使用名称层次结构通过“家庭根”进行配置。”如何在 main.py 中为其他脚本指定 logLevel/logpath 等???
  • 没有路径。名字。 log1 = logging.getLogger('log_name')。 log1.set....
  • 还有 logging.conf 文件。请参阅我的答案中的编辑。
猜你喜欢
  • 2022-08-04
  • 2020-11-07
  • 1970-01-01
  • 2011-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多