分享

Log4j中Log文件定期删除的问题-指指四方-搜狐博客

 minwh 2010-05-19

最近在配置应用服务器时候,遇到一个问题这里跟大家分享一下。一般我们的应用系统都会配上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的用法,可以参考网络上的资料应该很多。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多