我正在以这种方式使用 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/