centos 默认都有这两个服务
logrotate 日志切割
rsyslog 日志管理(可进行日志收集(转存储))
logrotate:
logrotate 默认配置在/etc/logrotate.conf 在这里会配置有相关默认配置,
其中 include 包含子配置项(可以在include包含的目录中配置不同服务日志文件的不同logrotate规则)
如果配置的是daily 则将会启动/etc/cron.daily/logrotate 脚本(自动执行) (执行的时间是在/etc/anacrontab 中 一般不修改该文件)
linux 定时任务将会执行 但是由于不清楚logrotate 每天切割日志的具体时间,因此可以
自己配置,比如复制一份/etc/logrotate.conf 并修改include 参数目录下的配置
最后通过logrotated -dvf copylogrotate.conf 切割日志 (或者自己配置crontab 定时切割 )
在配置项中记得加 copytruncate 意思是先copy一份原始日志并重命名,然后清空原始日志
如果要切割uwsgi 的日志
因为不希望切割日志的时候重启uwsgi 服务(日志不会重启),因此在uwsgi配置项中添加
touch-logreopen = /root/logrr/toucforlogrotate
当touch-logreopen 指定的文件被touch 之后 时间戳发生变化 会让uwsgi 服务重新打开日志 并且不会重启服务
rsyslog:
使用rsyslog 进行日志收集
默认的配置在/etc/rsyslog.conf
例如:要将A 服务器 192.168.1.1 中uwsgi 服务的日志转存储到 B服务器 192.168.1.2的/root/log/from_a.log 中
在A中安装uwsgi-rsyslog 插件(uwsgi-syslog一起)
uwsgi 的配置项中添加:
plugins = python,rsyslog,syslog
req-logger = rsyslog:192.168.1.2:514,req-uwsgilog_from_a
logger = rsyslog:192.168.1.2:514,uwsgilog_from_a
在B服务器中的/etc/rsyslog.conf 添加一下(当然还有别的配置项要开启):
:programname,isequal,"req-uwsgilog_from_a" /root/log/from_a.log
:programname,isequal,"uwsgilog_from_a" /root/log/from_a.log #将req-uwsgilog_from_a和uwsgilog_from_a 都收集到from_a.log 文件中
重启B服务器 rsyslog: service rsyslog restart
重启A服务器的uwsgi
完成!