近来,因为任务的需要想让系统生成的日志文件放到硬盘的其他目录(默认是 /var/log)下,就想修改一下 syslog 的配置文件 /var/log/syslog.conf,但是怎么也找不到该文件。后来才知道 ubuntu 的配置文件为/etc/rsyslog.conf,不再是/etc/syslog.conf。 rsyslog 是一个 syslogd 的多线程增强版。现在Fedora和Ubuntu, rhel6默认的日志系统都是rsyslog了。rsyslog负责写入日志, logrotate负责备份和删除旧日志, 以及更新日志文件。本篇将采用几部分来介绍。
一.rsyslog服务
1.安装rsyslog
2.rsyslog配置
3.rsyslog.conf
二.rsyslog服务
1.logrotate 配置
2.使用include 选项读取其他配置文件
一.
1. apt-get install rsyslog //安装rsyslog
重新启动rsyslog服务: sudo service rsyslog restart
root@chengxiaoke-X550JD:/home/chengxiaoke# sudo service rsyslog restart
rsyslog stop/waiting
rsyslog start/running, process 19138
查看当前rsyslog服务的状态: sudo service rsyslog status
root@chengxiaoke-X550JD:/home/chengxiaoke# sudo service rsyslog status
rsyslog start/running, process 19138
2.
rsyslog.conf 是 rsyslogd 的主配置文件,rsyslogd 是 *nix 系统上用来记录系统日志的 。一开始有点搞不懂 ubuntu 中配置文件 /etc/rsyslog.d/50-default.conf 和 /etc/rsyslog.conf 的关系。后来才知道原因:在/etc/rsyslog.conf中有一行: $IncludeConfig /etc/rsyslog.d/*.conf ;把 /etc/rsyslog.d/目录下的配置文件都包含进来,即利用include 把分散到几个的配置信息集中到一个主配置文件当中,就像已经在/etc/rsyslog.conf中一样;而默认的日志规则(Default rules for rsyslog)放在 50-default.conf 文件中,故要修改rsyslog的日志规则可在50-default.conf中直接修改,也可以在rsyslog.conf中添加(添加后和50--.conf里的规则共同起作用)。
举例: sudo service cron restart
3.rsyslog.conf
在rsyslog.conf中有两部分:MODULES 和 GLOBAL DIRECTIVES ,分别用来加载模块和定义日志格式默认模板。在此重点介绍被include 在rsyslog.conf里的 RULES,即日志规则。
规则:
facility.level action
日志设备(类型).(连接符号)日志级别 日志处理方式(action)
facility 默认为LOG_USER
action 字段可以是文件名、tty(如 /dev/console)、以 @ 为前缀的远程机器、以逗号分隔的用户列表,或是 * 以表明向所有登录用户发送消息。最常见的操作是一个简单的文件名。
举例:
local2.info -/var/log/chengxiaoke/log/local2_info.log //其中 action前的 “-” 表示 满足一定数量后再输出
local3.info -/var/log/chengxiaoke/log/local3_info.log //配置完后,重启rsyslog服务,执行程序,会在该路径下找到local_infio.log文件
user.err -/var/log/chengxiaoke/log/err.log
*.info;mail.none;authpriv.none;cron.none /var/log/messages 记录所有日志类型的info级别以及大于info级别的信息到/var/log/messages,但是mail邮件信息,authpriv验证方面的信息和cron时间任务相关的信息除外