尝试将一个自由应用程序部署到OCP,并将该自由日志与应用程序日志合并为以下示例:https://openliberty.io/blog/2020/05/19/log4j-openshift-container-platform.html
我们的应用程序使用LOG4J2配置和运行日志记录。到目前为止,这对于下面的依赖项是有效的。
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</dependency>并使用以下代码行告诉应用程序log4J2.xml文件位于何处
Configurator.initialize(null, log4jConfigUrlFile);我们的日志记录在日志文件中,一切都很好。然而,现在我们需要一些方法来使用Log4J2来配置我们的记录器,但是日志本身必须在7月结束,以便OCP和它们的EFK堆栈可以使用它。
我一直在尝试下面的依赖项。
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
<version>2.13.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>没有编译问题,程序启动,我看到日志显示在控制台中。但是,当我尝试调整log4j2.xml (他在类路径上),并且不想看到它们仍然显示的信息消息时。它似乎没有装载或没有使用。我注意到的另一件事是,LoggingFactory是slf4j-jdk14 14中的一个,也许这是一个问题。我们也不能再使用Configurator了,因为它是log4j核心的一部分,您不能在同一个类路径上有两个实现(log4j到slf4j)。
我还尝试设置logfile位置属性。
-Dlog4j.configurationFile=./resources/log4j/log4j2.xml我尝试了几个目录结构的排列,只是为了确保它不起作用。也试过以下几种方法。
-Dorg.apache.logging.log4j.simplelog.StatusLogger.level=TRACE只是为了获得更多的调试输出,但它甚至没有工作。还有什么我可以试试的吗?
我的最终目标是
通过log4j2.xml
中以java.util.logging的形式结束。
发布于 2020-11-04 15:40:32
不幸的是,我相信如果使用log4j到slf4j适配器,log4j2.xml配置将被忽略。在server.xml中的服务器端,必须更改任何日志记录配置。在基于日志级别筛选日志的情况下,可以使用consoleLogLevel属性。在您的bootstrap.properties文件中:
com.ibm.ws.logging.console.log.level=<log level>或者在您的server.xml文件中:
<logging consoleLogLevel="<log level>" />或者在服务器环境中:
WLP_LOGGING_CONSOLE_LOGLEVEL=<log level>日志级别的有效选项包括审核、错误、信息、关闭、警告。有关如何在Open中配置日志记录的详细信息,请参阅https://openliberty.io/docs/20.0.0.11/reference/config/logging.html。或者,您可以使用博客中声明的其他选项将日志发送到OCP。
编辑:您可以做的另一个选择是使用控制台附录来代替。您可以将应用程序日志以非json格式直接发送到控制台。如果您希望在JSON中保留log4j 2应用程序日志,也可以使用appsWriteJson日志属性将您的JSON应用程序日志直接发送到System.out/err。
bootstrap.properties:
com.ibm.ws.logging.apps.write.json=trueserver.xml
<logging appsWriteJson="true"/>服务器环境:
WLP_LOGGING_APPS_WRITE_JSON=true控制台附录:https://logging.apache.org/log4j/2.x/manual/configuration.html#Appenders关于appsWriteJson:https://openliberty.io/blog/2020/07/30/json-logging-open-liberty-20008.html的更多信息
https://stackoverflow.com/questions/64664702
复制相似问题