readme :Linux日志配置和回滚
一 什么是日志回滚? https://www.cnblogs.com/andy9468/p/8378492.html
答:
将日志信息输出到一个单一的文件中,随着应用程序的持续使用,该日志文件会越来越庞大,进而影响系统的性能。因此,有必要对日志文件按某种条件进行切分,要切分日志文件。
分割日志的触发条件:大小、日期,或者大小加上日期。
说是切分,实际上是,当一个日志文件达到触发条件后,对日志文件进行重命名,之后再新建原来名称的日志文件(此时就是空文件了),新产生的日志就写入新的日志文件。
为啥叫回滚呢?当分割的日志文件达到指定数目的上限个数时,最老的日志文件就会被删除。
二 linux旧的系统 syslogd+klogd
1. syslog 进程:
bin文件在 /sbin/syslog
2. 启动
/etc/init.d/S01logging start
在 S01logging这个文件里面 就有指定sys_args 参数SYSLOGD_ARGS="-n -m 0 -L -s 2048 -b 5 -O /root/logs/messages -R 10.43.81.72"
/sbin/syslogd -n -m 0 -L -s 2048 -b 5 -O /root/logs/messages -R 10.43.81.72
-m选项指定循环间隔时间。
意思:(参考链接https://www.cnblogs.com/arnoldlu/p/10583233.html)
或者执行syslogd --help
其中
-n Run in foreground------------------------------------------------作为后台进程运行。
-R HOST[:PORT] Log to HOST:PORT (default PORT:514)------------------------------log输出到指定远程服务器。
-L Log locally and via network (default is network only if -R)
-C[size_kb] Log to shared mem buffer (use logread to read it)----------------log输出到共享内存,通过logread读取。
-K Log to kernel printk buffer (use dmesg to read it)---------------log输出到内核printk缓存中,通过dmesg读取。
-O FILE Log to FILE (default: /var/log/messages, stdout if -)------------log输出到指定文件中。
-s SIZE Max size (KB) before rotation (default 200KB, 0=off)-------------在log达到一定大小后,循环log到messgas.0中,后续依次变动。
-b N N rotated logs to keep (default 1, max 99, 0=purge)--------------保持的messages个数,messages.0最新,数字越大越老。一次覆盖。
-l N Log only messages more urgent than prio N (1-8)------------------设置记录的log优先级,注意这里如果设置-l 7,是不会记录等级7,即LOG_DEBUG的,只会记录LOG_INFO及更高优先级。
-S Smaller output---------------------------------------------------是否显示hostname,以及user.info之类的详细信息。
-f FILE Use FILE as config (default:/etc/syslog.conf)--------------------指定conf文件。
综上分析:本司网关的日志采用的是日志回滚方式,最多保存5个文件。
三 rsyslog 新日志系统
1. rsyslog 日志配置:
主配置: /etc/rsyslog.conf
子配置: /etc/rsyslog.d/50-default.conf
添加自定义日志文件
在文件最后添加如下一行:
local0.* /var/log/my_logfile0
2.日志回滚:
主配置:/etc/logrotate.conf
子配置:在/etc/logrotate.d/rsyslog 被包含。
logrotate -f /etc/logrotate.conf –强制轮转 或者 /usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
3. 启动、停止
systemctl enable rsyslog
systemctl start rsyslog
systemctl stop rsyslog
systemctl restart rsyslog
四 参考
参考链接:
日志配置: https://www.cnblogs.com/shu-sheng/p/13275474.html
https://www.cnblogs.com/digod/p/10593443.html
日志回滚:
https://blog.csdn.net/weixin_36040020/article/details/116777261?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-4.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-4.no_search_link
https://www.cnblogs.com/silenceli/p/3505404.html
https://www.cnblogs.com/fyy-hhzzj/p/9593362.html
https://my.oschina.net/u/4387995/blog/3837908
ogrotate 的执行由crond服务实现。在/etc/cron.daily目录中,有个文件logrotate,它实际上是个shell script,用来启动logrotate。
2. 查看linux日志的三种途径:
1)dmesg
printk()打印的日志会写到kernel ring buffer(环缓冲区)中,dmesg是从kernel ring buffer中读取内核日志信息。
2)/var/log/
系统所有日志
3)/proc/kmsg
通过读取/proc/kmsg也可以得到ring buffer(环缓冲区)的日志,但是对/proc/kmsg进行读操作后,ring buffer中被读取的数据将被清空。