如何从tomcat日志中删除日期模式

时间:2010-12-22 17:27:14

标签: tomcat logging

默认情况下,Tomcat将日期附加到日志文件,例如localhost.2010-12-22.log,与catalina日志相同。我不想在日志文件中的日期,我似乎无法找到如何删除它。日志记录文档没有说明日期模式。非常感谢任何想法。

http://tomcat.apache.org/tomcat-6.0-doc/logging.html

9 个答案:

答案 0 :(得分:25)

其他答案都没有给我太多帮助,尽管托马斯是最接近的。我找到的文件是:

所以我将以下内容添加到Tomcat的logging.properties文件中。这将从localhost日志和Tomcat默认日期的其他三种日志类型中删除日期:

    1catalina.org.apache.juli.FileHandler.rotatable = false
   2localhost.org.apache.juli.FileHandler.rotatable = false
     3manager.org.apache.juli.FileHandler.rotatable = false
4host-manager.org.apache.juli.FileHandler.rotatable = false
   #
   # default is true, which causes a date to be added to the filename

    1catalina.org.apache.juli.FileHandler.suffix = log
   2localhost.org.apache.juli.FileHandler.suffix = log
     3manager.org.apache.juli.FileHandler.suffix = log
4host-manager.org.apache.juli.FileHandler.suffix = log
   #
   # default is .log, but without date, the extra dot is not needed

答案 1 :(得分:5)

de_simakov's answer大部分都是正确的 - 但它有一个字母拼写错误。在conf / server.xml中找到与此类似的配置

<Valve className="org.apache.catalina.valves.AccessLogValve"
      directory="logs"  prefix="http_access" suffix="log"  pattern="common" 
      rotatable="false" resolveHosts="false" />

请注意 rotate =“false”属性。

答案 2 :(得分:4)

您链接到的文档用于在应用程序中进行日志记录,而不是用于Tomcat服务器本身的日志记录。如另一个答案所述,相应的文档是here。在Ubuntu Server系统上,您需要更改/etc/tomcat7/server.xml中的设置。此文件可能位于系统的其他位置。

与此类似的配置将阻止Tomcat将日期放在日志文件名中 - 但它也会阻止您的访问日志被Tomcat轮换,这可能是一个坏主意,除非您设置一个合适的< strong> logrotate 服务器配置。

<Valve className="org.apache.catalina.valves.AccessLogValve"
      directory="logs"  prefix="http_access" suffix="log"  pattern="common" 
      rotateable="false" resolveHosts="false" />

答案 3 :(得分:2)

Tomcat中默认JULI日志记录的魔术属性是“可循环”的。 通常,有两个地方在默认安装中定义了日志记录:logging.properties和服务器配置(server.xml)。

对于logging.properties,您应该使用: 1catalina.org.apache.juli.FileHandler.rotatable = false

对于服务器配置,它看起来像这样:

&lt; Valve className =“org.apache.catalina.valves.AccessLogValve”directory =“prefix =”access_log“suffix =”。txt“rotating =”false“pattern =”%h%l%u%t“ %r“%s%b”/&gt;

请查看此处了解更多详情:

http://tomcat.apache.org/tomcat-7.0-doc/config/valve.html#Access_Log_Valve

答案 4 :(得分:2)

对你的直接问题更合适的答案是布尔&#34; renameOnRotate&#34;。假设您需要每日记录,但不想要时间戳。这将根据前缀/后缀命名文件,并在日志文件旋转后将时间戳附加到日志文件中:

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access" suffix=".log" renameOnRotate="true"
           pattern="%a %A %h %H %l %m %t %u %U &quot;%r&quot; %s %b " resolveHosts="false" />

答案 5 :(得分:2)

在Tomcat 7上应该很容易:see this docs

renameOnRotate属性

  

默认情况下,可旋转日志将显示活动访问日志文件名   包含fileDateFormat中的当前时间戳。在旋转期间   文件已关闭,名称中包含下一个时间戳的新文件   创建和使用。将renameOnRotate设置为true时,时间戳   不再是活动日志文件名的一部分。仅在轮换期间   文件已关闭,然后重命名以包含时间戳。这是   类似于基于时间的大多数日志框架的行为   回转。默认值:false

答案 6 :(得分:1)

Tomcat的日志记录受<Valve>配置元素的约束,通常位于server.xmlcontext.xml。这些允许您控制数据后缀等内容。

Here's the docs for the access log value,我假设你是localhost.2010-12-22.log的意思。不确定catalina.out,但必须使用类似的机制。

答案 7 :(得分:0)

答案引用&#34; renameOnRotate&#34;错了。这仅适用于访问日志,而不适用于&#34; main&#34;记录(这是问题所需要的,因为他引用了#localhost&#39; log。

如果你需要两个日志轮换而不是时间戳(通常是这种情况),坏消息是tomcat不可能开箱即用:(

在这种情况下,最好的解决方案是将其配置为全局使用log4j,这样更灵活,并允许您以这种方式进行设置。

答案 8 :(得分:0)

我知道这很旧,但是对于使用logrotate.d的完整示例,请记住用您的tomcat版本替换。您必须同时编辑server.xml和logging.properties,然后编辑/创建logrotate配置。另外,您的配置文件路径可能不同。

logrotate配置:

vi /etc/logrotate.d/tomcat<version>
/var/log/tomcat<version>/catalina.out 
{
    daily
    rotate 12
    compress
    copytruncate
    create 640 tomcat adm
}
/var/log/tomcat<version>/*.log
{
    daily
    rotate 12
    compress
    copytruncate
    missingok
    sharedscripts
    postrotate
      if invoke-rc.d tomcat<version> status > /dev/null 2>&1; then \
        invoke-rc.d tomcat<version> restart > /dev/null 2>&1; \
      fi;
    endscript
}

server.xml配置:我还删除了_log。从前缀开始,因此变成localhost_access.log

vi /var/lib/tomcat<version>/conf/server.xml
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
  prefix="localhost_access" suffix=".log" rotatable="false"
  pattern="%h %l %u %t &quot;%r&quot; %s %b" />

logging.properties配置:

vi /var/lib/tomcat<version>/conf/logging.properties
1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
1catalina.org.apache.juli.FileHandler.suffix = log
1catalina.org.apache.juli.FileHandler.rotatable = false

2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.
2localhost.org.apache.juli.FileHandler.suffix = log
2localhost.org.apache.juli.FileHandler.rotatable = false

3manager.org.apache.juli.FileHandler.level = FINE
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.FileHandler.prefix = manager.
3manager.org.apache.juli.FileHandler.suffix = log
3manager.org.apache.juli.FileHandler.rotatable = false

4host-manager.org.apache.juli.FileHandler.level = FINE
4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.FileHandler.prefix = host-manager.
4host-manager.org.apache.juli.FileHandler.suffix = log
4host-manager.org.apache.juli.FileHandler.rotatable = false