配置文件:/etc/rsyslog.conf, /etc/rsyslog.d/,对于不使用默认配置文件的,可在命令行使用-f 来指定rsyslog服务启动所要的配置文件。rsyslogd从 rsyslog.conf 的顶部到底部进行指令处理。因此配置文件中的语句顺序很重要。例如,如果停止处理某一条消息,则停止语句之后的所有语句都不会被读取应用。配置文件修改完成后,可执行以下命令测试配置文件:
rsyslogd -N1 -f file
(一)Rsyslog配置文件/etc/rsyslog.conf
配置文件由三部分组成:严格按照配置段位置添加配置
MODULES:定义了模块的选修,如接下来的使用mysql模块记录日志则需要在这里配置
GLOBAL DIRECTIVES:定义了全局的环境
RULES:定义了记录日志的设施以及等级等信息
可通过以下命令确认:grep “####” /etc/rsyslog.conf
1、日志定义格式
日志定义格式: facility.priority Target
facility: 设施,从功能或程序上对日志进行分类,并由专门的工具负责记录日志;
常用的facility:
lpr: 打印相关的日志
auth:认证相关的日志,pam产生的日志
user:用户相关的日志
cron:计划任务相关的日志
kern:内核相关的日志
mail:邮件相关的日志
mark:标记相关的日志,rsyslog服务内部的信息,时间标识
news:新闻相关的日志
uucp:文件copy相关的日志,unix to unix copy, unix主机之间相关的通讯
daemon:系统服务相关的日志
authpriv: 授权相关的日志,ssh,ftp等登录信息的验证信息
security:安全相关的日志
local0-local7:自定义相关的日志信息(自定义时可以使用通配符)
通配符:
*:所有
f1,f2,f3......:列表
!:取反
priority:指定日志级别,常用的日志级别,从上到下,级别从低到高,记录的信息越来越少:
debug: 调试
info: 消息
notice: 注意
warn,warning: 警告
err,error: 错误
crit: 严重级别
alert: 需要立即修改该的信息
emerg,panic: 内核崩溃,内核恐慌等严重的信息
none: 什么都不记录
通配符:
*:所有日志级别
none:没有任何级别,也就是不记录日志信息
Target:文件路径
可以使用的有:
/var/log/messages
用户:* 当前登录系统的所有用户
日志服务器:@SERAVER_IP
管道:| COMMAND
2、日志文件记录模板配置
#默认预留模板,如果需要自定义模板需要注释掉
# Use default timestamp format
#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
#----------------自定义模板----------------
#时间年月日 小时 分钟 秒格式 hostname 发出消息的应用程序的名称 消息内容
#定义日志记录模板
$template xsformat,"%$NOW% %TIMESTAMP:8:15% %HOSTNAME% %syslogtag% %msg%\n"
$ActionFileDefaultTemplate xsformat
3、日志文件存储配置logrotate
rsyslog负责写入日志, logrotate负责备份和删除旧日志, 以及更新日志文件;查看当前系统的logrotate,执行:rpm -qi logrotate
logrotate是一个日志管理程序,用来把旧的日志文件删除(备份),并创建新的日志文件,这个过程称为“转储”。我们可以根据日志的大小,或者根据其使用的天数来转储。logrotate 的执行由crond服务实现。在/etc/cron.daily目录中,有个文件logrotate,它实际上是个shell script,用来启动logrotate。logrotate程序每天由cron在指定的时间(/etc/crontab)启动。因此,使用ps是无法查看到logrotate的。如果它没有起来,就要查看一下crond服务有没有在运行。
4、logrotate 配置文件详解
# see “man logrotate” for details
# rotate log files weekly
#weekly –每周轮转一次
monthly -每月轮转一次
# keep 4 weeks worth of backlogs
rotate 12 –保留12个
# create new (empty) log files after rotating old ones
create –rotate后,创建一个新的空文件
# uncomment this if you want your log files compressed
#compress –默认是不压缩的
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d –这个目录下面配置文件生效
# no packages own wtmp — we’ll rotate them here
/var/log/wtmp { –定义/var/log/wtmp这个日志文件
monthly –每月轮转一次,取代了上面的全局设定的每周轮转一次
minsize 1M –定义日志必须要大于1M大小才会去轮转
create 0664 root utmp –新的日志文件的权限,属主,属主
rotate 1 –保留一个,取代了上面的全局设定的保留四个
}
/var/log/btmp {
missingok –如果日志丢失, 不报错
monthly
create 0600 root utmp
rotate 1
}
::
# sample logrotate configuration file
compress
# 全局设置, 压缩
/var/log/messages {
rotate 5 # 保留5份日志
weekly # 每周轮换一次
postrotate # 轮换之后重启syslogd服务
/usr/bin/killall -HUP syslogd
# rhel6中为:/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
# 可查看/etc/logrotate.d/下的配置文件
endscript
}
“/var/log/httpd/access.log” /var/log/httpd/error.log { # 指定多个文件, 如果有特殊字符需要用单引号
rotate 5
mail [email protected]
size 100k # 超过100k后切换日志, 并把老的日志发送邮件给[email protected]
sharedscripts # –表示切换时脚本只执行一次.
postrotate # 表示rotate后执行的脚本
/usr/bin/killall -HUP httpd
endscript
}
/var/log/news/* { # 少用通配符, 因会它会包括已经切换过的日志, 要用的话最好在*号后加上扩展名, 如*.log
monthly
rotate 2
olddir /var/log/news/old
missingok
postrotate
kill -HUP ‘cat /var/run/inn.pid‘
endscript # –表示脚本结束
nocompress
}
注意:
1、dateext //这个参数很重要!就是切割后的⽇志⽂件以当前⽇期为格式结尾,如xxx.log-20131216这样,如果注释掉,切割出来是按数字递增,即 xxx.log-1这种格式。
2、如果有 minsize 的参数,因此不见得每个⽉⼀定会执⾏⼀次,只有日志文件大于设置的minsize后才会执行转存。
参考原文链接:https://blog.csdn.net/ximenjianxue/article/details/120470353