需求:
分布式运行项目时,要日志记录中跟踪源IP地址与运行主机,以便更好的通过日志快速定位分析问题。
不借助django日志场景:
#
可以通过添加自定义日志过滤器和格式化程序来实现这一点,该过滤器和格式化程序将主机名放入日志消息中
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!')
借助django日志场景:
1、自定义中间件
# 自定义中间件
import threading
import logging
import socket
try:
from django.utils.deprecation import MiddlewareMixi

本文介绍了如何在Python和Django应用中添加自定义日志过滤器和中间件,以在日志中记录主机名和客户端IP地址,方便问题定位。非Django场景下,通过`HostnameFilter`类实现主机名记录;在Django环境中,创建了`RequestLogMiddleware`中间件获取并记录请求信息,并在`settings.py`中配置日志设置,确保在日志中包含这些关键信息。
最低0.47元/天 解锁文章
945

被折叠的 条评论
为什么被折叠?



