也许,我搜索了所有的互联网,但我一定错过了什么。
我根据文档配置Log4j2和Commons日志。我添加了log4j2。xml
,但其配置对应用程序输出没有影响。我看Log4j没有读这个文件。这是我的配置:
pom.xml
<properties>
<log4j2.version>2.3</log4j2.version>
</properties>
<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j2.version}</version>
</dependency>
</dependencies>
\src\main\资源\log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="TRACE">
<Properties>
<Property name="filename">fileName</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="Pattern Pattern %d{DEFAULT} %-5level %t : %logger{1} - %m%n"/>
</Console>
<RollingFile name="RollingFile"
fileName="${filename}.log"
filePattern="${filename}-%d{yyyy-MM-dd}.log">
<PatternLayout pattern="%d{DEFAULT} %-5level %t : %logger{1} - %m%n"/>
<TimeBasedTriggeringPolicy/>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="com.mydomain" level="TRACE"/>
<Root level="TRACE">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
在任何类中-例如A类
private static final Log logger = LogFactory.getLog(A.class);
应用程序具有main()
函数,因此可以由IDE或mvn exec:java运行。
问题:
日志记录正在工作-但使用默认方式。
正如您在log4j2.xml
文件中看到的,我将级别更改为TRACE
,并在模式中键入:Pattern Pattern
以检查log4j2是否使用了我的自定义配置。
没有logger.trace()
出现。没有文本Pattern
。控制台中的log4j没有错误/警告。
请帮忙,告诉我我做错了什么?
编辑:
@BrunoMarcoVisioli告诉我使用org。阿帕奇。登录中。log4j。LogManager
而不是LogFactory
。因此,我在main()
方法中添加了新的记录器:
private static final Logger logger_new = LogManager.getLogger(CalculationApp.class);
通过这个logger\u new
进行日志记录工作正常,因此我设置了TRACE
级别,在应用程序启动时也会看到一些日志,首先:
Starting configuration XmlConfiguration[location=target\classes\log4j2.xml]
但是通过LogFactory
登录仍然不起作用。
文件的位置通常有问题。。
从留档
默认情况下,Log4j在类路径中查找名为log4j2.xml(log4j.xml)的配置文件。
您需要将log4jjcl
依赖项添加到POM中,它将充当commons日志和log4j2之间的桥梁。
最近,我决定学习如何使用log4j2记录器。我下载了所需的jar文件,创建了库,xml编译文件,并尝试使用它。不幸的是,我在console(Eclipse)中得到了这样的语句: 这是我的测试类代码: 和我的xml配置文件: 我还尝试使用不带标记的xml,以及包规范和各种文件夹/包目录,但没有帮助。现在我的文件直接位于Eclipse的project文件夹中。
我已经将log4j从1.2.17升级到了2.16.0。因此我不得不重写我的log4j。并将其重命名为log4j2.xml。我已经做了必要的改变。然而,我的新配置似乎没有加载。我试图通过两个web配置log4j。xml: 和。两种方法都失败了,我在mylog.log文件中没有任何日志。但是当在本地运行应用程序时,控制台会显示日志。 这是我的log4j2.xml: 我尝试使用以下工具调试log4j配置
这是我的配置文件: 日志配置文件读起来非常清楚,因为它使用my/log目录中定义的模式正确地写入。 这是我在代码中实例化它的方式:
我们添加了使用log4J 2的库。X,但我们仍在使用log4J 1。X(主要是因为我们有自己的一些应用程序和记录仪)。我被告知解决方案是发送log4J 2。x到slf4j(使用log4j-to-slf4j,版本2。X),然后slf4j到log4J 1。X,使用slf4j-log4j12,版本1。X. 这就是我刚才所做的,但我仍然得到以下信息: ERROR StatusLogger未找到log4j2
我们已经添加了使用log4j2.x的库,但是我们仍然在使用log4j1.x(主要是因为我们有自己的一些附加程序和记录器的impl)。我被告知,解决方案是将log4j2.x发送到slf4j(使用log4j-to-slf4j,版本2.x),然后将slf4j发送到log4j1.x,使用slf4j-log4j12,版本1.x。 这就是我刚才所做的,但我仍然得到这样的信息: 我希望slf4j使用log4J
我已经将其隔离到一个非常简单的测试项目中,该项目除了简单的log4j2test配置使用之外没有其他用途。文件目录结构: 建筑sbt: log4j2.xml内容复制/粘贴从示例在官方留档:https://logging.apache.org/log4j/2.x/manual/configuration.html SimpleMain。斯卡拉: 我跑步与 输出: