Jam*_*hon 85 xml configuration logging hibernate log4j
我无法找到有关如何使用Log4j的XML样式配置文件配置Hibernate日志记录的任何文档.
这是可能的还是我使用属性样式配置文件来控制Hibernate的日志记录?
如果任何人有任何信息或链接到文档,它将不胜感激.
编辑:
只是为了澄清,我正在寻找一个控制Hibernate的实际XML语法的例子.
EDIT2:
这是我在XML配置文件中的内容.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<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"/>
<!-- Keep one backup file -->
<param name="MaxBackupIndex" value="4"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %l - %m%n"/>
</layout>
</appender>
<root>
<priority value ="debug" />
<appender-ref ref="console" />
<appender-ref ref="rolling-file" />
</root>
</log4j:configuration>
Run Code Online (Sandbox Code Playgroud)
日志工作正常,但我正在寻找一种方法来降低和控制hibernate日志记录的方式,与我的应用程序级别日志记录分开,因为它目前充斥着我的日志.我找到了使用首选项文件执行此操作的示例,我只是想知道如何在XML文件中执行此操作.
Lok*_*oki 157
以下是记录器类别列表:
Category Function
org.hibernate.SQL Log all SQL DML statements as they are executed
org.hibernate.type Log all JDBC parameters
org.hibernate.tool.hbm2ddl Log all SQL DDL statements as they are executed
org.hibernate.pretty Log the state of all entities (max 20 entities) associated with the session at flush time
org.hibernate.cache Log all second-level cache activity
org.hibernate.transaction Log transaction related activity
org.hibernate.jdbc Log all JDBC resource acquisition
org.hibernate.hql.ast.AST Log HQL and SQL ASTs during query parsing
org.hibernate.secure Log all JAAS authorization requests
org.hibernate Log everything (a lot of information, but very useful for troubleshooting)
Run Code Online (Sandbox Code Playgroud)
格式化为粘贴到log4j XML配置文件:
<!-- Log all SQL DML statements as they are executed -->
<Logger name="org.hibernate.SQL" level="debug" />
<!-- Log all JDBC parameters -->
<Logger name="org.hibernate.type" level="debug" />
<!-- Log all SQL DDL statements as they are executed -->
<Logger name="org.hibernate.tool.hbm2ddl" level="debug" />
<!-- Log the state of all entities (max 20 entities) associated with the session at flush time -->
<Logger name="org.hibernate.pretty" level="debug" />
<!-- Log all second-level cache activity -->
<Logger name="org.hibernate.cache" level="debug" />
<!-- Log transaction related activity -->
<Logger name="org.hibernate.transaction" level="debug" />
<!-- Log all JDBC resource acquisition -->
<Logger name="org.hibernate.jdbc" level="debug" />
<!-- Log HQL and SQL ASTs during query parsing -->
<Logger name="org.hibernate.hql.ast.AST" level="debug" />
<!-- Log all JAAS authorization requests -->
<Logger name="org.hibernate.secure" level="debug" />
<!-- Log everything (a lot of information, but very useful for troubleshooting) -->
<Logger name="org.hibernate" level="debug" />
Run Code Online (Sandbox Code Playgroud)
注意:大多数记录器使用DEBUG级别,但是org.hibernate.type使用TRACE.在以前版本的Hibernate中,org.hibernate.type也使用了DEBUG,但是从Hibernate 3开始,必须将级别设置为TRACE(或ALL)才能看到JDBC参数绑定日志记录.
并且类别被指定为:
<logger name="org.hibernate">
<level value="ALL" />
<appender-ref ref="FILE"/>
</logger>
Run Code Online (Sandbox Code Playgroud)
它必须放在根元素之前.
Den*_*s S 25
Loki的答案指向Hibernate 3文档并提供了很好的信息,但我仍然没有得到我期望的结果.
很多捶打,挥舞着手臂和一般死老鼠的跑步终于让我吃了我的奶酪.
因为Hibernate 3使用Simple Logging Facade for Java(SLF4J)(根据文档),如果您依赖Log4j 1.2,如果您想要完全配置Hibernate日志记录,还需要slf4j-log4j12-1.5.10.jar一个log4j配置文件.希望这有助于下一个人.
在回应homaxto的评论时,这就是我现在所拥有的.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Threshold" value="debug"/>
<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="500KB"/>
<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="info" />
</logger>
<root>
<priority value ="debug" />
<appender-ref ref="console" />
<appender-ref ref="rolling-file" />
</root>
</log4j:configuration>
Run Code Online (Sandbox Code Playgroud)
关键部分是
<logger name="org.hibernate">
<level value="info" />
</logger>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
这是我使用的:
<logger name="org.hibernate">
<level value="warn"/>
</logger>
<logger name="org.hibernate.SQL">
<level value="warn"/>
</logger>
<logger name="org.hibernate.type">
<level value="warn"/>
</logger>
<root>
<priority value="info"/>
<appender-ref ref="C1"/>
</root>
Run Code Online (Sandbox Code Playgroud)
显然,我不喜欢看Hibernate消息;) - 将级别设置为"debug"以获得输出.