脚本如下:
#!/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来实现。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)