Django日志中要包括主机名、客户端IP

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

需求:

    分布式运行项目时,要日志记录中跟踪源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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值