> CentOS > CentOS入门 >

centos7—日志文件

一、日志文件:主要记录在本机上谁什么时间做了什么事情.
 
 
 
1、日志文件在管理中的作用:1).系统故障排错
 
                                           2).统计访问量
 
2、日志软件: rpm -q rsyslog
 
     文件列表: rpm -ql rsyslog
 
     配置文件: rpm -qc rsyslog
 
3、日志文件默认位置:/var/log
 
     注:某些第3方软件的日志文件位于软件自己的目录中的log目录或其他位置。
 
4、常见的日志文件:(/var/log)
 
     注:文件类型用file命令查。
 
           大多数日志文件是纯文本文件,可以用cat 、head来查看。
 
           还有一些是二进制日志文件,需要用专用的命令来查看。
 
     secure:安全相关,主要是用户认证,如登录 、创建和删除账号 、sudo等
 
     audit/audit.log:审计日志。跟用户账号相关
 
     messages:记录系统和软件的绝大多数消息。如服务启动 、停止 、服务错误等。
 
     boot.log:系统启动日志。能看到启动流程。
 
     cron:计划任务日志。会记录crontab计划任务的创建、执行信息。
 
     dmesg:硬件设备信息(device)。纯文本,也可以用dmesg命令查看。
 
     yum.log:yum软件的日志。记录yum安装、卸载软件的记录。
 
     lastlog:最后登录的日志。用lastlog查看(二进制日志文件)
 
     btmp:登录失败的信息(bad)。用lastb查(二进制日志文件)
 
     wtmp:正确登录的所有用户命令(who、w),用last查(二进制日志文件)
 
 
 
日志练习:开两个命令终端窗口,分别执行不同的命令,看A窗口中的日志信息变化,
 
     A窗口:tail -0f /var/log/messages     #实时监测messages日志文件
 
     B窗口:systemctl restart firewalld
 
                 systemctl stop firewalld
 
-------------------------------------------------------------------------------------------------------------------
 
-------------------------------------------------------------------------------------------------------------------
 
rsyslog日志程序的配置文件:rpm -qc rsyslog     #查的结果如下
 
     /etc/logrotate.d/syslog      #日志轮转(切割、轮替)策略文件
 
     /etc/rsyslog.conf     #主配置文件
 
     /etc/sysconfig/rsyslog     #环境设置配置文件
 
-------------------------------------------------------------------------------------------------------------------
 
-------------------------------------------------------------------------------------------------------------------
 
主配置文件:/etc/rsyslog.conf
 
-------------------------------------------------------------------------------------------------------------------
 
-------------------------------------------------------------------------------------------------------------------
 
日志类别:(用man 3 syslog来查看)
 
     注:日志类别主要是用来区分软件、服务.
 
     LOG_AUTH     #安全或授权信息
 
     LOG_AUTHPRIV     #安全或授权信息 (私有)
 
     LOG_CRON     #计划任务
 
     LOG_DAEMON     #系统守护进程 without separate facility value
 
     LOG_FTP     #ftp守护进程相关
 
     LOG_KERN     #内核消息 (these can't be generated from user processes)
 
     LOG_LOCAL0 through LOG_LOCAL     #本地自定义
 
     LOG_LPR     #打印子系统
 
     LOG_MAIL     #邮件子系统
 
     LOG_NEWS     #新闻组子系统
 
     LOG_SYSLOG     #系统消息(8)
 
     LOG_USER (default)     #一般用户的等级的消息
 
     LOG_UUCP     #UUCP subsystem     unix  like机器本身相关子系统
 
-------------------------------------------------------------------------------------------------------------------
 
-------------------------------------------------------------------------------------------------------------------
 
日志等级level:(用man 3 syslog来查看)
 
     注:等级主要用来区分某个软件中日志的分类。
 
     LOG_EMERG     #疼痛级,严重错误
 
     LOG_ALERT     #报警.必须立即采取措施
 
     LOG_CRIT     #较严重
 
     LOG_ERR     #错误
 
     LOG_WARNING     #警告
 
     LOG_NOTICE     #提示信息.normal, but significant, condition
 
     LOG_INFO     #信息
 
     LOG_DEBUG     #调试级信息
 
     注:等级为none表示不记录任何信息。
 
-------------------------------------------------------------------------------------------------------------------
 
-------------------------------------------------------------------------------------------------------------------
 
案例一:要求创建一个跟messages日志文件相同的日志规则,将日志记录到/var/log/my.log文件中.
 
     vim /etc/rsyslog.conf     #执行如下操作
 
        *.info;mail.none;authpriv.none;cron.none     /var/log/messages     #找到此行
 
        *.info;mail.none;authpriv.*;cron.none     /var/log/my.log     #添加此行
 
-------------------------------------------------------------------------------------------------------------------
 
-------------------------------------------------------------------------------------------------------------------
 
重启rsyslog服务:systemctl restart rsyslog
 
查看日志:cat /var/log/my.log
 
-------------------------------------------------------------------------------------------------------------------
 
-------------------------------------------------------------------------------------------------------------------
 
二、logger 是Shell命令,可以通过该命令使用 rsyslog 的系统日志模块,还可以从命令行直接向系统日志文件写入一行信息。
 
1、logger命令的语法为:
 
     logger [-i] [-f filename] [-p priority] [-t tag] [message...]
 
     注:-f filename:将 filename 文件的内容作为日志。
 
           -i 每行都记录logger进程的ID。
 
           -p priority:指定优先级;优先级必须是形如 facility.priority 的完整的选择器,默认优先级为 user.notice。
 
           -t tag:使用指定的标签标记每一个记录行。
 
           message:要写入的日志内容,多条日志以空格为分隔;如果没有指定日志内容,并且 -f filename 选项为空,那么会把标准输入作为日志内容。
 
 
 
案例一:将ping命令的结果写入日志:
 
     创建ping的日志:ping -c 3 127.0.0.1 | logger -it logger_test -p local3.notice  
 
     创建ping的日志:ping -c 3 127.0.0.5 | logger -it logger_test -p local3.notice 
 
     查看日志文件:cat /var/log/user.log
 
     查看到的日志内容:Oct 6 12:48:53 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=10 ttl=253 time=931 ms
 
     发现ping命令的结果成功输出到/var/log/userlog 文件。
 
 
 
     注:命令 logger -it logger_test -p local3.notice 各选项的含义:
 
           -i:在每行都记录进程ID;
 
           -t logger_test:每行记录都加上“logger_test”这个标签;
 
           -p local3.notice:设置日志类型和优先级。
 
-------------------------------------------------------------------------------------------------------------------
 
-------------------------------------------------------------------------------------------------------------------
 
三、logrotate日志切割:
 
1、作用:1).防止日志文件过大
 
               2).定期删除旧日志文件
 
 
 
2、配置文件:rpm -qc logrotate     #文件如下
 
     /etc/cron.daily/logrotate
 
     /etc/logrotate.conf
 
     /etc/rwtab.d/logrotate
 
     /var/lib/logrotate/logrotate.status
 
 
 
3、查轮滚策略帮助手册:man logrotate.conf
 
4、配置文件内容:cat /etc/logrotate.conf
 
     注:此配置文件主要定义日志文件切割(轮滚、轮转、滚动)的策略方案.
 
     # see "man logrotate" for details
 
     # rotate log files weekly
 
     weekly     #每周一轮滚
 
 
 
     # keep 4 weeks worth of backlogs
 
     rotate 4     #保留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     #是否压缩(后缀为.gz)
 
 
 
     # 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     #保留1个备份
 
     }
 
 
 
     /var/log/btmp {
 
         missingok     #丢了也不会报错
 
         monthly
 
         create 0600 root utmp
 
         rotate 1
 
     }
 
 
 
     # system-specific logs may be also be configured here.
 
-------------------------------------------------------------------------------------------------------------------
 
-------------------------------------------------------------------------------------------------------------------
 
强制测试轮滚:logrotate -fv /etc/logrotate.conf
 
                      ls /var/log/
 
     注:1、-f是强制轮滚,-v显示过程
 
         2、日志文件名后缀的数字越大,文件越旧。日志清理时是清理旧文件。
 
 
 
案例一:给/var/log/my.log日志文件创建轮滚策略,每天一轮滚,文件丢了也不报错,保留2个备份,启用压缩功能,用数字作为文件名后缀.
 
     vim /etc/logrotate.d/my   添加如下内容
 
          /var/log/my.log  {
 
               daily     #每天一轮滚
 
               missingok     #丢了也不报错
 
               nodateex     #不使用日期为后缀,即用数字为后缀
 
               create     #创建新文件
 
               rotate 2     #保留2个备份
 
               compress     #启用压缩(后缀为.gz)
 
          }
 
 
 
测试轮滚:logrotate -fv /etc/logrotate.d/my
 
查看日志文件列表:ls /var/log/my*
 
 
 
注:部分知识点来源于man手册。
 
 
 
 
 
(责任编辑:IT)