gpt4 book ai didi

python - 如何在 Python Logging 中设置源主机地址?

转载 作者:太空狗 更新时间:2023-10-30 00:17:59 25 4
gpt4 key购买 nike

有一个用 Python 编写的脚本,它通过 IPMI 解析来自多个服务器的传感器数据和事件。然后它将图形数据发送到一台服务器,并将错误日志发送到另一台服务器。日志服务器为Syslog-ng+Mysql

所以任务是按所有者存储日志,而不是按脚本宿主。

一些代码示例:

import logging
import logging.handlers

loggerCent = logging.getLogger(prodName + 'Remote')
ce = logging.handlers.SysLogHandler(address=('192.168.1.11', 514), facility='daemon')
formatter = logging.Formatter('%(name)s: %(levelname)s: %(message)s')
loggerCent.setLevel(logging.INFO)

loggerCent.addHandler(ce)

loggerCent.warning('TEST MSG')

所以我需要扩展代码,这样我就可以告诉 syslog-ng,该日志属于另一台主机。或者其他设计。

有什么想法吗?

更新:

所以看起来有使用LogAdapter的方法。但是如何使用它:

loggerCent = logging.getLogger(prodName + 'Remote')
ce = logging.handlers.SysLogHandler(address=('192.168.1.11', 514), facility='daemon')
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)-15s %(name)-5s %(levelname)-8s host: %(host)-15s %(message)s')
loggerCent.addHandler(ce)
loggerCent2 = logging.LoggerAdapter(loggerCent,
{'host': '123.231.231.123'})
loggerCent2.warning('TEST MSG')

通过 TcpDump 查找消息,我在 LoggerAdapter 中看不到任何关于主机的信息我做错了什么?

UPD2:

嗯,我没有找到将主机发送到 syslog-ng 的方法。虽然可以在链中发送第一个主机,但我真的找不到通过 Python Logging 发送它的方法。

无论如何,我在 syslog-ng 中创建了解析器: CSV Parser

parser ipmimon_log {
csv-parser(
columns("LEVEL", "UNIT", "MESSAGE")
flags(escape-double-char,strip-whitespace)
delimiters(";")
quote-pairs('""[](){}')
);
};

log {
source(s_net);
parser(ipmimon_log);
destination(d_mysql_ipmimon);
};

log {
source(s_net);
destination(d_mysql_norm);
flags(fallback);
};

然后我将日志发送到由 ; 分隔的 syslog-ng

最佳答案

编辑重写

您错过了将 Formatter 实际添加到 Handler 的关键步骤。尝试:

loggerCent = logging.getLogger(prodName + 'Remote')
loggerCent.setLevel(logging.DEBUG)
ce = logging.handlers.SysLogHandler(address=('192.168.1.11', 514), facility='daemon')
formatter = logging.Formatter('%(host)s;%(message)s')
ce.setFormatter(formatter)
loggerCent.addHandler(ce)
loggerCent2 = logging.LoggerAdapter(loggerCent, {'host': '123.231.231.123'})
loggerCent2.warning('TEST MSG')

请注意,您将不再运行 basicConfig,因此您将负责附加 Handler 并自行为根记录器设置日志级别(或您将收到“无处理程序”错误)。

关于python - 如何在 Python Logging 中设置源主机地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11974882/

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