一、概述
Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息。
大部分Linux发行版默认的日志守护进程为 syslog,位于 /etc/syslog 或 /etc/syslogd 或/etc/rsyslog.d,默认配置文件为 /etc/syslog.conf 或 rsyslog.conf,任何希望生成日志的程序都可以向 syslog 发送信息。
Linux系统内核和许多程序会产生各种错误信息、警告信息和其他的提示信息,这些信息对管理员了解系统的运行状态是非常有用的,所以应该把它们写到日志文件中去。
完成这个过程的程序就是syslog。syslog可以根据日志的类别和优先级将日志保存到不同的文件中。
二、日志类型
下面是常见的日志类型,但并不是所有的Linux发行版都包含这些类型:
三、日志优先级
常见的日志优先级请见下标:
四、常用日志文件
系统日志是由一个名为syslog的服务管理的,如以下日志文件都是由syslog日志服务驱动的:
/var/log/boot.log:录了系统在引导过程中发生的事件,就是Linux系统开机自检过程显示的信息
/var/log/lastlog :记录最后一次用户成功登陆的时间、登陆IP等信息
/var/log/messages :记录Linux操作系统常见的系统和服务错误信息
/var/log/secure :Linux系统安全日志,记录用户和工作组变坏情况、用户登陆认证情况
/var/log/btmp :记录Linux登陆失败的用户、时间以及远程IP地址
/var/log/syslog:只记录警告信息,常常是系统出问题的信息,使用lastlog查看
/var/log/wtmp:该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件,使用last命令查看
/var/run/utmp:该日志文件记录有关当前登录的每个用户的信息。如 who、w、users、finger等就需要访问这个文件
五、rsyslogd配置文件格式
rsyslogd 服务是依赖其配置文件 /etc/rsyslog.conf 来确定哪个服务的什么等级的日志信息会被记录在哪个位置的。也就是说,日志服务的配置文件中主要定义了服务的名称、日志等级和日志记录位置。
(1)/etc/rsyslog.conf配置文件的格式
该配置文件的基本格式如下所示:
authpriv.* /var/log/secure #服务名称[连接符号]日志等级 日志记录位置 #认证相关服务.所有日志等级 记录在/var/log/secure日志中
(2)服务名称
rsyslogd 服务可以识别哪些服务的日志。
这些日志服务名称是rsyslogd服务自己定义的,并不是实际的Linux的服务。当有服务需要由rsyslogd服务来帮助管理日志时,只需要调用这些服务名称就可以实现日志的委托管理。
这些日志服务名称可以使用命令“man 3 syslog”来查看。
(3)连接符号
日志服务连接日志等级的格式如下:
日志服务[连接符号]日志等级 日志记录位置
在这里,连接符号可以被识别为以下三种。
“.”代表只要比后面的等级高的(包含该等级)日志都记录。比如,“cron.info”代表cron服务产生的日志,只要日志等级大于等于info级别,就记录。
“.=”代表只记录所需等级的日志,其他等级的日志都不记录。比如,“*.=emerg”代表人和日志服务产生的日志,只要等级是emerg等级,就记录。这种用法极少见,了解就好。
“.!”代表不等于,也就是除该等级的日志外,其他等级的日志都记录。
(4)日志等级
根据日志的功能性不同,每个日志的重要性都是有差别的;
(5)日志记录位置
日志记录位置就是当前日志输出到哪个日志文件中保存,日志的记录位置也是固定的:
日志文件的绝对路径。这是最常见的日志保存方法,如“/var/log/secure”就是用来保存系统验证和授权信息日志的。
系统设备文件。如“/dev/lp0”代表第一台打印机,如果日志保存位置是打印机设备,当有日志时就会在打印机上打印。
转发给远程主机。因为可以选择使用 TCP 和 UDP 协议传输日志信息,所以有两种发送格式:如果使用“@192.168.0.210:514”,就会把日志内容使用 UDP 协议发送到192.168.0.210 的 UDP 514 端口上;如果使用“@@192.168.0.210:514”,就会把日志内容使用 TCP 协议发送到 192.168.0.210 的 TCP 514 端口上,其中 514 是日志服务默认端口。当然,只要 192.168.0.210 同意接收此日志,就可以把日志内容保存在日志服务器上。
用户名。如果是“root”,就会把日志发送给 root 用户,当然 root 要在线,否则就收不到日志信息了。发送日志给用户时,可以使用 “ * ” 代表发送给所有在线用户,如“mail.**”就会把 mail 服务产生的所有级别的日志发送给所有在线用户。如果需要把日志发送给多个在线用户,则用户名之间用“,”分隔。
忽略或丢弃日志。如果接收日志的对象是“~”,则代表这个日志不会被记录,而被直接丢弃。如“local3.* ~”代表忽略 local3 服务类型所有的日志都不记录。
日志记录位置就是当前日志输出到哪个日志文件中保存。日志的记录位置也是固定的: