Java Log4j不';不要将日志写入文件
我在log4j上使用slf4jJava Log4j不';不要将日志写入文件,java,log4j,Java,Log4j,我在log4j上使用slf4j <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.12</version> </dependency> <dependency&
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.12</version>
</dependency>
在另一个具有相同版本Tomcat的环境中,相同的响应工作正常,记录到文件…而不是:
log4j.appender.mainpappender.File=mainloggs.log
log4j.appender.mainpappender.Append=true
使用:
当您不在类路径中添加log4j.properties文件时,问题可能会出现。要修复相同的问题,请执行以下步骤:-
您的
log4j.properties
文件应该在WEB-INF/classes
中,而不是WEB-INF
中WEB-INF
不在WEB应用程序类路径中,但WEB-INF/classes
在其中。对于基于Maven的项目,请将log4j.properties保存在src/main/resources中
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.Append=true
如果它不工作。请将您的web.xml文件放到另一个环境中。您说过相同的配置文件在另一个环境中工作正常。你能详细介绍一下环境之间的差异吗。e、 它们都在窗户上吗?is在另一个环境中工作正常这一事实表明您的配置很好,但您的环境存在一些问题。以下是一些需要检查的事项:
- tomcat进程是否具有写入该文件的权限?例如,写入D:\logs\log4j.log是否需要管理员权限
- 确保tomcat目录中没有任何临时文件,这可能会阻止您的更改生效。当然,停止tomcat,从%CATALINA_HOME%\webapps中删除扩展的war,删除%CATALINA_HOME%\temp和%CATALINA_HOME%\work的内容
- 检查类路径上是否没有任何其他log4j配置文件,因为这些文件可能会覆盖log4j文件并阻止其生效。要再次检查这一点,您可以尝试暂时删除log4j.properties文件,查看是否收到消息说日志系统未正确初始化
- 可能根本没有读取您的log4j.properties。如果找不到,那么log4j将使用默认配置,您甚至可能不知道它。
试着越过这条线
-Dlog4j.configuration=file:///D:/yourPathToFile/log4j.properties
作为运行配置中的VM参数,并查看它是否有帮助。我也遇到了同样的问题。它以前工作过,但现在不工作了。 我想这不是log4j2或slf4j的问题(就像我的例子一样),而是配置文件的相对路径的问题 若您已经更新了java或更新了IDE,或者更改了一些系统变量或文件夹的相对路径,那个么您的问题和我的类似 可能的修复/解决方法-
- 尝试将log4j2配置文件包括在工件中,同时 建造它
- 或者,您可以从属性文件和硬代码获取配置 登录代码本身——这对我来说很有用
log4j.appender.file.File=file://d:/logs/log4j.log
因此,在tomcat上编写web应用程序时,我遇到了一个类似的问题,即.log文件没有写入。最后,我将文件路径更改为与类似
\log.log
的内容相关。然后我注意到,当我使用tomcat 7运行程序时,我在tomcat安装中的\bin目录而不是\log目录中找到了日志文件。我也遇到了同样的问题,将log4j.log放入源代码工作。我以为它是在EAR文件中编译的,但事实并非如此。假设它使用默认值。我也有同样的问题。事实证明,Tomcat中还有另一个web应用程序,其中包含另一个log4j.properties文件。删除此应用程序后,一切正常请查看此问题是否对您有用:是否可以发布扩展的项目结构?是否尝试将-Dlog4j.debug添加到JVM参数中,以使log4j打印其启动信息?您的日志语句是否显示在System.out中?它们是否遵循配置文件中指定的格式?如果更改配置文件中的格式,System.out中的语句是否也会更改?如果他们没有,log4j就找不到你的配置文件。你试过这个简单的helloworld+1吗?这个解决了我的问题,似乎是这个问题的最佳答案(也许不是“最干净”的解决方案,但它确实有效)。
log4j.appender.file.File=${user.home}\\Logs\\mylogfile.log
log4j.appender.file.File=file://d:/logs/log4j.log
log4j.appender.file.File=${user.home}\\Logs\\mylogfile.log