Python 日志记录如何跟踪日志中的主机名?

标签 python logging python-logging

我正在以这种方式使用 Python 日志记录:

logger = logging.getLogger("my_logger")
logger.info("Some text.")

我有一堆物联网设备都在运行(制作日志)。他们将日志数据流式传输到数据库。为了区分来源,我需要包括源 IP 地址。

有没有办法使用日志记录获取主机名? LogRecords 中是否跟踪/可跟踪 IP 地址或主机名?

一般来说,将主机名添加到 LogRecord 的最佳方法是什么?

最佳答案

您可以通过添加将主机名放入日志消息中的自定义日志过滤器和格式化程序来做到这一点。

import logging, platform

class HostnameFilter(logging.Filter):
    hostname = platform.node()

    def filter(self, record):
        record.hostname = HostnameFilter.hostname
        return True

handler = logging.StreamHandler()
handler.addFilter(HostnameFilter())
handler.setFormatter(logging.Formatter('%(asctime)s %(hostname)s: %(message)s', datefmt='%b %d %H:%M:%S'))

logger = logging.getLogger()
logger.addHandler(handler)
logger.setLevel(logging.INFO)

logger.info('Hello, world!')

关于Python 日志记录如何跟踪日志中的主机名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55584115/

相关文章:

python - 有没有办法让 Eclipse+PyDev 像 Python 的 help() 那样显示函数文档?

python - MongoDB插入引发重复键错误

python - MySQL:从查询中获取列名或别名

python - 如何获取当前的 python 日志记录配置?

python-3.x - 如何使用 python 日志记录将字节记录到一个处理程序,并将 unicode 记录到另一个处理程序?

python - 将纪元时间转换为日期时间

android - 使用 Facebook SDK 4.1.2 创建登录按钮时出现问题

python - 函数调用无延迟

ruby-on-rails - 如何使用rails在rails中实现日志记录?

python - "()"在 python 日志配置中做什么