【问题标题】:How to log application auditing to separate file on Wildfly 8如何在 Wildfly 8 上将应用程序审计记录到单独的文件中
【发布时间】:2015-02-14 11:50:02
【问题描述】:

我有一个在 Wildfly 8 上运行的 Java EE 应用程序,我想在其中启用审计日志记录。使用 InterceptorBinding 和 Interceptor 我能够捕获所有相关的 API 调用。

我想做的是将这些审计调用写入单独的审计日志文件。我尝试使用 logback 实现这一点,并在this stackoverflow question 中的第二个答案的帮助下,我终于设法做到了。第一个回复,即禁用系统日志记录,没有奏效。但是,虽然此解决方案成功地将我的审计跟踪写入单独的文件,但所有其他日志记录都停止写入其默认文件,并且仅输出到控制台。

我想要实现的是默认情况下将所有常规日志记录写入常规文件(即 server.log),但将我自己的自定义审核日志消息放在单独的文件中(也每天滚动)基础上,将旧文件重命名为写入日期)。

无论是使用 Logback、log4j、Wildfly 自己的日志系统还是 Wildfly CLI 审计日志,都无关紧要,只要它以最小的开销达到目的即可。我现阶段正在考虑使用简单的输出流将其写入我自己的文件中,但是当有解决方案可以更有效地执行此操作时,这感觉相当多余。

这是我的 logback 文件的样子:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="AUDIT-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/Applications/wildfly/standalone/log/logback/audit/audit.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>logFile.%d{yyyy-MM-dd}.log</FileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS}: - %msg%n</pattern>
        </encoder>
    </appender>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>/Applications/wildfly/standalone/log/logback/server.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>logFile.%d{yyyy-MM-dd}.log</FileNamePattern>
        </rollingPolicy>
        <encoder>
            <Pattern>%d{HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} - %msg%n</Pattern>
        </encoder>
    </appender>
    <logger name="audit" level="INFO" additivity="false">
        <appender-ref ref="AUDIT-FILE"/>
    </logger>
    <logger name="org.jboss.resteasy.core.ExceptionHandler" level="ALL">
        <appender-ref ref="FILE" />
    </logger>
    <root level="ALL">
        <appender-ref ref="FILE"/>
    </root>
</configuration>

【问题讨论】:

    标签: java logging wildfly audit


    【解决方案1】:

    我终于通过修改 Wildfly 中的standalone.xml 文件来实现我想要的。我添加了一个使用此文件处理程序的自定义文件处理程序和记录器。不需要自定义 logback 实现或类似的东西。

        <subsystem xmlns="urn:jboss:domain:logging:2.0">
            <console-handler name="CONSOLE">
                <level name="INFO"/>
                <formatter>
                    <named-formatter name="COLOR-PATTERN"/>
                </formatter>
            </console-handler>
            <periodic-rotating-file-handler name="FILE" autoflush="true">
                <formatter>
                    <named-formatter name="PATTERN"/>
                </formatter>
                <file relative-to="jboss.server.log.dir" path="server.log"/>
                <suffix value=".yyyy-MM-dd"/>
                <append value="true"/>
            </periodic-rotating-file-handler>
            <periodic-rotating-file-handler name="MYHANDLER" autoflush="true">
                <formatter>
                    <named-formatter name="PATTERN"/>
                </formatter>
                <file relative-to="jboss.server.log.dir" path="application-audit.log"/>
                <suffix value=".yyyy-MM-dd"/>
                <append value="true"/>
            </periodic-rotating-file-handler>
            <logger category="com.mycompany.myapplication">
                <level name="INFO"/>
                <handlers>
                    <handler name="MYHANDLER"/>
                </handlers>
            </logger>
            <logger category="com.arjuna">
                <level name="WARN"/>
            </logger>
            <logger category="org.apache.tomcat.util.modeler">
                <level name="WARN"/>
            </logger>
            <logger category="org.jboss.as.config">
                <level name="DEBUG"/>
            </logger>
            <logger category="sun.rmi">
                <level name="WARN"/>
            </logger>
            <logger category="jacorb">
                <level name="WARN"/>
            </logger>
            <logger category="jacorb.config">
                <level name="ERROR"/>
            </logger>
            <logger category="org.jboss.security">
                <level name="TRACE"/>
            </logger>
            <root-logger>
                <level name="INFO"/>
                <handlers>
                    <handler name="CONSOLE"/>
                    <handler name="FILE"/>
                </handlers>
            </root-logger>
            <formatter name="PATTERN">
                <pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
            </formatter>
            <formatter name="COLOR-PATTERN">
                <pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
            </formatter>
        </subsystem>
    

    【讨论】:

      猜你喜欢
      • 2017-12-31
      • 2017-01-31
      • 1970-01-01
      • 1970-01-01
      • 2017-01-29
      • 2016-02-26
      • 2015-12-09
      • 2019-01-31
      • 1970-01-01
      相关资源
      最近更新 更多