如何在多项目 Maven 中配置 Log4j

Die*_*rda 5 hibernate log4j maven-3 java-ee-6 glassfish-3

我有一个 Maven War 项目,它依赖于 EJB Maven 项目。EJB 项目处理所有业务逻辑,包括通过 Hibernate 进行数据库访问。这两个项目都是 JEE6 并使用 maven 在 glassfish 3.1.2 上运行。我目前正在尝试配置 Log4j 以在所描述的场景中工作(也记录休眠)。我的 ejb 的 src/main/resources 文件夹中有以下 log4j.xml 文件(我认为它位于类路径中):

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

    <log4j:configuration xmlns:log4j=
                "http://jakarta.apache.org/log4j/"
                        debug="false">

        <appender name="consoleAppender"
                class="org.apache.log4j.ConsoleAppender">
            <param name="Threshold" value="INFO" />
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%d
                %-5p  [%c{1}] %m %n" />
            </layout>
        </appender>

        <logger name="javabeat.net.log4j" additivity="false" >
            <level value="INFO" />
            <appender-ref ref="consoleAppender"/>
        </logger>
    </log4j:configuration>
Run Code Online (Sandbox Code Playgroud)

我不断从 log4j 收到此错误:

严重:log4j:错误“org.apache.log4j.xml.DOMConfigurator”对象无法分配给“org.apache.log4j.spi.Configurator”变量。

严重:log4j:错误类“org.apache.log4j.spi.Configurator”已加载

严重: log4j:ERROR [WebappClassLoader (delegate=true; repositories=WEB-INF/classes/)] 而对象类型

严重:log4j:错误“org.apache.log4j.xml.DOMConfigurator”已由[WebappClassLoader(delegate=true;repositories=WEB-INF/classes/)]加载。

严重:log4j:错误无法实例化配置器[org.apache.log4j.xml.DOMConfigurator]。

严重:log4j:警告找不到记录器(org.hibernate.type.BasicTypeRegistry)的附加程序。

严重:log4j:警告 请正确初始化 log4j 系统。

严重:log4j:WARN有关详细信息,请参阅http://logging.apache.org/log4j/1.2/faq.html#noconfig 。

我没有主意了,谢谢你的帮助

Enr*_*tín 0

http://forum.spring.io/forum/spring-projects/batch/76295-log4j-classloader-问题

您好,您提到的问题几乎总是当您有一个 web 应用程序,其 lib 和 tomcat lib 目录中都有 log4j.jar 时,就像我发布的链接中所解释的那样,所以您必须选择,在哪里是 log4j,在所有 webapps lib 文件夹中或仅在 tomcat lib 目录中:)

更新:

另外,您必须避免在 tomcat lib 和 webapp lib 目录中重复 commons-logging.jar。

问候