gpt4 book ai didi

python - 在日志记录配置文件中使用外部模块

转载 作者:行者123 更新时间:2023-11-28 19:20:25 30 4
gpt4 key购买 nike

我已经在 python2.7 中使用 logstash 为日志记录模块设置了以下配置文件

[loggers]
keys=root,test

[handlers]
keys=remote

[formatters]
keys=standard

[logger_root]
level=NOTSET
handlers=remote

[logger_test]
level=DEBUG
handlers=remote
propagate=0
qualname=test

[handler_remote]
class=logstash.LogstashHandler
level=NOTSET
formatter=standard
args=(os.environ['hostname'], int(os.environ['port']))

[formatter_standard]
format=%(levelname)s - %(message)s
datefmt=
class=logging.Formatter

不幸的是,这已经是我为这个例子制作的文件所能达到的最短的了。我使用一个名为 logstash 的模块,它将我的日志消息发送出去以供远程查看。如果我尝试使用 logging.config.fileConfig 加载此配置,我会收到一个找不到 logstash 的错误。我所要做的就是在加载之前导入 logstash,问题就会消失。

不过,如果我能将该导入语句放入配置文件本身就好了,这样文件的加载程序就不需要知道或关心了。它对于像 urlparse 这样的东西也很好,所以我不需要那么多环境变量。

有办法吗?

最佳答案

嗯,这是一个很老的问题,但如果有人仍在寻找答案,我会发布这个(适用于 python2 和 python3)。

简答

根据 the documentation ,你可以这样写:

class=ext://logstash.LogstashHandler

我不确定是否有必要在解析日志配置文件的脚本中导入logstash(因为logstash不属于标准库)。

替代答案

但我必须补充一点,这种机制在旧式日志记录配置文件中对我来说并不总是很有效...所以如果这不起作用,我建议将您的配置文件转换为 yaml 文件,然后在其中使用这个非常相同的功能:

handlers:
remote:
class: ext://logstash.LogstashHandler
level: NOTSET
formatter: standard

对于其他参数,我不知道如何编写它们,因为我找不到关于 logstash 的文档。如果它们是位置参数,这应该没问题(虽然我不确定在日志记录配置文件中使用 int):

        args: [os.environ['hostname'], int(os.environ['port'])]

但如果它们是关键字参数,则应另一种方式编写:

        kw1: os.environ['hostname']
kw2: int(os.environ['port'])

关于python - 在日志记录配置文件中使用外部模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26496616/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com