首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何轮换tomcat localhost日志?

问如何轮换tomcat localhost日志?
EN

Stack Overflow用户
提问于 2011-06-08 20:22:05
回答 4查看 58.3K关注 0票数 17

我在Linux系统中使用tomcat 6x。它每天打印一个本地主机日志文件,如localhost.2011-06-07、localhost.2011-06-08。我想在本地主机达到1MB时对其进行轮换。

我可以在log4j中为我的web应用程序轮换日志文件。但是tomcat的这个本地主机日志文件,我不能让它旋转。除了使用logrotate之外,还有其他的解决方案吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-01 02:54:39

您是不想使用logrotate,还是sys管理员不允许您使用logrotate?

考虑到这种限制,我担心(根据我从documentation学到的),没有自动的方法来完成您想要的操作(仅根据大小来轮换日志文件)。

如果您只想停止Tomcat每天创建新日志的默认行为(我发现这对于开发环境或低流量站点非常恼人),您当然可以通过更改访问日志"Valve“的fileDateFormat属性来实现,在Ubuntu Server上,访问日志”Valve“是用/etc/tomcat7/server.xml.定义的它可能在Tomcat6的类似位置。

由于您提到了受限的sys管理员,因此我猜测此服务器不在您的控制之下,因此路径无关紧要。如果您能够修改Tomcat的日志配置,希望您知道在哪里可以找到合适的文件。

在.xml文件中,在为您站点(在我的例子中是本地主机)的适当主机配置"Catalina“引擎部分中,查找className设置为"org.apache.catalina.valves.AccessLogValve”的阀门实体。尽管Tomcat6文档没有提到它,但是可以推断默认的fileDateFormat是"yyyy-MM-dd“。在日志文件名中包含日期会告诉Tomcat (这意味着),您还希望每天轮换日志。如果你想轮换,比如说,一个月只轮换一次,只要把fileDateFormat改成"yyyy-MM“即可。

在我的服务器上,默认的日志记录阀定义如下:

代码语言:javascript
复制
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log." suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />

要将其更改为每月日志轮换,我只需添加适当的fileDateFormat属性:

代码语言:javascript
复制
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           fileDateFormat="yyyy-MM" prefix="localhost_access_log." suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />

因为我能够(并且愿意)使用logrotate,所以我完全关闭了Tomcat内置的日志轮换和基于日期的文件命名,只需在日志达到1MB时使用logrotate轮换日志。

编辑要回答dgrant的问题,更改是针对/etc/tomcat7/server.xml的,而我使用的实际阀门配置如下:

代码语言:javascript
复制
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
       pattern="combined" rotatable="false"
       prefix="access_log" />

请注意,“组合”模式等同于(至少对于Tomcat7)原始配置中的显式模式定义。如果您想阅读更多内容,可以在我的原始文档链接中很好地介绍这些内容。只需查找有关rotatable属性的部分。

票数 20
EN

Stack Overflow用户

发布于 2011-07-13 02:42:41

正如您所知道的,我最终按照Tomcat网站上的说明将默认的Tomcat日志记录(java.util.logging)替换为Log4J:http://tomcat.apache.org/tomcat-6.0-doc/logging.html#Using_Log4j

票数 7
EN

Stack Overflow用户

发布于 2015-04-20 21:32:31

这在Tomcat7上应该很简单:see this docs

renameOnRotate属性

默认情况下,对于可循环的日志,活动访问日志文件名将包含fileDateFormat中的当前时间戳。在轮换期间,该文件被关闭,并创建并使用名称中具有下一个时间戳的新文件。将renameOnRotate设置为true时,时间戳不再是活动日志文件名的一部分。只有在循环期间,文件才会关闭,然后重命名以包含时间戳。这类似于大多数日志框架在执行基于时间的轮换时的行为。默认值: false

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6278614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档