当前位置: 首页 > 知识库问答 >
问题:

JBoss EAP 6.4/7-Spring Boot应用程序的内部log4j2.xml配置未在控制台上打印

冷英光
2023-03-14

我查过类似的问题,但没有一个答案真的解决了这个问题。我有一个Spring Boot应用程序配置为使用slf4j+log4j2(在src/main/resources中有一个内部log4j2.xml配置)。我在JBoss EAP(6.4&7)上html" target="_blank">部署了这个war,可以看到JBoss启动时的日志跟踪。问题是,log4j2附加程序不打印任何内容,无论是在控制台还是在文件上:

>

  • 在控制台中,只显示jboss日志记录日志(在我的应用程序中使用jboss日志记录格式跟踪的每一个log.info())。

    创建了一个C:\logs\out.log文件,但没有在其中写入任何内容。

    以下是我所做的事情:

    我的应用程序使用的是SLF4J,在调试时,我看到底层的日志记录实现是JBoss的日志记录,而不是Log4j2

    log4j2日志记录在Tomcat上正常工作。

    在standalone.xml中,我删除了 块。这样做之后,在控制台上只打印了几个jboss跟踪(但从应用程序log.info()中没有),但是log4j2文件appender会正确打印。

    in如何配置JBoss以支持应用程序在控制台和文件上的log4j2.xml打印?

    log4j2.xml摘录:

    <Configuration status="WARN">
        <Appenders>
            <Console name="console" target="SYSTEM_OUT">
                <PatternLayout ...
            <RollingFile name="file"
                filePattern="'.'%d{yyyy-MM-dd}"
                fileName="c:\logs\out.log">
                <PatternLayout
                    pattern="%d{yyyy-MM-dd'T'HH:mm:ss.SSS} - %c{1.} %5p - %m%n" />
                <Policies>
                    <TimeBasedTriggeringPolicy />
                </Policies>
            </RollingFile>
        <Logger name="org.springframework" level="info" additivity="false">
            <AppenderRef ref="file" />
            <AppenderRef ref="console" />
        </Logger>
    </Configuration>
    

    更新

    这个问题与JBoss管理SLF4J的方式有关:

    org.slf4j.Logger slf4jLogger = org.slf4j.LoggerFactory.getLogger(PresupuestoController.class);
    org.apache.logging.log4j.Logger log4j2Logger = LogManager.getLogger(PresupuestoController.class);
    

    如果我运行slf4jlogger.info(“slf4j!!!”);。它使用底层的JBoss记录器打印:

    11:19:03,122 INFO  [com.my.web.SomeController] (default task-2) SLF4J!!!
    

    但是,当我执行log4j2logger.info(“log4j2!!!”);时,它会在控制台上按log4j2.xml配置打印:

    11:19:03,668 INFO  [stdout] (default task-2) 2016-05-19T11:19:03.663  c.m.w.SomeController  INFO - LOG4J2!!!
    

    作为要求,我必须在代码中使用SFL4J,所以我需要一种方法来强制它使用Log4j2而不是jboss。

  • 共有1个答案

    满耀
    2023-03-14

    经过一番努力,终于解决了以下问题:将jboss-deployment-structure.xml文件添加到WEB-INF文件夹中,内容如下:

    <jboss-deployment-structure>
        <deployment>
            <exclusions>
                <module name='org.slf4j' />
                <module name='org.slf4j.impl' />
            </exclusions>
        </deployment>
    </jboss-deployment-structure>
    

    现在,JBoss日志记录继续工作,但也允许我在应用程序代码中使用SFL4J+Log4j2。

     类似资料:
    • 打印是不属于 JavaScript 语言标准的功能。但是,我们在这里进行的所有操作,浏览器和 Node.js 都是支持的。 打印意味着“在控制台上显示内容”,其中“控制台”是浏览器控制台或运行 Node.js 的终端。 完整的console.* API 在 MDN 的网页 以及 Node.js 官网都有相关文档。接下来我们将快速浏览以下两个操作: console.log() console.err

    • ASP.NETCore支持一个新的配置系统,如下所示:https://docs.asp.net/en/latest/fundamentals/configuration.html 也支持这种模式吗?NET核心控制台应用程序? 如果不是,什么是替代以前的和模型?

    • 我想使用新的log4j2-Java日志框架。一切正常,但我从一小时后就尝试加载一个自定义配置文件来配置日志记录(如日志级别)。 这是我的log4j2.xml: 我尝试了以下方法,但没有任何效果: 移动log4j2.xml文件,使其位于默认包中。 将log4j2.xml文件移动到项目中的任意位置 将log4j2.xml文件命名为log4j.xml 在项目中创建一个文件夹,将log4j2.xml文件放

    • 配置控制台 您可以在 config/kibana.yml 文件中添加以下配置: console.enabled 默认: true 。设置为 false 以禁用控制台。切换此配置将导致服务器在下次启动时重新生成资源,这可能会造成页面开始服务之前有些延迟。

    • 问题内容: 当您运行/调试它们时,是否可以将eclipse配置为在新窗口中打开控制台应用程序而不是其自己的控制台? 我正在调试客户端/服务器应用程序,我想一次看到两个应用程序的输出,而不必在选项卡之间切换… 问题答案: 在eclipse中,您可以有两个控制台视图…在控制台视图上,您​​有一个名为“打开控制台”的按钮(控制台视图中最右边的按钮)。如果单击此按钮并选择选项3(新控制台视图),将看到两个

    • 问题内容: 我正在创建一个需要进度条的小型控制台应用程序。就像是… 我的问题是,如何删除已经打印到控制台的字符?当我达到第51个百分比时,我必须从控制台中删除此行并插入新行。在我当前的解决方案中,这就是发生的事情… 我使用的代码是… 我正在使用PHP在Linux中进行此操作(只有我会使用该应用-请原谅语言选择)。因此,该解决方案应在Linux平台上运行- 但是,如果您有跨平台的解决方案,那将是更好