che*_*rit 15 logging tomcat admin
我在Linux系统中使用tomcat 6x.它打印像本地主机的日志文件localhost.2011-06-07,localhost.2011-06-08每天的基础上.我希望在它达到1MB时旋转localhost.
我可以在log4j中为我的网络应用程序轮换日志文件.但是这个tomcat的localhost日志文件,我无法让它旋转.有没有使用logrotate以外的解决方案?
Lam*_*art 15
你不想使用logrotate,或者你的系统管理员不允许你这样做?
鉴于这种限制,我担心(从我能够从文档中学到的东西)没有自动的方法来做你想做的事情(根据大小单独旋转日志文件).
如果您只是想停止Tomcat 每天创建新日志的默认行为(我发现开发环境或低流量站点非常烦人),您当然可以通过更改Access Log"Valve" 的fileDateFormat属性来实现这一点.,在Ubuntu Server上的定义在/etc/tomcat7/server.xml中.它可能位于Tomcat 6的类似位置.
既然你提到了一个限制性的系统管理员,我认为这个服务器不在你的控制之下,所以这条路径是无关紧要的.如果您确实能够修改Tomcat的日志配置,那么希望您知道在哪里可以找到相应的文件.
在该.xml文件中,查找将className设置为"org.apache.catalina.valves.AccessLogValve" 的Valve实体,该部分为您的站点的适当主机配置"Catalina"引擎(在我的情况下为localhost).虽然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" />
Run Code Online (Sandbox Code Playgroud)
要将此更改为每月日志轮换,我只需添加适当的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" />
Run Code Online (Sandbox Code Playgroud)
由于我能够(并且愿意)使用logrotate,因此我完全关闭了Tomcat的内置日志轮换和基于日期的文件命名,只需使用logrotate在日志达到1MB时轮换日志.
编辑为了回答dgrant的问题,改变是/etc/tomcat7/server.xml,并且我正在使用的实际阀门配置是这样的:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
pattern="combined" rotatable="false"
prefix="access_log" />
Run Code Online (Sandbox Code Playgroud)
请注意,"组合"模式与原始配置中的显式模式定义等效(至少对于Tomcat 7).如果您想了解更多内容,请在我的原始文档链接中详细介绍所有这些内容.只需查看rotatable属性部分即可.
您知道,我最终按照Tomcat网站上的说明用Log4J替换了默认的Tomcat日志记录(java.util.logging):http://tomcat.apache.org/tomcat-6.0-doc/logging.html# Using_Log4j
| 归档时间: |
|
| 查看次数: |
46391 次 |
| 最近记录: |