hibernate - JBoss 7 + hibernate + Log4j

标签 hibernate jboss log4j jboss7.x

我以 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>

但是什么也没显示,我哪里做错了?

最佳答案

您是否使用 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 配置将会被发现,并且会按照您期望的方式为您工作。更改已推送至upstream .

关于hibernate - JBoss 7 + hibernate + Log4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10755995/

相关文章:

java - log4j xml配置错误

java - 如何从 log4j 的日志文件中获取 Apache Camel 消息历史记录?

java - Hibernate 更新同一列

java - 使用 hibernate 从 URL 获取参数值而不使用请求对象?

java - JBOSS服务器调用页面时出现错误

java - JBoss 服务的应用程序 - 使用 apache proxypass session 无法访问

java - 获取异常 org.apache.logging.slf4j.SLF4JLoggerContext 无法转换为 org.apache.logging.log4j.core.LoggerContext

java - 为什么当我使用 hibernate 时我的表会被清除?

java - 带有 jdbc 的 Spring Security 3.0

java - 对于 Playframework 2.x 部署推荐的应用程序服务器是什么?