Linux日志系统分析:rsyslog、syslog和klog
//将info或更高级别的消息送到/var/log/messages,除了mail以外。
//其中*是通配符,代表任何设备;none表示不对任何级别的信息进行记录。
*.info;mail.none;authpriv.none /var/log/messages
//将authpirv设备的任何级别的信息记录到/var/log/secure文件中,这主要是一些和认、权限使用相关的信息。
authpriv.* /var/log/secure
//将mail设备中的任何级别的信息记录到/var/log/maillog文件中,这主要是和电子邮件相关的信息。
mail.* /var/log/maillog
//将cron设备中的任何级别的信息记录到/var/log/cron文件中,这主要是和系统中定期执行的任务相关的信息。
cron.* /var/log/cron
//将任何设备的emerg级别的信息发送给所有正在系统上的用户。
*.emerg *
//将uucp和news设备的crit级别的信息记录到/var/log/spooler文件中。
uucp,news.crit /var/log/spooler
//将和系统启动相关的信息记录到/var/log/boot.log文件中。
local7.* /var/log/boot.log
---------------------------------------
基本语法格式
类型.级别[;类型.级别] 动作
news.=crit /var/log/news.crit
‘=’特殊符号,如果存在说明只有本severity的消息才进行处理,如果不存在则处理本severity及其以下级别的消息
‘;'表示&&、'!'表示取反、’*'表示所有
1 # log all kernel messages to the console. 2 # logging much else clutters up the screen. 3 #kern.* /dev/console 4 5 # log anything (except mail) of level info or higher. 6 # don't log private authentication messages! 7 *.info;mail.none;authpriv.none;cron.none /var/log/messages 8 9 # the authpriv file has restricted access. 10 authpriv.* /var/log/secure 11 12 # log all the mail messages in one place. 13 mail.* -/var/log/maillog ## '-'分号代表是异步写入,非实时写入 14 15 16 # log cron stuff 17 cron.* /var/log/cron 18 19 # everybody gets emergency messages 20 *.emerg * 21 22 # save news errors of level crit and higher in a special file. 23 uucp,news.crit /var/log/spooler 24 25 # save boot messages also to boot.log 26 local7.* /var/log/boot.log
动作:表示信息发送的目的地
可以是日记文件(绝对路径),如果文件名前面加上减号表示不将日志信息同步刷新到磁盘上(使用写入缓存),这样可以提高日志写入性能,但是增加了系统崩溃后丢失日志的风险
可以是远程主机(@host,host可以是ip或域名,默认在/etc/hosts文件下loghost这个别名已经指定给本机)
可以是指定用户(user1,user2),如果指定用户已登入,那么他们将收到消息
客户端有两种方式开发:
完全基于协议从底层开发,也就是直接写unix域套接字或者向udp514发送定制消息
基于库函数供上层应用使用
==================================================================================================
注意:
一般随着时间的推移系统日志会越来越大,占用磁盘空间,增加内存和磁盘消耗,所以引出了进程logroate来进行日志按照自动一大小分割和保留规定时间日志,滚动覆盖历史日志
logrotate:日志文件会随着日志的增加而不断增大,从而带来效率的问题和空间使用问题,在常年运行的服务器上面,通常会有logrotate程序定期进行日志文件的轮替和删除工作。
配置文件/etc/logroate.conf 来定义不同的功能日志配置信息,里面可以定义日志的存储时间周期,日志分割文件大小,个数等;统一都放在/etc/logroate.d/目录下
# see "man logrotate" for details # rotate log files weekly weekly #周期 # keep 4 weeks worth of backlogs rotate 4 #文件个数 # create new (empty) log files after rotating old ones create #新文件创造动作 # 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 { #这里定义每个不同功能日志时,除了上面的默认属性,
#如果自身未定义优先去查找自身定义的,如果没有才会用默认定义的,优先使用自身定义的 monthly minsize 1m #最小大小 create 0664 root utmp #以默写用户创建,给予文件权限 rotate 1 } /var/log/btmp { missingok monthly minsize 1m create 0600 root utmp rotate 1 } # system-specific logs may be also be configured here.