很多时候,我们处理程序(脚本)的日志是通过重定向的方法实现,而日志的大小和切割有时就会忽略掉。
有时可能会加条linuxjishu/14008.html target=_blank class=infotextkey>find命令检测一下大小或超过一定时间执行删除或切割操作。
不过看了本文的介绍,你就不用再进行如此繁琐的操作了。
来看logger命令,logger 是一个shell 命令接口,可以通过该接口使用Syslog的系统日志模块,还可以从命令行直接向系统日志文件(或者自定义的文件)写入一行信息。
下面就是logger的man信息
用法
logger [-isd] [-f file] [-p pri] [-t tag] [-u socket] [message ...]
描述
Logger 用于往系统中写入日志. 它提供了一个shell命令接口到syslog系统模块
选项:
logger 以0退出表示成功, 大于0表示失败.
可用的facility名有: auth, authpriv (for security information of a
sensitive nature), cron, daemon, ftp, kern, lpr, mail, news, security
(deprecated synonym for auth), syslog, user, uucp, and local0 to local7,
inclusive.
可用的level名用: alert, crit, debug, emerg, err, error (deprecated
synonym for err), info, notice, panic (deprecated synonym for emerg),
warning, warn (deprecated synonym for warning).
举例:
在脚本中使用logger命令:
[root@jbxue ~]# vim /etc/rsyslog.conf #在centos6之前的版本这个文件对应的应该是/etc/syslog.conf,对应的进程为syslogd
修改这一行:增加local3.none,表示local3上的任何消息都不记录到/var/log/messages 中
增加这一行:意思是来自local3的所有消息都记录到/var/log/my_test.log ,前面加个“-”,说明要启用写入缓冲
[root@jbxue ~]# service rsyslog restart
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
[root@jbxue ~]# cat my_test.sh
[root@jbxue ~]# bash my_test.sh
Hello world
[root@jbxue ~]# cat /var/log/my_test.log
Aug 14 23:15:19 localhost my_test.sh[31996]: my_test.sh find some error in …
Aug 14 23:32:41 localhost my_test.sh[32096]: my_test.sh find some error in …
日志会越来越大,系统日志是怎么变成messages.0,messages.1….的呢,接下来就说说今天的另外一个主角:logrotate。
它用来管理系统中大大小小的日志的切割与轮替。
查看配置文件:
[root@jbxue ~]# cat /etc/logrotate.conf
# 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
# use date as a suffix of the rotated file
dateext
# 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 and btmp — we’ll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
在/etc/logrotate.d/下创建自己的配置文件:
重启syslog:
#service syslog restart
如此便实现了日志的按计划轮替。