我在Linux系统中使用tomcat 6x。它打印像本地主机的日志文件localhost.2011-06-07,localhost.2011-06-08每天的基础上。我想在达到1MB时旋转localhost。
localhost.2011-06-07
localhost.2011-06-08
我可以为我的Web应用旋转log4j中的日志文件。但是这个tomcat的localhost日志文件,我无法使其旋转。除了使用logrotate以外,还有其他解决方案吗?
您 不想 使用logrotate,还是您的系统管理员不允许您这样做?
鉴于这种限制,我恐怕(从我从文档中学到的知识)没有自动方法来做您想要的事情(仅根据大小旋转日志文件)。
如果您只想停止Tomcat 每天 创建新日志的默认行为(我发现这对于开发环境或低流量站点非常烦人),则可以通过更改访问日志“ Valve” 的 fileDateFormat 属性来做到这一点。,它在Ubuntu Server上定义在 /etc/tomcat7/server.xml中 。对于Tomcat 6,它可能位于类似的位置。
由于您提到了严格的sys admin,因此我认为该服务器不受您的控制,因此该路径无关紧要。如果您确实能够修改Tomcat的日志配置,则希望您知道在哪里可以找到适当的文件。
在该.xml文件中,在为您的站点的适当主机(在本例中为localhost)配置“ Catalina”引擎的部分中,查找 className 设置为“ org.apache.catalina.valves.AccessLogValve” 的Valve实体。尽管Tomcat 6文档没有提及它,但是可以推断出默认的fileDateFormat为“ yyyy-MM- dd”。将日期包括在日志文件名中会告诉Tomcat(暗示)您也希望日志每天循环。如果您想使其轮换,例如每月仅旋转一次,只需将fileDateFormat更改为“ yyyy-MM”。
在我的服务器上,默认的Logging Valve定义是:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
要将其更改为每月日志轮换,我只需添加适当的fileDateFormat属性:
fileDateFormat
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" fileDateFormat="yyyy-MM" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
由于我能够(并愿意)使用logrotate,因此我已完全关闭了Tomcat的内置日志轮换和基于日期的文件命名,并且只要日志达到1MB,就可以使用logrotate来轮换日志。
编辑 为了回答dgrant的问题,将更改为/etc/tomcat7/server.xml,而我正在使用的实际阀门配置是这样的:
/etc/tomcat7/server.xml
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="combined" rotatable="false" prefix="access_log" />
请注意,“组合”模式与原始配置中的显式模式定义等效(至少对于Tomcat 7而言)。如果您想了解更多,所有这些都可以在我的原始文档链接中找到。只需在rotatable属性上查找该部分。
rotatable