您是否想要使用 logrotate,或者您的系统管理员不允许您使用?
鉴于这一限制,我担心(从我从 documentation 中了解到的情况)没有自动的方法来做你想做的事(仅根据大小轮换日志文件)。
如果您只是想阻止 Tomcat每天创建新日志的默认行为(我觉得这对于开发环境或低流量站点非常烦人),您当然可以通过更改访问日志“Valve”的 fileDateFormat 属性,在 Ubuntu Server 上定义在 /etc/tomcat7/server.xml 中。对于 Tomcat 6,它可能位于类似的位置。
由于您提到了一个限制性的系统管理员,我推测该服务器不受您的控制,因此该路径是无关紧要的。如果您确实有能力修改 Tomcat 的日志配置,希望您知道在哪里可以找到合适的文件。
在该 .xml 文件中,在为相应主机配置“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 属性:
<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,而我使用的实际阀门配置是这样的:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
pattern="combined" rotatable="false"
prefix="access_log" />
请注意,“组合”模式与原始配置中的显式模式定义等效(至少对于 Tomcat 7 而言)。如果您想阅读更多内容,所有这些都在我的原始文档链接中得到了很好的介绍。只需查找有关rotatable 属性的部分。