在管理系统当中,经常会遇到各种各样的错误和异常。要找到这些错误和异常,就需要各种日志来帮助定位问题了。linux的日志都是存放在/var/log这个文件夹下面,常见的日志文件有如下几种;/var/log/cron: 记录crontab调度是否正常运行/var/log/dmesg: 记录开始的时候内核检测过程中产生的各项信息/var/log/lastlog:可以记录系统上面所有帐号最近一次登陆系统时的相关信息。这个文件无法用cat命令来读取,但是lastlog命令可以读取这个文件/var/log/maillog: 记录邮件相关信息/var/log/messages:几乎系统发生的错误信息都会记录在这个文件当中。当系统发生莫名其妙的错误时,这个文件是必须要查看的/var/log/secure: 只要牵涉到需要输入帐号密码的软件,登陆的时候都会被记录在此文件中。例如网络联机的ssh,telnet等程序/var/log/wtmp:记录正确登陆系统者的账户信息与错误登陆时所使用的账户信息这里我们用lastlog来看下日志的格式:可以看到登陆用户名,使用的终端已经登陆日期。root@zhf-linux:/var/log# lastlog | grep rootroot tty1 Wed Jul 26 12:27:16 +0800 2017那么什么服务的什么等级信息以及需要被记录在哪里是由谁规定的。这就要用到syslog的配置文件。有些Linux系统是记录在/etc/syslog.conf。但在ubuntun中配置文件是在/etc/rsyslog.conf。 rsyslog.conf的使用格式如下格式::日志设备(类型).(连接符号)日志级别 日志处理方式(action)日志设备(可以理解为日志类型):———————————————————————-auth –pam产生的日志authpriv ssh,ftp等登录信息的验证信息cron –时间任务相关kern –内核lpr –打印mail –邮件mark(syslog)–rsyslog服务内部的信息,时间标识news –新闻组user –用户程序产生的相关信息uucp –unix to unix copy, unix主机之间相关的通讯local 1~7 –自定义的日志设备日志级别:———————————————————————-debug –有调式信息的,日志信息最多info –一般信息的日志,最常用notice –最具有重要性的普通条件的信息warning –警告级别err –错误级别,阻止某个功能或者模块不能正常工作的信息crit –严重级别,阻止整个系统或者整个软件不能正常工作的信息alert –需要立刻修改的信息emerg –内核崩溃等严重信息none –什么都不记录举几个例子来看下:1 如果我要将mail相关的数据都写入到/var/log/maillog中。那么在rsyslog.conf中应该添加如下mail.info /var/log/maillog2 如果我要将news以及cron的信息都写入到一个称为/var/log/cronnews的文件中,但是两个程序的警告信息则额外的记录在/var/log/cronnews.warn中,则应该添加如下:news.*;cron.* /var/log/cronnewsnews.=warn;cron.=warn /var/log/cronnews.warn其中.=代表所需要的等级就是后面接的等级而已,其他的不要.!代表不等于,及是除了该等级外的其他等级都记录有一点需要注意的是对于日志文件,如果用VIM打开它,离开却执行:wq的参数,那么该文件将来将不会在继续日志操作,除非重新启动rsyslog。 /etc/init.d/rsyslog restart在/var/log文件中我们经常看到如下的文件。dpkg.log.1,dpkg.log.2。这些由于logrotate的原因。由于日志一直在不停的记录,文件会越来越大,那么这样会影响到系统的运行,因此logrorate就是将旧的日志文件更改名称,然后新建一个空的日志文件。然后旧的记录保存一段时间就删除掉。这样就可以省去很多硬盘空间。-rw-r--r-- 1 root root 0 Sep 3 14:04 dpkg.log-rw-r--r-- 1 root root 161993 Aug 27 15:14 dpkg.log.1-rw-r--r-- 1 root root 98629 Nov 30 2015 dpkg.log.10.gz-rw-r--r-- 1 root root 177381 Jul 30 15:26 dpkg.log.2.gz-rw-r--r-- 1 root root 23074 Jul 26 10:16 dpkg.log.3.gz-rw-r--r-- 1 root root 224 Oct 9 2016 dpkg.log.4.gz-rw-r--r-- 1 root root 2861 Sep 27 2016 dpkg.log.5.gz-rw-r--r-- 1 root root 335 Jun 14 2016 dpkg.log.6.gz-rw-r--r-- 1 root root 1011 May 23 2016 dpkg.log.7.gz-rw-r--r-- 1 root root 221 May 7 2016 dpkg.log.8.gz-rw-r--r-- 1 root root 2206 Dec 1 2015 dpkg.log.9.gz那么logrotate的工作机制是如何定义的呢,这些都记录在/etc/logrotate.conf里面# rotate log files weekly 每周对日志进行一次rotate的动作weekly# use the syslog group by default, since this is the owning group# of /var/log/syslog.su root syslog# keep 4 weeks worth of backlogs 只保留4个日志文件rotate 4# create new (empty) log files after rotating old onescreate 日志文件被重命名,因此新建一个来继续存储# uncomment this if you want your log files compressed 被修改的日志是否需要压缩#compress比如针对/var/log/wtmp的文件,设置如下/var/log/wtmp { missingok monthly create 0664 root utmp rotate 1}但是现实情况是我们有很多服务都在系统上面,每个服务都需要去修改/etc/logrotate.conf文件也挺复杂的。所以需要单独独立出来一个目录,每个服务独立一个文件,并且放置到/etc/logrotate.d当中就可以了root@zhf-linux:/etc/logrotate.d# ls -altotal 64drwxr-xr-x 2 root root 4096 Aug 21 11:32 .drwxr-xr-x 147 root root 12288 Sep 21 21:55 ..-rw-r--r-- 1 root root 126 May 16 2015 apport-rw-r--r-- 1 root root 173 Apr 10 2014 apt-rw-r--r-- 1 root root 181 Feb 13 2016 cups-daemon-rw-r--r-- 1 root root 232 Mar 7 2014 dpkg-rw-r--r-- 1 root root 125 Apr 1 2017 lightdm-rw-r--r-- 1 root root 157 Jul 15 2014 pm-utils-rw-r--r-- 1 root root 94 Apr 22 2015 ppp-rw-r--r-- 1 root root 515 Feb 3 2016 rsyslog-rw-r--r-- 1 root root 513 Feb 19 2014 speech-dispatcher-rw-r--r-- 1 root root 178 Aug 7 2014 ufw-rw-r--r-- 1 root root 235 Feb 19 2016 unattended-upgrades-rw-r--r-- 1 root root 122 Apr 12 2014 upstart比如来看下rsyslog的设置。root@zhf-linux:/etc/logrotate.d# cat rsyslog/var/log/syslog{ rotate 7 daily missingok notifempty delaycompress compress postrotate invoke-rc.d rsyslog rotate > /dev/null endscript}其中postrotate代表的意思是在做完logrotate之后启动的命令。prerotate代表的意思是在logrotate之前的命令。比如如果我们想将/var/log/syslog文件在rotate后设置为只能为增加的属性。可以这样写postrotate/usr/bin/chattr +a /var/log/syslogendscript如果配置文件都OK了,可以用logrotate命令来测试设置是否可行。Logrorate -vf logfile-v: 启动显示模式,会显示logrotate运行的过程-f:不论是否符合配置文件的数据,强制每个文件都进行rotate的操作
转载于:https://www.cnblogs.com/zhanghongfeng/p/7643457.html