1、启用日志服务:
[root@www ~]#/etc/init.d/rsyslog start (redhel 6)
[root@www ~]#/etc/init.d/syslog  start (redhel 5)


2、日志通常存放路径

[root@www ~]#ls /var/log/ --此目录下很多系统日志都存放在此
/var/log/messages --非常重要的日志文件,几乎所有系统发生的重要错误都会记录在此
/var/log/secure --ssh ftp telnet pop3 pam等有关
/var/log/dmesg --开机时核心检测过程中所产生的信息
/var/log/cron --查看时间任务有关的日志
/var/log/wtmp --用last查看,不能直接cat
/var/log/btmp --用lastb查看,不能直接cat
/var/log/lastlog --用lastlog查看
/var/log/boot.log --系统启动过程日志记录存放
/var/log/rpmpkgs --rpm相关
/var/log/maillog --mail相关
/var/log/spooler --news,uucp
/var/log/acpid --高级电源管理
/var/log/yum.log --yum程序相关的日志

连接符号
. 记录大于等于此等级
.= 只记录等于此等级的信息
.! 不等于此等级,也就是记录此等级之外的信息

(1)只记录mail的info级别信息到/var/log/newmaillog
mail.=info /var/log/newmaillog

(2)记录时间任务的info级别以上的所有信息(除了err外)到/var/log/newcron
cron.info;cron.!err /var/log/newcron

(3)把ssh的日志单独记录到/var/log/ssh
提示 local0-local7是自定义的日志设备,可以使用其中一种
如果拖管到xinetd下,可以这样做:
log_type =syslog local5 info
然后在syslog的主配置文件里加上
local5.info /var/log/ssh

如果没有ssh托管到超级守护进程的话配置如下

[root@www ~]#vim /etc/ssh/sshd_config

SyslogFacility local5 --修改成local5,把ssh的日志定义由local5来记录


[root@www ~]#/etc/init.d/sshd restart --重启使之生效


[root@www ~]#vim /etc/rsyslog.conf  

local5.* /var/log/ssh --添加加一句


[root@www ~]#/etc/init.d/rsyslog restart --重启后/var/log/ssh文件被自动创建

2、日志集中化管理
如果想将其他机器的日志全部发送到一台服务器上收集该如何配置。
假设客户端ip:10.10.10.10 服务器上ip:10.10.10.254现在想将客户端上的ssh日志自动发送到服务器上保存。
(1)在客户端10上的配置
vim /etc/ssh/sshd_config
修改:SyslogFacility local5 ---------local5是自己自定义的,自定义范围有local0---local7

vim /etc/rsyslog.conf
添加一项
local5.* @@10.10.10.254:514 --------指定服务器IP和端口

然后刷新服务:/etc/init.d/rsyslog reload (restart)

(2)在服务器上254配置
vim /etc/rsyslog_conf
打开远程接收日志功能:
$ModLoad imtcp
$InputTCPServerRun 514
然后添加一项:
local5.* /var/log/remotessh.log ---------后面的路径和文件可以自己自定义,但是local5必须和前面定义的一样

保存然后刷新服务或者重启服务:

[root@www ~]#/etc/init.d/rsyslog reload (restart)

此时当有计算机通过ssh链接到客户端10时日志全部保存在服务器254下的/var/log/下的remotessh.log文件里面


3、日志切割论转备份
rotate
默认情况以下日志每过一个星期将自动论转备份。
/var/log/messages
/var/log/cron
/var/log/boot.log
/var/log/maillog
/var/log/secure


(1)配置全局论转备份文件
[root@www ~]#vim /etc/logrotate.conf

# see "man logrotate" for details
# rotate log files weekly
weekly --默认是一个星期rotate一次

# keep 4 weeks worth of backlogs
rotate 4 --默认保留4份备份文件

# use date as a suffix of the rotated file
dateext --rhel6里的新参数,表示轮转后,名字后不再以.1,.2这样的结尾,而以时间来结尾,时间格式也可以由dataformat参数来设定

# 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 thisdirectory
include /etc/logrotate.d --这表示/etc/logrotate.d目录下的所有配置文件都生效

# no packages own wtmp -- we'll rotate them here
/var/log/wtmp { --针对wtmp单独的配置,这里是绝对路径
monthly --一个月rotate一次,取代上面的全局配置里的一个星期一次
minsize1M --指定最小大小为1M,才rotate,就算大小到了,但时间没到,不轮转;如果时间到了,大小没到,也不轮转;要两个条件都满足才轮转
create 0664root utmp --定义创建的为属性为0664,属主为root,属组utmp
rotate1 --保留一个
}

/var/log/btmp {
missingok
monthly
create 0600root utmp
rotate1
}

***做原理测试:
把主配置文件里的dateext参数给注释掉,再来做下面的测试;如果不注释,时间也不变的话,就不会轮转出4个文件出来,因为名字一样

[root@www ~]#logrotate -f /etc/logrotate.conf --强制轮转,然后可以看到/var/log/下很多时间都开始轮转了


*****如果想在rotate论转之前进行备份或者执行其他脚本,该如何实现?
结构如下:
sharedscripts
prerotate