当前位置: 首页 > 面试题库 >

如何在Wildfly 8上记录应用程序审核以分离文件

丁弘新
2023-03-14
问题内容

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

我要做的是将这些审核调用写入单独的审核日志文件。我尝试使用logback来实现这一点,并且在这个问题中的第二个答案的帮助下,我终于做到了。第一个答复(即禁用系统日志记录)不起作用。但是,虽然此解决方案成功地将我的审核跟踪写入一个单独的文件,但所有其他日志记录都停止写入其默认文件,而仅输出到控制台。

我要实现的是将所有常规日志记录都默认写入常规文件(即server.log),但要在单独的文件中拥有我自己的自定义审核日志消息(也每天滚动,重命名)旧文件,直到其被写入为止)。

无论是通过Logback,log4j,Wildfly自己的日志记录系统,甚至是Wildfly
CLI审核日志来完成,只要达到目的且开销最小,就无关紧要。我目前正在考虑使用简单的输出流将其写入我自己的文件中,但是当有解决方案应该更有效地执行此操作时,这感觉是多余的。

这是我的注销文件的样子:

<?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>


 类似资料:
  • 如果配置了邮箱,用户提交审核之后会给管理员发送邮件,邮件里带有审核地址。 或者您也可以在应用列表里找到未审核的应用进入。 审核应用 提交的基础信息 生成的kubernetes yaml 代码库中的Dockerfile文件 驳回 如果管理员觉得提交的有问题,可以进行驳回,驳回填定理由会发送至提交者的邮箱。 若没有啥问题,可以点击“开始部署”按钮。 开始部署之后应用会自动在jenkins上创建一个jo

  • 本文向大家介绍如何使用户登录离线Web应用程序?,包括了如何使用户登录离线Web应用程序?的使用技巧和注意事项,需要的朋友参考一下 在在线登录时,您首先需要针对服务器进行身份验证,如果可以,请在数据库中存储用户名和哈希密码。 如果可以在数据库中找到该帐户,则仅当用户自上次登录以来已更改密码时,才需要生成一个新的哈希。 您还需要针对本地数据库进行身份验证。使用该应用的在线版本至少登录一次。

  • 声明 FinClip小程序需给用户提供良好的体验。提供具有价值的内容,遵守国家相关法律法规,不提供违法或违反相关规则的内容或从事相关行为;不从事过度营销行为,鼓励广大开发者向用户提供符合需求的内容或实用工具。 小程序的开发者或运营者,需对小程序项下的应用或服务承担法律责任,我们不因审核行为而被认定为小程序的提供方或共同提供方,且不因审核需对小程序项下的应用或服务承担责任。 一、小程序命名审核规范

  • 我使用的是JBOSS-7.0,并且希望基于War文件来分离应用程序日志,即我有war1和war2,因此应该基于war1.log和war2.log这样的独立日志文件来生成。现有的日志记录配置是standalone.xml。我读过Jboss给出的这个链接,但是他们给出的配置是在jboss-log4j.xml文件中,而不是standalone.xml日志模块更改。 有人能建议在JBOSS-7.0中为每个

  • 本文向大家介绍微信小程序代码上传、审核发布小程序,包括了微信小程序代码上传、审核发布小程序的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了微信发布小程序的具体步骤,供大家参考,具体内容如下 1.打开微信开发者工具 管理员扫码 -> 填写好小程序的项目目录、AppID(必须是客户已注册好的AppID)、项目名称   2.在app.js中修改id(客户登录后台管理系统的id),app.j

  • 问题内容: 我维护一个定制的类似CMS的应用程序。 每当提交文档时,都会执行一些任务,这些任务可以大致分为以下几类: MySQL查询。 HTML内容解析。 搜索索引更新。 类别1包括对与文档内容有关的各种MySQL表的更新。 类别2包括对存储在MySQL LONGTEXT字段中的HTML内容的解析,以执行一些自动锚标记转换。我怀疑此任务花费了大量计算时间。 类别3仅使用与文档相对应的几个字段就对基