我在Linux系统中使用tomcat 6x。它每天打印一个本地主机日志文件,如localhost.2011-06-07
,localhost.2011-06-08
。我想在本地主机达到1MB时旋转它。
我可以在log4j中为我的网络应用程序轮换日志文件。但是这个tomcat的localhost日志文件,我无法让它旋转。除了使用logrotate之外,有没有其他解决方案?
答案 0 :(得分:15)
你不希望使用logrotate,或者你的系统管理员不允许你这样做?
考虑到这种限制,我害怕(从我能够从documentation学到的东西),没有自动的方法来做你想要的事情(根据大小单独旋转日志文件)。
如果您只想停止Tomcat每天创建新日志的默认行为(我觉得这对于开发环境或低流量网站非常烦人),您当然可以通过更改来实现此目的Access Log“Valve”的 fileDateFormat 属性,在Ubuntu Server上定义在 /etc/tomcat7/server.xml 中。它可能位于Tomcat 6的类似位置。
由于您提到了限制性的sys管理员,我认为该服务器不在您的控制之下,因此该路径无关紧要。如果您确实能够修改Tomcat的日志配置,那么希望您知道在哪里可以找到相应的文件。
在该.xml文件中,在为适当主机配置“Catalina”引擎的部分中查找将 className 设置为“org.apache.catalina.valves.AccessLogValve”的Valve实体为您的网站(在我的情况下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" />
要将此更改为每月日志轮换,我只需添加相应的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的内置日志轮换和基于日期的文件命名,只需使用logrotate在日志达到1MB时轮换日志。
编辑要回答dgrant的问题,更改是/etc/tomcat7/server.xml
,而我正在使用的实际阀门配置是:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
pattern="combined" rotatable="false"
prefix="access_log" />
请注意,'组合'模式与原始配置中的显式模式定义相同(至少对于Tomcat 7)。如果您想了解更多信息,请在我的原始文档链接中详细介绍所有这些内容。只需查看rotatable
属性上的部分。
答案 1 :(得分:6)
您知道,我最终按照Tomcat网站上的说明用Log4J替换了默认的Tomcat日志记录(java.util.logging):http://tomcat.apache.org/tomcat-6.0-doc/logging.html#Using_Log4j
答案 2 :(得分:2)
在Tomcat 7上应该很容易:see this docs
默认情况下,可旋转日志将显示活动访问日志文件名 包含fileDateFormat中的当前时间戳。在旋转期间 文件已关闭,名称中包含下一个时间戳的新文件 创建和使用。将renameOnRotate设置为true时,时间戳 不再是活动日志文件名的一部分。仅在轮换期间 文件已关闭,然后重命名以包含时间戳。这是 类似于基于时间的大多数日志框架的行为 回转。默认值:false
答案 3 :(得分:1)
我正在使用 mmlog
,这是一个简单、轻量且非侵入性的工具。请参考“https://github.com/liurui-1/mmlog”。我已经在生产系统中使用它很多年了。
例如,您的 Tomcat 安装在 Linux/x64 上并且位于目录“TOMCAT_HOME=/opt/apache-tomcat-9.0.44”中。对于 Linux,从页面 https://github.com/liurui-1/mmlog/blob/master/build/linux.amd64/mmlog 向下 mmlog
并复制到目录“$TOMCAT_HOME/bin”。使用以下命令启动Tomcat。然后你让你的 Tomcat 日志轮换。更多详情请参考“https://github.com/liurui-1/mmlog”。
export TOMCAT_HOME=/opt/apache-tomcat-9.0.44
export CATALINA_OUT_CMD="nohup $TOMCAT_HOME/bin/mmlog"
export MM_LOGFILE=$TOMCAT_HOME/logs/tomcat
export MM_LOGSIZE=1000000
$TOMCAT_HOME/bin/startup.sh