在JBoss EAP 7访问日志上执行每小时logrotate

时间:2017-12-04 06:22:41

标签: jboss jboss-eap-7

默认情况下,JBoss EAP 7每天轮换其访问日志。 我需要将其设置为喜欢,只需要。

原因

  • 我们有一个脚本可以自动下载已旋转的访问日志文件。
  • 但这样做会大大增加CPU使用率(因为当天结束时的访问日志非常大,而且下载时我们的系统性能不幸降低了)

我所知道的是,在 standalone.xml 中,我尝试添加以下内容以使JBoss 服务器日志每小时轮换一次。

    <suffix value=".yyyy-MM-dd-HH"/>

但是这种方法不适用于访问日志(因为它的设置奇怪地放在standalone.xml的不同部分)

我尝试过使用access-log标签进行以下任何操作。但它只会引发错误。

  1. <access-log suffix=".yyyy-MM-dd-HH" ...
  2. <access-log rotate="hourly" ...
  3. ...而且我似乎无法找到关于JBoss EAP 7的 standalone.xml 的非常详细的指南。我认为我应该使用标记值access-log部分。

    请帮忙。有谁知道这样做的方法? :(

    系统规格

    • Oracle Linux 6.9
    • JBoss EAP 7

    谢谢和最诚挚的问候。

1 个答案:

答案 0 :(得分:0)

尝试以下

<subsystem xmlns="urn:jboss:domain:logging:3.0">
    ...(snip)...
    <!-- size-based log rotation -->
    <size-rotating-file-handler name="access-log" autoflush="true">
        <formatter>
            <named-formatter name="access-log-formatter"/>
        </formatter>
        <file relative-to="jboss.server.log.dir" path="access.log"/>
        <rotate-size value="10m"/>
        <max-backup-index value="10"/>
        <append value="true"/>
    </size-rotating-file-handler>
    <! -- or custom interval (hourly) log rotation
    <periodic-rotating-file-handler name="access-log-custom" autoflush="true">
        <formatter>
            <named-formatter name="access-log-formatter"/>
        </formatter>
        <file relative-to="jboss.server.log.dir" path="access.log"/>
        <suffix value=".yyyy-MM-dd-HH"/>
        <append value="true"/>
    </periodic-rotating-file-handler>
    --->
    ...(snip)...
    <logger category="io.undertow.accesslog" use-parent-handlers="false">
        <handlers>
            <handler name="access-log"/>
        </handlers>
    </logger>
    ...(snip)...
    <formatter name="access-log-formatter">
        <pattern-formatter pattern="%s%n"/>
    </formatter>
</subsystem>

...(snip)...

<subsystem xmlns="urn:jboss:domain:undertow:3.1" statistics-enabled="true">
    ...(snip)...
    <server name="default-server">
        <http-listener name="default" socket-binding="http" redirect-socket="https" record-request-start-time="true"/>
        <host name="default-host" alias="localhost">
            ...(snip)...
            <access-log use-server-log="true" pattern="%h %l %u %t &quot;%r&quot; %s %b &quot;%{i,Referer}&quot; &quot;%{i,User-Agent}&quot; &quot;%{i,COOKIE}&quot; &quot;%{o,SET-COOKIE}&quot; %S &quot;%I&quot; %T"/>
            ...(snip)...
        </host>
    </server>
    ...(snip)...
</subsystem>