log4j 不写入 tomcat7 上的日志文件(ubuntu 服务器)

log4j doesn't write in log file on tomcat7 (ubuntu server)

这是我的 log4j.properties 文件:

# LOG4J configuration
log4j.rootLogger=INFO, Appender1,Appender2
log4j.logger.org.hibernate=info
log4j.logger.org.quartz=info

log4j.appender.Appender1=org.apache.log4j.ConsoleAppender
log4j.appender.Appender1.layout=org.apache.log4j.PatternLayout
log4j.appender.Appender1.layout.ConversionPattern=%-7p %d [%t] %c %x - %m%n

log4j.appender.Appender2=org.apache.log4j.FileAppender
log4j.appender.Appender2.File=/home/diego/proyect/log/general.log
log4j.appender.Appender2.layout=org.apache.log4j.PatternLayout
log4j.appender.Appender2.layout.ConversionPattern=%-7p %d [%t] %c %x - %m%n

在我的 windows 机器上本地工作,但在服务器 (ubuntu 16.04) 端,Web 应用程序无法写入 .log 文件,已经修改了文件的权限:

chmod 777 /home/diego/proyect/log/general.log

这是日志目录中 ls -lhs 的结果:

-rwxrwxrwx 1 diego diego 0 Nov 16 14:23 general.log

也不确定哪个是服务器上的 tomcat 用户。

我解决了,看来我需要将 log4j.properties 文件添加到类路径中,我的项目具有以下结构:

  • 主要
    • src/main/java
    • src/main/resources/log4j.properties
    • 网络应用
      • WEB-INF/log4j.属性

所以我将文件放在 src/main/resources 目录下并且它有效。

它在本地环境中运行的事实意味着您的配置是正确的。我觉得你的环境有问题。以下是一些需要检查的事项:

tomcat 进程是否有权限写入文件 .即是否需要管理员权限才能写入?

检查 tomcat 的目录附近是否没有任何可能阻止您进行更改的临时文件。

检查您的类路径中是否没有任何其他 log4j 配置文件,因为这些文件可能会覆盖您的 log4j 文件并阻止它。要仔细检查这一点,您可以尝试暂时删除 log4j.properties 文件。