Log4j不会将日志写入文件

时间:2015-08-13 14:21:21

标签: java log4j

我在log4j上使用slf4j。

     <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>

log4j.properties位于WEB-INF文件夹中,其内容如下:

log4j.rootLogger=DEBUG, stdout, file

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=D:\\logs\\log4j.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

在具有相同版本Tomcat的另一个环境中,同一个存储库工作正常,登录到文件...

13 个答案:

答案 0 :(得分:4)

你说这个相同的配置文件在不同的环境下工作正常。您能否详细介绍一下环境之间的差异。例如他们都在Windows上吗?在另一个环境中工作正常的事实表明您的配置很好,但是您的环境存在一些问题。以下是一些要检查的事项:

  • tomcat进程是否有权写入该文件 - 即是否需要写入D:\ logs \ log4j.log的管理员权限?

  • 确保tomcat目录周围没有任何临时文件可能会阻止您的更改生效。可以肯定的是,停止tomcat,从%CATALINA_HOME%\ webapps中删除扩展的war,删除%CATALINA_HOME%\ temp和%CATALINA_HOME%\ work

  • 的内容
  • 检查您的类路径上是否没有任何其他log4j配置文件,因为这些文件可能会覆盖您的log4j文件并阻止其生效。要仔细检查这一点,您可以尝试暂时删除log4j.properties文件,看看是否收到消息称日志系统未正确初始化。

答案 1 :(得分:1)

或许你的log4j.properties根本就没有读过。如果找不到,则log4j将使用默认配置,您可能甚至不知道它。 尝试传递这一行

-Dlog4j.configuration=file:///D:/yourPathToFile/log4j.properties

作为运行配置中的VM参数,看看它是否有帮助。

答案 2 :(得分:1)

我遇到了同样的问题,将log4j.log放在源代码中。我以为它是在EAR文件中编译的,但事实并非如此。假设它使用默认值。

答案 3 :(得分:0)

而不是:

  

log4j.appender.mainAppender.File = mainloggs.log

     

log4j.appender.mainAppender.Append =真

使用:

log4j.appender.file.File=mainloggs.log

log4j.appender.file.Append=true

答案 4 :(得分:0)

当您不在类路径中添加log4j.properties文件时,可能会出现此问题。要解决此问题,请按照以下步骤操作: -

  1. 在项目中创建文件夹资源,并将log4j.properties放入其中。
  2. 转到项目属性 - &gt; Java构建路径 - &gt;单击添加文件夹 - &gt;检查资源文件夹 - &gt;单击确定并完成。它应该可以解决你的问题。

答案 5 :(得分:0)

您的log4j.properties文件应位于WEB-INF/classes,而不是WEB-INFWEB-INF不在Web应用程序类路径中,但WEB-INF/classes是。

答案 6 :(得分:0)

对于基于Maven的项目,请将log4j.properties保存在src / main / resources

答案 7 :(得分:0)

尝试

 log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
 log4j.appender.file.Append=true

如果不起作用。请把你的web.xml

答案 8 :(得分:0)

我遇到了同样的问题。它曾经工作了一段时间但现在没有工作。 我想这不是log4j2或slf4j的问题(就像我的情况一样),而是使用配置文件的相对路径。

如果您更新了Java或更新IDE或更改了某些系统变量或文件夹的相对路径,那么您的问题与我的问题类似。

可能的修复/解决方法 -

  • 尝试在工件中包含log4j2配置文件 建立它。
  • 或者,您可以从有资质的文件和硬编码中获取配置 登录代码本身 - 这对我有用。

答案 9 :(得分:0)

在Windows上提及文件路径时尝试使用该方案。不需要在其他平台上以这种方式提及它,但需要在Windows上。我观察到了没有方案的文件路径问题。

log4j.appender.file.File=file://d:/logs/log4j.log

答案 10 :(得分:0)

因此,在tomcat上编写Web应用程序时,我没有写入.log文件的类似问题。最后,我将文件路径更改为Order.count 6 Order.sum(:total) 12,000 Order.pluck(:total) [nil, nil, 2000, 10000, nil, nil] Order.all.map(&:total) [0, 5010, 0, 0, 16110, 0] #<Order id: 6, user_id: 1, artist_id: nil, address_id: nil, paid_at: nil, payment_type: nil, guid: "a6471c15680a0fbcd3f515a1bdf83566", created_at: "2015-09-02 07:24:37", updated_at: "2015-09-02 07:24:37", ordered_at: nil, total: nil, conveni_name: nil, conveni_code: nil, invoice_id: nil> #<Order id: 5, user_id: 1, artist_id: nil, address_id: 14, paid_at: "2015-09-02 07:24:36", payment_type: 0, guid: "b68989c73bc0af34e3eef56abbcb306c", created_at: "2015-09-01 08:58:07", updated_at: "2015-09-02 07:24:36", ordered_at: "2015-09-02 07:24:36", total: nil, conveni_name: nil, conveni_code: nil, invoice_id: nil> #<Order id: 4, user_id: 1, artist_id: nil, address_id: 1, paid_at: nil, payment_type: 2, guid: "1863cc6f2884b88598c4524d564b8a4a", created_at: "2015-09-01 06:07:52", updated_at: "2015-09-01 06:07:52", ordered_at: "2015-08-31 15:00:00", total: 2000, conveni_name: nil, conveni_code: nil, invoice_id: nil> #<Order id: 3, user_id: 1, artist_id: nil, address_id: 1, paid_at: "2015-08-30 06:07:52", payment_type: 0, guid: "a6f7e22fc9ea8bdccdbdcbb00d9ea250", created_at: "2015-09-01 06:07:52", updated_at: "2015-09-01 06:07:52", ordered_at: "2015-08-29 06:07:52", total: 10000, conveni_name: nil, conveni_code: nil, invoice_id: nil> #<Order id: 2, user_id: 1, artist_id: nil, address_id: 11, paid_at: "2015-09-01 08:58:06", payment_type: 0, guid: "f29dd23315078fce2e5b38e16d027c45", created_at: "2015-09-01 06:06:33", updated_at: "2015-09-01 08:58:06", ordered_at: "2015-09-01 08:58:06", total: nil, conveni_name: nil, conveni_code: nil, invoice_id: nil> #<Order id: 1, user_id: nil, artist_id: nil, address_id: nil, paid_at: nil, payment_type: nil, guid: "6f2ffd0e8ba491fba10d69b73e717384", created_at: "2015-09-01 03:08:44", updated_at: "2015-09-01 03:08:44", ordered_at: nil, total: nil, conveni_name: nil, conveni_code: nil, invoice_id: nil> 之类的相对路径。然后我注意到当我使用tomcat 7运行程序时,我在\ bin目录中找到了日志文件而不是tomcat安装中的\ log目录。

答案 11 :(得分:0)

log4j.appender.file.File=${user.home}\\Logs\\mylogfile.log

答案 12 :(得分:0)

我有同样的问题。事实证明,我在Tomcat中有另一个包含另一个log4j.properties文件的Web应用程序。删除此应用程序后,事情正在按预期工作