我有一个Keycloak EAR模块,部署在Keycloak 11.0上。在我的EAR模块中,我希望使用带有SLF4J的log4j2日志库。我通过直接在pom中添加以下依赖项成功地完成了这一点:log4j-slf4j-impl
、log4j-api
&log4j-core
。
通过将add-logging-api-dependencies
设置为false
来排除Wildfly日志记录依赖项。log4j2.xml
在打包的EAR外部指定,并用log4j.configurationfile
系统属性引用。
现在问题来了。我还希望Keycloak使用log4j2,但我无法使其工作。Keycloak使用的是Jboss日志包装器,无论我设置了哪个日志提供程序,它都将获取JBossLogManager
-我总是获取ClassNotFoundException
或NoClassDefFoundError
。
我意识到有一个类路径问题,但我在这一点上没有想法。我尝试使用以下命令创建log4j-slf4j-impl
、log4j-api
&log4j-core
Wildfly模块,但仍然得到相同的错误。
./jboss-cli.sh --command="module add --name=org.apache.logging.log4j.log4j-api --resources=/Users/jernej/log4j-api-2.13.3.jar"
如果我理解正确的话,Wildfly启动时(搜索LoggerProvider
)的log4j2应该在类路径中,如果正确添加了模块,Jboss日志FindProvider
方法应该返回log4j2LoggerProvider
?我怎么才能做到这一点?
假设我想使用位于单独库中的log4j2 appender。如果我将这个库作为Wildfly模块添加,那么这个log4j2 appender也可以被其他部署使用-例如keycloak-server.war?
将库作为模块添加可能不需要使其可用于您的应用程序。您是否在ear文件的META-INF
文件夹中的jboss-deployment-structure.xml
中定义了该模块的依赖关系?类似于这样:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:jboss:deployment-structure:1.3 http://www.jboss.org/schema/jbossas/jboss-deployment-structure-1_3.xsd">
<deployment>
<dependencies>
<module name="org.apache.logging.log4j.log4j-api" export="true"/>
</dependencies>
</deployment>
</jboss-deployment-structure>
我在具有以下logback.xml文件的类路径中有slf4j和logback jar(该文件以前已经成功使用过)。但是,DOCX4J3.0仍然将日志记录信息打印到标准输出。我正在使用NetBeans7.4构建基于docx4j的应用程序。我想将日志级别更改为错误,并将其发送到日志文件中。不知道我错过了什么。任何帮助都是非常感谢的。
问题内容: 我正在迁移一个曾经使用log4j进行logback / slf4j的应用程序,并且已经出现问题约2周了……我做了一个小项目来测试logback / slf4j,它的工作效果很好,但是由于某种原因,在应用它时到实际的应用程序,它只是不想工作。 我正在使用JBoss 6.2,将EAR部署到standalone / deployments目录并启动服务器(除了我得到这个异常的事实,这一切都很
问题内容: 我已经将一个Web应用程序部署到服务器上。我的应用程序使用和。但是,并非所有日志记录消息都已写入文件。 在我的课堂上,我有: 我的文件在本地计算机上运行良好,并且已正确部署。 我看到正在写入的应用程序生成的错误消息没有写入我的。由于输出模式的格式与我的模式不同,因此看起来的日志消息来自其他日志框架。我在中看到的日志记录如下: 我的log4j模式是这样的: 一些日志记录出现在我的文件日志
在将quartz scheduler添加到项目中后,Tomcat的服务器日志会被垃圾邮件发送,并显示以下消息: [信息][talledLocalContainer]12:15:06.319[DefaultQuartzScheduler\u QuartzSchedulerThread]调试o.quartz。果心QuartzSchedulerThread-批量获取0个触发器 我正在尝试禁用该日志消息,
在我的Java应用程序中,我使用SLF4J+Logback进行日志记录。我在开发环境中使用调试级日志记录,在生产环境中使用错误级日志记录。但是有一些消息我无论如何都想要记录下来,无论日志级别如何(类似于,但使用的是logger)。 有什么切实可行的方法可以实现这一点吗?我可以使用error或更低的级别,但我想做的是给出一些信息,所以在语义上是错误的,它不是错误。 我可以在我的中为我的类定义另一个记
我在Java日志记录方面遇到了一些障碍。我想将日志发送到笔记本电脑上的Nginx本地服务器。我如何使用log4j或slf4j实现这个函数,有人能帮我实现代码吗?谢谢