Java log4j.properties被忽略
我在glassfish v3.0.1上使用IntelliJ IDEA 9.0.3与maven一起部署了一个JavaEE6 Wicket应用程序。我使用slf4j-log4j12-1.5.6、slf4j-api-1.5.8和log4j-1.2.16进行测井 以前,当我通过netbeans或eclipse部署时,它工作正常,但是当我使用IntelliJ IDEA部署时,我的log4j.properties文件被忽略,glassfish的日志记录处理我的日志消息。我不认为这个想法和它有任何关系,一定是别的什么东西改变了我只是不知道是什么 我已经验证了我的log4j.properties文件在WEB-INF/classes目录中,而slf4j/log4j jar在war的WEB-INF/lib目录中。我是否缺少某种配置来实现此功能 谢谢 编辑:更新更多信息,发布pom依赖项 以下是my pom.xml中的相关部分:Java log4j.properties被忽略,java,maven-2,log4j,intellij-idea,wicket,Java,Maven 2,Log4j,Intellij Idea,Wicket,我在glassfish v3.0.1上使用IntelliJ IDEA 9.0.3与maven一起部署了一个JavaEE6 Wicket应用程序。我使用slf4j-log4j12-1.5.6、slf4j-api-1.5.8和log4j-1.2.16进行测井 以前,当我通过netbeans或eclipse部署时,它工作正常,但是当我使用IntelliJ IDEA部署时,我的log4j.properties文件被忽略,glassfish的日志记录处理我的日志消息。我不认为这个想法和它有任何关系,一定是
<!-- Guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>r05</version>
</dependency>
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.glassfish.extras</groupId>
<artifactId>glassfish-embedded-all</artifactId>
<version>3.0</version>
<scope>test</scope>
</dependency>
<!-- Java EE 6 -->
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>bean-validator</artifactId>
<version>3.0-JBoss-4.0.0.Beta3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
<!-- Wicket -->
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket</artifactId>
<version>1.4.9</version>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-auth-roles</artifactId>
<version>1.4.9</version>
</dependency>
<dependency>
<groupId>org.jboss.weld</groupId>
<artifactId>weld-wicket</artifactId>
<version>1.0.1-Final</version>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.5.1-Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.5.1-Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>3.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.5.1-Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>3.5.1-Final</version>
</dependency>
<!-- Database -->
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>8.4-701.jdbc4</version>
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
</dependencies>
番石榴
番石榴
r05
朱尼特
朱尼特
4.7
测试
org.glassfish.extras
玻璃鱼嵌入所有
3
测试
玻璃鱼
bean验证器
3.0-JBoss-4.0.0.Beta3
假如
爪哇
JavaEEAPI
6
假如
org.apache.wicket
边门
1.4.9
org.apache.wicket
wicket身份验证角色
1.4.9
org.jboss.weld
焊接导叶
1.0.1-最终版本
org.hibernate
冬眠核心
3.5.1-最终版本
org.hibernate
休眠注释
3.5.1-最终版本
org.hibernate
hibernate commons注释
3.2.0.1最终版本
org.hibernate
休眠实体管理器
3.5.1-最终版本
org.hibernate
hibernate-c3p0
3.5.1-最终版本
postgresql
postgresql
8.4-701.jdbc4
org.slf4j
slf4j-log4j12
1.5.6
log4j
log4j
1.2.16
脑海中最有可能浮现的两件事是:
由于它在某些部署场景中工作,我怀疑通过Maven运行时的war打包是个问题。以上几点应该可以帮助您确认这一点。更新:我试图重现这个问题。我创建了一个简单的Wicket项目(与您的版本相同): 它有一个简单的log4j.properties日志记录到标准输出
log4j.appender.Stdout=org.apache.log4j.ConsoleAppender
log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.Stdout.layout.conversionPattern=%-5p - %-26.26c{1} - %m\n
log4j.rootLogger=INFO,Stdout
log4j.logger.org.apache.wicket=INFO
log4j.logger.org.apache.wicket.protocol.http.HttpSessionStore=INFO
log4j.logger.org.apache.wicket.version=INFO
log4j.logger.org.apache.wicket.RequestCycle=INFO
然后:
- 我添加了所有依赖项(或修改了现有依赖项的版本以匹配您的依赖项)
- 我只是做了一些清理,例如在Hibernate依赖项中,您不需要全部声明它们,而是利用可传递依赖项机制
- 我添加了相关的
和存储库
插件存储库
- 我添加了glassfish的
依赖项以使构建通过javax.servlet
- 我添加了
插件来测试整个过程嵌入式glassfish
- 我做了一些其他不相关的改变
- 我将编译器设置更改为1.6
- 我在
元素中声明了dependencyManagement
,以很好地控制可传递依赖项中的版本slf4japi
4.0.0
com.mycompany
在浏览器中,我按预期在标准输出中获取日志:
...
INFO: [WicketApplication] Started Wicket version 1.4.9 in development mode
********************************************************************
*** WARNING: Wicket is running in DEVELOPMENT mode. ***
*** ^^^^^^^^^^^ ***
*** Do NOT deploy to your live server(s) without changing this. ***
*** See Application#getConfigurationType() for more information. ***
********************************************************************
...
信息:[WicketApplication]已在开发模式下启动Wicket版本1.4.9
********************************************************************
***警告:Wicket正在开发模式下运行***
*** ^^^^^^^^^^^ ***
***未更改此项,请勿部署到live server***
***有关更多信息,请参阅应用程序#getConfigurationType()***
********************************************************************
我不知道这是否具有代表性
我已经检查了war,log4j.properties确实在WEB-INF/classes中。我没有log4j.jar,我有slf4j-log4j12.jar
slf4j-log4j12.jar不是log4j.jar的替代品,slf4j-log4j12.jar是一个绑定对于log4j版本1.2,您仍然需要log4j.jar。从SLF4J文档中:
如前所述,SLF4J
支持各种日志框架。
SLF4J配送船配备
几个jar文件称为
“SLF4J绑定”,每个绑定
对应于支持的
框架
slf4j-log4j12-1.6.1.jar:绑定
log4j版本1.2,一个广泛使用的
日志框架。你也需要
将log4j.jar放在类路径上
我想知道您是如何在NetBeans和Eclipse下工作的。看看。“默认初始化过程”一节描述log4j将如何尝试查找初始化文件。也许您可以尝试一些这样的选项来让事情顺利进行。我建议删除所有slf4j依赖项,并将日志代码更改为直接使用Log4j API(如果这不是太多工作,则不知道项目的大小)。一旦这工作,考虑如果你真的需要由SLF4J提供的灵活性。如果需要,请选择正确版本的slf4j(slf4j-log4j12可能不是用于log4j 1.2.16的正确版本),并将其重新集成到中
我最近遇到了slf4j,最后完全删除了它,因为我遇到了类似的配置问题。我有以下日志依赖项:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>0.9.17</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
<scope>runtime</scope>
</dependency>
回写
logback-c
$ mvn package
...
$ mvn embedded-glassfish:run
...
...
INFO: [WicketApplication] Started Wicket version 1.4.9 in development mode
********************************************************************
*** WARNING: Wicket is running in DEVELOPMENT mode. ***
*** ^^^^^^^^^^^ ***
*** Do NOT deploy to your live server(s) without changing this. ***
*** See Application#getConfigurationType() for more information. ***
********************************************************************
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>0.9.17</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
<scope>runtime</scope>
</dependency>
import org.apache.log4j.Logger;
public class LogTest {
private static Logger log;
public static void main(String[] args) {
log = Logger.getLogger(LogTest.class);
}
}
url = classLoader.getResource(resource);
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.4</version>
</dependency>
-Dlog4j.configuration=file:C:\[pathToYourProject]\trunk\target\classes\log4j.properties