2

我以 Jboss 7.1 中的 log4j 快速入门为起点设置了我的 Java EE 6 应用程序。

我的关键 pom.xml 添加是:

<dependencyManagement>
        <dependencies>
            <!-- Define Log4j dependency and its version -->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>
...
        </dependencies>
    </dependencyManagement>

<dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <scope>provided</scope>
        </dependency>

版本是 1.2.16。

现在我可以这样做:

private static final Logger logger = Logger.getLogger(MacchinarioController.class);

并按预期使用记录器。好的!

我没有 log4j.xml 也没有 .properties 文件。

现在我希望 Hibernate 在控制台中打印所有正在执行的 SQL 语句,包括参数值

我创建了这个 log4j.xml 并将其放在 src/main/resources 源文件夹中:

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

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

    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <param name="Threshold" value="info"/>
        <param name="Target" value="System.out"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{ABSOLUTE} [%t] %-5p %c{1} - %m%n"/>
        </layout>
    </appender>

    <appender name="rolling-file" class="org.apache.log4j.RollingFileAppender">
        <param name="file" value="Program-Name.log"/>
        <param name="MaxFileSize" value="1000KB"/>
        <param name="MaxBackupIndex" value="4"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %l - %m%n"/>
        </layout>
    </appender>
    <logger name="org.hibernate">
        <level value="ALL" />
    </logger>

    <root>
        <priority value ="debug" />
        <appender-ref ref="console" />
        <appender-ref ref="rolling-file" />
    </root>
</log4j:configuration>

但是什么都没有出现,我在哪里做错了?

4

1 回答 1

2

您是否使用jboss-deployment-structure.xml来排除 log4j 的服务器版本?

如果您从头开始应用程序,我绝对不会选择 log4j。我偏向于 JBoss Logging,但 JBoss Logging、slf4j 或 logback 都比 log4j 好得多。

默认情况下,JBoss AS 7 使用 JBoss 日志和 JBoss 日志管理器。虽然你真的会/可以只使用 JBoss Logging,因为它可以与任何日志管理器一起使用。

如果您确实想使用 log4j,请不要使用 log4j 配置。将记录器/类别添加到记录子系统以查看您正在寻找的结果。

话虽如此,在 JBoss AS 7 的下一个版本中,您的 log4j 配置将被找到,并且会按照您期望的方式为您工作。更改已推送到上游

于 2012-05-25T14:55:14.627 回答