欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Linux日志系统分析:rsyslog、syslog和klog

程序员文章站 2023-02-23 09:37:36
参考博客: https://blog.csdn.net/lidonghat/article/details/55004280 https://blog.csdn.net/u012247418/article/details/83684052 1.syslog是 Unix 系统的一个常见组件,用于执行 ......

//将info或更高级别的消息送到/var/log/messages,除了mail以外。

//其中*是通配符,代表任何设备;none表示不对任何级别的信息进行记录。

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

//将authpirv设备的任何级别的信息记录到/var/log/secure文件中,这主要是一些和认、权限使用相关的信息。

authpriv.* /var/log/secure

//将mail设备中的任何级别的信息记录到/var/log/maillog文件中,这主要是和电子邮件相关的信息。

mail.* /var/log/maillog

//将cron设备中的任何级别的信息记录到/var/log/cron文件中,这主要是和系统中定期执行的任务相关的信息。

cron.* /var/log/cron

//将任何设备的emerg级别的信息发送给所有正在系统上的用户。

*.emerg *

//将uucp和news设备的crit级别的信息记录到/var/log/spooler文件中。

uucp,news.crit /var/log/spooler

//将和系统启动相关的信息记录到/var/log/boot.log文件中。

local7.* /var/log/boot.log

---------------------------------------

基本语法格式

类型.级别[;类型.级别]  动作

news.=crit  /var/log/news.crit

‘=’特殊符号,如果存在说明只有本severity的消息才进行处理,如果不存在则处理本severity及其以下级别的消息

‘;'表示&&、'!'表示取反、’*'表示所有

 1 # log all kernel messages to the console.
 2 # logging much else clutters up the screen.
 3 #kern.*                            /dev/console
 4 
 5 # log anything (except mail) of level info or higher.
 6 # don't log private authentication messages!
 7 *.info;mail.none;authpriv.none;cron.none        /var/log/messages
 8 
 9 # the authpriv file has restricted access.
10 authpriv.*                        /var/log/secure
11 
12 # log all the mail messages in one place.
13 mail.*                            -/var/log/maillog    ##  '-'分号代表是异步写入,非实时写入
14 
15 
16 # log cron stuff
17 cron.*                            /var/log/cron
18 
19 # everybody gets emergency messages
20 *.emerg                            *
21 
22 # save news errors of level crit and higher in a special file.
23 uucp,news.crit                        /var/log/spooler
24 
25 # save boot messages also to boot.log
26 local7.*                        /var/log/boot.log

 

 

动作:表示信息发送的目的地

  可以是日记文件(绝对路径),如果文件名前面加上减号表示不将日志信息同步刷新到磁盘上(使用写入缓存),这样可以提高日志写入性能,但是增加了系统崩溃后丢失日志的风险

  可以是远程主机(@host,host可以是ip或域名,默认在/etc/hosts文件下loghost这个别名已经指定给本机)

  可以是指定用户(user1,user2),如果指定用户已登入,那么他们将收到消息

客户端有两种方式开发:

   完全基于协议从底层开发,也就是直接写unix域套接字或者向udp514发送定制消息

   基于库函数供上层应用使用

==================================================================================================

注意:

  一般随着时间的推移系统日志会越来越大,占用磁盘空间,增加内存和磁盘消耗,所以引出了进程logroate来进行日志按照自动一大小分割和保留规定时间日志,滚动覆盖历史日志

logrotate:日志文件会随着日志的增加而不断增大,从而带来效率的问题和空间使用问题,在常年运行的服务器上面,通常会有logrotate程序定期进行日志文件的轮替和删除工作。

配置文件/etc/logroate.conf 来定义不同的功能日志配置信息,里面可以定义日志的存储时间周期,日志分割文件大小,个数等;统一都放在/etc/logroate.d/目录下

Linux日志系统分析:rsyslog、syslog和klog

# see "man logrotate" for details
# rotate log files weekly
weekly                        #周期

# keep 4 weeks worth of backlogs
rotate 4                       #文件个数 

# create new (empty) log files after rotating old ones
create                        #新文件创造动作

# uncomment this if you want your log files compressed
#compress

# rpm packages drop log rotation information into this directory
include /etc/logrotate.d              #存放目录

# no packages own wtmp -- we'll rotate them here
/var/log/wtmp {                     #这里定义每个不同功能日志时,除了上面的默认属性,
                              #如果自身未定义优先去查找自身定义的,如果没有才会用默认定义的,优先使用自身定义的 monthly minsize 1m                      #最小大小 create 0664 root utmp                #以默写用户创建,给予文件权限  rotate 1 } /var/log/btmp { missingok monthly minsize 1m create 0600 root utmp rotate 1 } # system-specific logs may be also be configured here.