【问题标题】:How to delete Tomcat Access Log after n days?n天后如何删除Tomcat访问日志?
【发布时间】:2011-02-15 20:28:35
【问题描述】:

我只想保留 Tomcat 访问日志阀创建的最近 n 天的访问日志。 http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html#Access%20Log%20Valve

但似乎没有配置属性来定义保留日志文件的时间?我猜这是因为“访问日志阀”只创建日志文件而不删除它们,对吗?

【问题讨论】:

    标签: tomcat logging


    【解决方案1】:

    默认情况下,rotatable 对访问日志为 true,因此您将每 24 小时创建一个新文件。

    Tomcat 本身不会对旧文件做任何内务处理,Unix 系统的一般原则是在系统上设置一个 cron 作业,将旧文件归档到备份目录和/或删除它们。

    【讨论】:

    • 感谢您的回答。您证实了我的假设,即需要通过 cronjob(或 Windows 上的 Visual Basic 脚本)删除文件。
    • 如何删除旧日志?我确实尝试在修改时间这样做,但在某些情况下,日志文件已被其他进程/用户修改,因此没有及时删除......
    • Preety old 但是,如果有人在某个时候遇到这个问题,请留下问题的答案。 stackoverflow.com/questions/8962477/…
    • 这并不完全正确。 Catalina 支持 maxDays 参数。 tomcat.apache.org/tomcat-7.0-doc/logging.html
    • @ValerioBozz 不适用于访问日志 - maxDays 不能在那里使用,因为它不使用 log4j 进行日志记录。
    【解决方案2】:

    您可以尝试创建 logrotate 配置:

    #cat /etc/logrotate.d/tomcat
    /var/log/tomcat/*.log {
            su tomcat tomcat
            copytruncate  
            daily  
            rotate 6  
            compress  
            missingok
    }
    

    “su tomcat tomcat” - 我添加是为了避免错误权限导致 logrotate 错误

    【讨论】:

      【解决方案3】:

      对于 Windows,基于 Erwan 在 Tomcat localhost_access_log files cleanup 中的回答,对于给定文件夹并递归到所有子文件夹:

      forfiles /p "C:\path\to\httplogs\" /s /m *.log /d -10 /c "cmd /c del @PATH"
      

      要测试,只需使用:

      forfiles /p "C:\path\to\httplogs\" /s /m *.log /d -10 /c "cmd /c dir /b @PATH"
      

      如果日志文件夹中有多个后缀,例如.txt.log,请参阅using FORFILES in batch to delete tmp and bak files older than a week

      for %%t in (.txt, .log) do forfiles /p "C:\path\to\httplogs\" /s /m *%%t /d -10 /c "cmd /c del @PATH"
      

      【讨论】:

        【解决方案4】:

        Apache Tomcat 7.0 的情况。您可以使用 maxDays 参数来删除旧的日志文件。 https://tomcat.apache.org/tomcat-7.0-doc/config/valve.html

        【讨论】:

          【解决方案5】:

          对于 Tomcat 7,您可以配置 tomcat/conf/logging.properties。示例:

          1catalina.org.apache.juli.FileHandler.maxDays = 90
          

          注意:1 不是错字。

          https://tomcat.apache.org/tomcat-7.0-doc/logging.html

          注意:这不会影响访问日志文件,这些文件由访问日志阀处理,而不是由主 Tomcat (Apache Commons) 日志记录。

          【讨论】:

          • 这不会影响访问日志文件,这些文件由 Access Log Valve 处理,而不是由主 Tomcat (Apache Commons) 日志记录。
          • 谢谢@SteveHart,我已经用你有用的注释更新了答案。
          【解决方案6】:

          在终端运行:

          locate RELEASE-NOTES | egrep 'tomcat|apache' | xargs grep "Apache Tomcat Version"
          

          【讨论】:

            【解决方案7】:

            对于 tomcat 9,它是访问日志配置的一部分。见http://tomcat.apache.org/tomcat-9.0-doc/config/valve.html#Access_Logging

            最大天数
            轮换访问日志的最大天数将在被删除之前保留。如果不指定,将使用默认值-1,这意味着永远不会删除旧文件。

            【讨论】:

              【解决方案8】:

              如果你在spring boot中使用tomcat,你可以使用server.tomcat.accesslog.max-days=3删除e之后的旧文件。 G。 3 天。

              使用 Spring Boot 记录访问日志的最小工作配置是:

              server.tomcat.accesslog.enabled=true
              server.tomcat.accesslog.directory=C:/path/to/dir
              server.tomcat.accesslog.max-days=3
              

              参考资料:

              【讨论】:

                猜你喜欢
                • 2014-01-27
                • 2023-04-07
                • 2011-07-30
                • 2018-01-14
                • 1970-01-01
                • 1970-01-01
                • 2014-06-29
                • 1970-01-01
                • 2016-07-10
                相关资源
                最近更新 更多