gpt4 book ai didi

java - 如何将应用程序审计记录到 Wildfly 8 上的单独文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:13:28 25 4
gpt4 key购买 nike

我有一个在 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>

最佳答案

我终于通过修改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>

关于java - 如何将应用程序审计记录到 Wildfly 8 上的单独文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27500038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com