当前位置: 首页 > 工具软件 > logrotate > 使用案例 >

linux logrotate 指定目录,使用logrotate 管理Linux日誌檔

牟华翰
2023-12-01

使用logrotate管理Linux日誌檔

编辑整理:王琦

2005/08/15

对于Linux的系统安全来说,日志文件是极其重要的工具。系统管理员可以使用logrotate程序用来管理系统中的最新的事件,logrotate还可以用来备份日志文件。那么日志文件是如何管理及如何实现轮换的呢?

Linux的系统日志一般被记录在/var/log/目录下。日志纪录配置文档为/etc/syslog.conf.

/var/log/目录:

./var/log记录了几乎所有的log ,但是没有记录ftp log ,我们可以通过/etc/ftpaccess设置及修改来达到这个目的。

boot.log启动信息

cron纪录排程执行的log .

/var/log/messagesmessages日志是核心系统日志文件。它包含了系统启动时的引导消息,以及系统运行时的其他状态消息。IO错误、网络错误和其他系统错误都会记录到这个文件中。其他信息,比如某个人的身份切换为root,也在这里列出。如果服务正在运行,比如DHCP服务器,您可以在messages文件中观察它的活动。通常,/var/log/messages是您在做故障诊断时首先要查看的文件。

/var/log/XFree86.0.log这个日志记录的是Xfree86 Xwindows服务器最后一次执行的结果。如果您在启动到图形模式时遇到了问题,一般情况从这个文件中会找到失败的原因。

/var/log/secure纪录登陆的ip,时间,登陆方式等。

查看日志的工具

dmesg使用dmesg命令可以快速查看最后一次系统引导的引导日志。通常它的内容会很多,所以您往往会希望将其通过管道传输到一个阅读器。dmesg | more上面的命令将以分页的方式显示引导信息。tail有时,当某些行为发生时,您会希望密切关注一个日志文件。Tail命令设计用于显示文本文件的最后几行。使用-f开关,当日志增加新的内容时,tail将继续显示新的输出。tail -f /var/log/messages

/etc/syslog.conf日志配置文件内容:

其中记录的内容,注意#后面的解释:

# Log all kernel messages to the console. (纪录所有的内核信息到字符设备)

# Logging much else clutters up the screen.

#kern.*/dev/console

# Log anything (except mail) of level info or higher. (纪录除了mail信息之外的所有log)

# Don't log private authentication messages!

*.info;mail.none;authpriv.none;cron.none/var/log/messages

# The authpriv file has restricted access.(纪录受到限制的访问)

authpriv.*/var/log/secure

# Log all the mail messages in one place.

mail.*/var/log/maillog

# Log cron stuff(纪录cron排程执行的log)

cron.*/var/log/cron

# Everybody gets emergency messages

*.emerg*

# Save news errors of level crit and higher in a special file. (在一个专门的文件中保存)

uucp,news.crit/var/log/spooler

# Save boot messages also to boot.log(记录启动信息)

local7.*/var/log/boot.log

二.Linux的系统日志一般内容。

日志文件记录例子(以messages为例):

以下log messages是从目前运行的SFC系统中摘录下来的messages, messages.1, messages.2 , messages.3 , messages.4,纪录所有Linux系统相关变化及状态,用户登入信息等。

[root@dmdii-node2 log]# pwd

/var/log

[root@dmdii-node2 log]#

[root@dmdii-node2 log]# vi messages.1

messages.1文件内容

Aug704:03:02dmdii-node1 syslogd 1.4.1: restart. (最开始的一句)

......

Aug 14 04:03:02 dmdii-node1 cups: cupsd startup succeeded (最后的一句)

messages.2文件内容

Jul 3104:03:02dmdii-node1 syslogd 1.4.1: restart. (最开始的一句)

.......

Aug7 04:03:02 dmdii-node1 cups: cupsd startup succeeded (最后的一句)

messages.3文件内容

Jul 2404:03:02dmdii-node1 syslogd 1.4.1: restart. (最开始的一句)

.......

Jul 31 04:03:02 dmdii-node1 cups: cupsd startup succeeded (最后的一句)

messages.4文件内容

Jul 1704:03:02dmdii-node1 syslogd 1.4.1: restart. (最开始的一句)

.......

Jul 24 04:03:02 dmdii-node1 cups: cupsd startup succeeded (最后的一句)

messages文件内容

Aug 1404:03:02dmdii-node1 syslogd 1.4.1: restart.

Aug 1508:01:42dmdii-node1 login(pam_unix)[7840]: session opened for user oracle by (uid=0)

Aug 1508:01:42dmdii-node1-- oracle[7840]:LOGIN ONpts/0 BY oracle FROM 10.134.48.86

Aug 1508:17:06dmdii-node1 su(pam_unix)[8024]: session opened for user root by oracle(uid=500)

Aug 1508:18:42dmdii-node1 login(pam_unix)[8086]: session opened for user oracle by (uid=0)

大家通过观察上面每个日志最开始的一句和最后的一句的时间差,注意到日志纪录是轮换的,而且是有规律的轮换(这里是weekly轮换,即达到一周时间的messages文件中的log会转储到messges.1或其他messages.2,….等文件中)。syslogd 1.4.1: restart表示重新初始化系统日志守护程序syslogd。

三.Logrotate的配置。

Logrotate顾名思义就是log rotate ,即日志的轮换。Logrotate是Linux系统自身带的一个日志轮循程序,它的执行程序所在的目录是/usr/sbin/logrotate,是专门对各种系统日志(syslogd,mail)进行轮循的程序。该程序是由运行程序的服务crond来每天凌晨4:02运行的(可以回过头看看上面二中的一些日志的开始发生时间都是04:03,抱歉,这里我们在深圳的测试server比实际时间早了点,^_^),可以在/etc/cron.daily目录下可以看到logrotate文件

Logrotate用来将旧的日志文件删除,并创建新的日志文件,叫做”转储”。

我们可以根据日志文件大小,也可以根据天数来转储(比如上面的例子是一周转储一次)。logrotate程序还可以用于压缩日志文件,以及发送日志到指定的E-mail。

logrotate的配置文件是/etc/logrotate.conf。主要参数如下表:参数功能compress通过gzip压缩转储以后的日志nocompress不需要压缩时,用这个参数copytruncate用于还在打开中的日志文件,把当前日志备份并截断nocopytruncate备份日志文件但是不截断create mode owner group转储文件,使用指定的文件模式创建新的日志文件nocreate不建立新的日志文件delaycompress和compress一起使用时,转储的日志文件到下一次转储时才压缩nodelaycompress覆盖delaycompress选项,转储同时压缩。errors address专储时的错误信息发送到指定的Email地址ifempty即使是空文件也转储,这个是logrotate的缺省选项。notifempty如果是空文件的话,不转储mail address把转储的日志文件发送到指定的E-mail地址nomail转储时不发送日志文件olddir directory转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统noolddir转储后的日志文件和当前日志文件放在同一个目录下prerotate/endscript在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行postrotate/endscript在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行daily指定转储周期为每天weekly指定转储周期为每周monthly指定转储周期为每月rotate count指定日志文件删除之前转储的次数,0指没有备份,5指保留5个备份tabootext [+] list让logrotate不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v,和~

size size当日志文件到达指定的大小时才转储,Size可以指定bytes (缺省)以及KB (sizek)或者MB (sizem).

四.默认Logrotate的配置。logrotate缺省的配置文件/etc/logrotate.conf。Red Hat Linux缺省安装的文件内容是:

缺省的配置一般放在logrotate.conf文件的最开始处,影响整个系统。在本例中就是前面12行。weekly指定所有的日志文件每周转储一次。rotate 4指定转储文件的保留4份。errors root指定错误信息发送给root。create指定logrotate自动建立新的日志文件,新的日志文件具有和原来的文件一样的权限。#compress指定不压缩转储文件,如果需要压缩,去掉注释就可以了。

Include/etc/logrotate.d告诉logrotate读入存放在/etc/logrotate.d目录中的日志转储参数,当系统中安装了RPM软件包时,使用include选项十分有用。RPM软件包的日志转储参数一般存放在/etc/logrotate.d目录。include选项十分重要,一些应用把日志转储参数存放在/etc/logrotate.d。典型的应用有:apache, linuxconf, samba, cron以及syslog。这样,系统管理员只要管理一个/etc/logrotate.conf文件就可以了。

五.Logrotate的运行。

1.判断系统的日志文件,建立转储计划以及参数,通过cron daemon运行下面的代码是Red Hat Linux缺省的crontab来每天运行logrotate。

#/etc/cron.daily/logrotate(即/etc/cron.daily/logrotate每天运行内容如下)

#! /bin/sh

/usr/sbin/logrotate/etc/logrotate.conf

详细内容可以参考:

 类似资料: