配置 Rsyslog

  1. /etc/rsyslog.conf 增加如下配置
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514

$template remote-incoming-logs,"/data/log/%$YEAR%/%$MONTH%/%$DAY%/%programname%/%$hour%"
*.* ?remote-incoming-logs
  1. 重启 rsyslog 服务 # systemctl restart rsyslog

  2. 确认 /data/log 目录及权限 # mkdir /data/log && chmod 777 /data/log

配置 Python 上传日志

  1. 测试日志传到远程 rsyslog 服务器的 python demo
import logging
import logging.handlers

# 日志对象的名称
my_logger = logging.getLogger('django_log')
my_logger.setLevel(logging.INFO)
# 日志格式
formatter = logging.Formatter("%(processName)s %(name)s %(message)s")
handler = logging.handlers.SysLogHandler(address=('10.20.2.12', 514))
handler.setFormatter(formatter)
my_logger.addHandler(handler)
my_logger.info("test logging")
  1. 在 rsyslog 服务器的对应目录下确认按小时生成的日志文件(根据上面 rsyslog 的配置自动生成)
# ls /data/log/2022/06/03/django_log
16
  1. 确认测试的日志内容
# cat /data/log/2022/06/03/django_log/16
Jun  3 16:57:37 MainProcess django_log test logging