Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java log4j.properties被忽略_Java_Maven 2_Log4j_Intellij Idea_Wicket - Fatal编程技术网

Java log4j.properties被忽略

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的日志记录处理我的日志消息。我不认为这个想法和它有任何关系,一定是

我在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中的相关部分:

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

脑海中最有可能浮现的两件事是:

  • 确保log4j.properties文件位于部署的WEB-INF/classes中。我想你的意思是它在你的代码库的WEB-INF/类中,但是你确认过发送给glassfish的战争就是这样吗
  • 确保log4j.jar位于已部署的WEB-INF/lib中

  • 由于它在某些部署场景中工作,我怀疑通过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
        ,以很好地控制可传递依赖项中的版本
    完整的pom.xml如下所示(因此任何人都可以复制):

    
    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