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

时间:2019-04-09 02:08:20

标签: python logging python-logging

我正在以这种方式使用Python登录:

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

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

是否有使用日志记录获取主机名的方法?在LogRecords中是否可以跟踪IP地址或主机名?

通常,将主机名添加到LogRecord的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

您可以通过添加一个自定义格式化程序来实现此目的,该格式化程序会将主机名放在日志消息中。

logging.Formatter('%(asctime)s %(hostname)s APP: %(message)s', datefmt='%b %d %H:%M:%S')

答案 1 :(得分:1)

一个更简单的解决方案是用主机名预填充格式行。例如:

logging.basicConfig(
   #... your logging configuration,
   format="%(asctime)s {} %(message)s".format(socket.gethostname())
)

将生成格式行

"%(asctime)s some-hostname %(message)s"

缺点是,如果主机名更改,则需要重新启动服务/应用程序。对于大多数应用程序而言,这通常不是问题,尤其是在docker / k8s上运行时

答案 2 :(得分:0)

他们正在添加自定义过滤器。那就是你要做的。