linux服务器怎么做日志分割

linux服务器怎么做日志分割,第1张

这个脚本是在LNMP论坛看到的,你可以试试

脚本如下:

#!/bin/bash#function:cut nginx log files for lnmp v0.5 and v0.6#author: http://lnmp.org #设置你的日志存放的目录log_files_path="/home/wwwlogs/"#日志以年/月的目录形式存放log_files_dir=${log_files_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")#设置需要进行日志分割的日志文件名称,多个以空格隔开log_files_name=(access www.abc3210.com)#设置nginx的安装路径nginx_sbin="/usr/local/nginx/sbin/nginx"#Set how long you want to savesave_days=30 #############################################Please do not modify the following script #############################################mkdir -p $log_files_dir log_files_num=${#log_files_name[@]} #cut nginx log filesfor((i=0i<$log_files_numi++))domv ${log_files_path}${log_files_name[i]}.log ${log_files_dir}/${log_files_name[i]}_$(date -d "yesterday" +"%Y%m%d").logdone #delete 30 days ago nginx log filesfind $log_files_path -mtime +$save_days -exec rm -rf {} \

$nginx_sbin -s reload

把上面的保存为.sh文件,然后给上可执行权限,再配合Linux的计划任务,完美拉~~~

有些服务,会自动产生大量的日志文件,如果不限制,会占用磁盘空间。

如果单纯的用定时任务crontab删除,又不太灵活,这时需要日志神器logrotate。

logrotate工具是系统自带为了方便进行日志管理而产生的一个工具。

系统会定时运行 logrotate,一般是每天一次。也是基于定时任务crontab运行的。

配置文件:

主配置文件的位置在 /etc/logrotate.conf,一般配置在 /etc/logrotate.d/子目录下。

如系统默认日志配置:

配置文件参数:

更多信息请参考man logrotate帮助文档

模板是通用的,而配置参数则根据你的需求进行调整,不是所有的参数都是必要的。

在上面的配置文件中,我们只想要轮询一个日志文件,size=50M 指定日志文件大小可以增长到 50MB,dateext 指 示让旧日志文件以创建日期命名。

可自行参考/etc/logrotate.d/目录下系统默认的文件。

logrotate命令:

具体 logrotate 命令格式如下:

要为某个特定的配置调用 logrotate:

排障过程中的最佳选择是使用-d选项以预演方式运行 logrotate。要进行验证,不用实际轮循任何日志文件, 可以模拟演练日志轮循并显示其输出。

正如我们从上面的输出结果可以看到的,logrotate 判断该轮循是不必要的。如果文件的时间小于一天,就会发生了。

强制轮循即使轮循条件没有满足,我们也可以通过使用-f选项来强制 logrotate 轮循日志文件,-v参数提供了详细的输出。

个人项目配置:

项目每天可产生20G左右的日志,显示不能做每日轮询,所以额外需要添加定时任务做每小时,或者每隔多少分钟。

如果轮询日志异常报错如下:

error: skipping “” because parent directory has insecure permissions (It’s world writable or writable by group which is not “root”) Set “su” directive in config file to tell logrotate which user/group should be used for rotation.”

需要加 su root root 选项。

同时添加定时任务:

定时任务说明:

第一条,每隔40分钟轮询执行一次logrotate任务。

第二条,每天凌晨4点删除前一天的日志,原因如下:

由于项目系统产生日志格式的原因,会导致以下情况:

如果昨天的分割到4个后(或者1,2,3),时间到第二天后,没法转储递增,会一直停留在4,没法删除,每天会有,久而久之,也会占用磁盘空间。所以需要定时删除。

设置完成

开启定时任务日志,以便查看定时任务是否执行。后续可取消。

重启rsyslog

linux下处理tomcat日志切割与删除 *** 作:System.out和System.err都被打印到catalina.out。catalina.out不会rotate。一般在部署tomcat后,运行久了,catalina.out文件会越来越大,对系统的稳定造成了一定的影响。1、可通过修改conf/logging.properties日志配置文件来屏蔽掉这部分的日志信息。将level级别设置成WARNING就可以大量减少日志的输出,当然也可以设置成OFF,直接禁用掉。一般日志的级别有:2、使用cronolog工具切分Tomcat的catalina.out日志文件,下载、安装cronolog。用which cronolog可以查到安装的路径,这个路径待会在修改catalina.sh时会用到。修改catalina.sh 将183行修改成184行内容,注释掉355行,368、369行替换成370、371行,379、380行替换成381、382行。这样在/usr/local/tomcat/logs每天会自动生成catalina.%Y-%m-%d.out文件,下面要做的是定期清理这些过期的文件,可以通过crontab来实现。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7191583.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存