/etc/logrotate.d/rsyslog

相关配置信息察看man logrotate

https://blog.csdn.net/sinat_36358653/article/details/107390349

 

// crond.hourly下的内容没有执行?(是不是/etc/crontab中没有/etc/cron.hourly)

crontab -l

/

 #!/bin/bash????

 

//注意: "run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名。

 

 

 //确定下 crond.hourly 、 crond.dayly 、logrotate在crond.config中触发没有?

//size没起到作用?

//没小时检查一次,已经操作设定大小的两倍会发生什么?

//要不要create   0644 root  root  ?(添加create之后,日志文件有没有增加内容??)

//首先明确一点:size参数跟滚动周期参数:hourly、daily、monthly、yearly完全是互斥的。即是说,一旦设置了size参数,滚动周期参数就自动无效了,只要每次执行logrotate指令时,demo.txt文件大小超过size,就会触发一次滚动,没有滚动周期一说了。

// /etc/cron/dayliy/下的任务是每天才执行一次

 

 

 

//https://cloud.tencent.com/developer/article/1172687

 

//syslog.conf配置文件

-/var/log/maillog带-的表示,在内存里面暂存,到达一定数量后,才会被写在这个日志中

/var/log/messages其他 不带-的表示实时同步

 

// logrotate

 https://zhuanlan.zhihu.com/p/90507023  (基本使用)

https://www.cnblogs.com/txlsz/p/13126723.html (详细参数)

//syslog的备份需要借助logrotate日志滚动,且logrotate需借助crontab 定时功能

//crontab 会每天定时执行 /etc/cron.daily 目录下的脚本,而这个目录下有个文件叫 logrotate,在 centos 上脚本内容是这样的

执行文件: /usr/sbin/logrotate 主配置文件: /etc/logrotate.conf 自定义配置文件: /etc/logrotate.d/*.conf;
/etc/logrotate.conf - 顶层主配置文件(
[root@gop-sg-192-168-56-103 logrotate.d]# cat /etc/cron.daily/logrotate
#!/bin/sh

/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
),通过 include 指令,会引入 /etc/logrotate.d 下的配置文件;
修改配置文件后,并不需要重启服务。 由于 logrotate 实际上只是一个可执行文件,不是以 daemon 运行

//通常惯用的做法是配合 crontab 来定时调用。
crontab -e
*/30 * * * * /usr/sbin/logrotate /etc/logrotate.d/rsyslog > /dev/null 2>&1 &

//logrotate 是怎么做到滚动日志时不影响程序正常的日志输出呢?logrotate 提供了两种解决方案。 1. create 2. copytruncate

//配置属性rotate 5: 一次将存储 5 个归档日志。对于第六个归档,时间最久的归档将被删除。

//如果等不及cron自动执行日志轮转,想手动强制切割日志/usr/sbin/logrotate -f /etc/logrotate.d/nginx

 

概念

cat /var/log/dmesg 查看,或者使用 dmesg 命令查看(dmesg 专门用来打开 /var/log/dmesg 文件并显示),这些信息都是启动 init 程序之前产生的信息--> 系统控制权由内核转交给 /sbin/init 之后 --> 产生的信息由 syslog 记录(上面 kernel 产生的信息由 klogd 记录并放置于文件中)

 //优先级配置文件/etc/syslog.conf

https://my.oschina.net/u/4267186/blog/3620753

 

1.手动删除

echo /dev/null > /var/log/syslog

2.采用journald服务 https://itlanyan.com/clear-systemd-journal-logs/

/etc/systemd/journald.conf 

[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitInterval=30s
#RateLimitBurst=1000
SystemMaxUse=1G
#SystemKeepFree=
#SystemMaxFileSize=
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=

sudo systemctl restart systemd-journald

 3.logrotate

https://www.coder.work/article/176202

/etc/logrotate.d/syslog配置文件的所有参数

//常用
daily :指定转储周期为每天 weekly :指定转储周期为每周 monthly :指定转储周期为每月 rotate count :指定日志文件删除之前转储的次数,
0 指没有备份,5 指保留 5 个备份
notifempty :如果是空文件的话,不转储
missingok:在日志轮循期间,任何错误将被忽略,例如 “文件无法找到” 之类的错误。
size size:当日志文件到达指定的大小时才转储,bytes (缺省) 及 KB (sizek) 或 MB (sizem)
compress: 通过 gzip 压缩转储以后的日志

//不常用
nocreate: 不建立新的日志文件
dateext # 日志切割后,文件以当前日志为结尾,例如:messages-20181125
create mode owner group : 转储文件,使用指定的文件模式创建新的日志文件
nocopytruncate: 备份日志文件但是不截断
tabooext [+] list:让 logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和~
copytruncate:用于还在打开中的日志文件,把当前日志备份并截断
nocompress: 不压缩
nodelaycompress: 覆盖 delaycompress 选项,转储同时压缩。
delaycompress: 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
ifempty :即使是空文件也转储,这个是 logrotate 的缺省选项。
mail address : 把转储的日志文件发送到指定的 E-mail 地址
errors address : 专储时的错误信息发送到指定的 Email 地址
nomail : 转储时不发送日志文件
noolddir: 转储后的日志文件和当前日志文件放在同一个目录下
olddir directory:储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
prerotate/endscript: 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行


案例//production.log 转储后的名称是 production.2016-07-10.log

dateext
dateformat %Y-%m-%d. # 修改了默认日期后缀,注意后面有一个点(.)

/var/test/production.log{

create 755 www-data www-data
extension log # 后缀为log
}
对于 nginx_access.log ,如果 后缀是 log ,则 文件名是 nginx_access. ,
新文件是由 文件名 + %Y-%m-%d. 格式的日期 + log 后缀组成的,结果是 nginx_access.2021-01-20.log

 

https://blog.csdn.net/xiaojin21cen/article/details/122309230

https://zhuanlan.zhihu.com/p/90507023