最近在配置应用服务器时候,遇到一个问题这里跟大家分享一下。一般我们的应用系统都会配上Log4j来记录Log,Log4j也提供两种的Log输 出策略。 DailyRollingFileAppender: 这个根据日期每天产生一个Log文件,但是无法配置他只保留一 定期间,比如说3个月,要不Log会无限制增长,直到把服务器空间不足,配置例子如下: <appender
name="TODO"
class="org.jboss.logging.appender.DailyRollingFileAppender">
<errorHandler
class="org.jboss.logging.util.OnlyOnceErrorHandler"/> <param name="File" value="${jboss.server.home.dir}/log/todo.log"/>
<param name="Append" value="false"/> <!-- Rollover at midnight each day --> <param
name="DatePattern" value="'.'yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout> </appender> RollingFileAppender: 这个可以定义文件大小和最大文件个数,这样可以控制Log的容量大小。
不至于服务器空间不足,但是对于维护人员来说,差错就比较麻烦。 <appender name="TODO"
class="org.jboss.logging.appender.RollingFileAppender">
<errorHandler
class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="File"
value="${jboss.server.home.dir}/log/todo.log"/>
<param name="Append" value="false"/>
<param name="MaxFileSize"
value="100KB"/> <param
name="MaxBackupIndex" value="10"/> <layout
class="org.apache.log4j.PatternLayout"> <param
name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout> </appender> 由于对于web应用来说还有许多 log需要定期删除,比如:http access log mod_jk等等,最后想了一个折中的办法,Log生成还是使用DailyRollingFileAppender的策略。然后在服务器上做一个定期删除 log的服务。下面以Red hat系统简单介绍实现方法,我们这里直接利用了Red hat默认提供的crond定期任务服务。步骤如下 # cd /etc/cron.daily # vi logcron 输入如下内容 #!/bin/sh find
/logs -type f -ctime +30 | xargs rm -rf (这里实现了删除30天之前文件的命令) 然 后保存该文件,最后执行如下命令给该文件服务可执行权限 # chmod +x /etc/cron.daily/logcron 哈 哈,任务完成,如果你想实验下效果可以把该文拷贝到/etc/cron.hourly目录下,然后把系统时间改成整点,你就能够看到30天之前的文件已经 自动被删除了。 关于cron的用法,可以参考网络上的资料应该很多。 |
|