最近遇到了一个问题,虽然服务器每天会定时清理日志,但是第二天凌晨,开始,服务仍然有大量的读写操作,平时为了排查问题的方便日志级别是DEBUG级别,产生的日志多到足以占满磁盘空间,这样会导致服务异常。所以希望每天上班时日志级别调整为debug,下班时间日志级别调整为warn,这样,配合日志清理,应该能保证服务正常运行。
实现起来,只需要定时修改日志的配置文件即可,日志配置文件中log4j.rootLogger=DEBUG,hoursize标识当前日志级别为DEBUG,所以修改只需按照需要将DEBUG和WARN进行替换即可。SED命令即可实现该功能,下面的脚本就是实现将WARN替换为DEBUG的功能,反之将将WARN和DEBUG交换位置即可。
#!/bin/bash
cd /opt/app/jcf/adapterServer/etc
sed -i 's/WARN/DEBUG/g' logging.properties
sed的基本语法为:
sed 's/原字符串/替换字符串/'
单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义。
特殊情况,单引号没有办法通过反斜线“\”进行转义的,这时将单引号换成双引号即可:
sed "s/原字符串包含'/替换字符串包含'/"
这里用到的是,替换文件中的匹配项,使用-i的时候才会在文件中修改,其他情况只是打印到屏幕上,并没有进行实质的修改。
# 替换文件中的所有匹配项
sed -i 's/原字符串/替换字符串/g' filename
关于sed的具体用法,可以参考这篇博文,上面介绍的非常清楚
点击打开链接