配置 Rsyslog
- /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
-
重启 rsyslog 服务
# systemctl restart rsyslog
-
确认 /data/log 目录及权限
# mkdir /data/log && chmod 777 /data/log
配置 Python 上传日志
- 测试日志传到远程 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")
- 在 rsyslog 服务器的对应目录下确认按小时生成的日志文件(根据上面 rsyslog 的配置自动生成)
# ls /data/log/2022/06/03/django_log
16
- 确认测试的日志内容
# cat /data/log/2022/06/03/django_log/16
Jun 3 16:57:37 MainProcess django_log test logging