在 Catalina.out 中控制 SQL 日志记录级别
Control SQL logging level in Catalina.out
我们的应用程序在 Tomcat 8 和 Linux 上运行。我们有 log4j.xml 附带 war 来控制我们的应用程序日志记录的日志级别。 log4j 还定义了 SQL.
的日志记录级别
在hibernate.cfg.xml中,"hibernate.show_sql"设置为真。
<property name="hibernate.show_sql">true</property>
在$CATALINA_BASE/conf/logging.properties
所有对 ConsoleAppender 的引用:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
已删除,因此除了 SQL 语句外,没有任何内容发送到标准输出。
:"hibernate.show_sql">true,将所有正在处理的 SQL 语句发送到 catalina.out – 请注意 catalina.out 是仅在 [=39= 上创建的文件] 机器。
我读到 "hibernate.show_sql">true,在 DEBUG 级别记录 SQL 语句。问题是我想在ERROR级别记录那些语句但是不知道如何控制级别?
我读到 SQL 日志记录的级别可以由 log4j.xml 控制,但在 log4j.xml 中更改它对 catalina.out 的记录方式没有影响.有谁知道如何控制 catalina.out 中的 SQL 登录仅处于 ERROR 级别?
下面是log4j.xml.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
<appender name="mylog" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="${catalina.base}/logs/mylog.log" />
<param name="Threshold" value="TRACE" />
<param name="Append" value="true" />
<param name="MaxFileSize" value="300MB" />
<param name="MaxBackupIndex" value="10" />
<layout class="it.openutils.log4j.FilteredPatternLayout">
<param name="ConversionPattern"
value="%d{ISO8601} %5p [%t] Executor:%X{Executor} Type:%X{Type} A:%X{Account} C:%X{Campaign} %c{1}:%L - %m%n" />
</layout>
</appender>
<logger name="org.hibernate.SQL" additivity="false">
<level value="ERROR" />
<appender-ref ref="mylog" />
</logger>
<logger name="org.hibernate">
<level value="ERROR"/>
</logger>
<logger name="org.hibernate.jdbc.JDBCContext">
<level value="ERROR"/>
</logger>
<root>
<level value="info" />
<appender-ref ref="mylog" />
</root>
因为无论如何我都找不到将 Catalina.out 的级别设置为错误,所以我决定一起关闭 SQL 日志记录。所以我将 log4j.xml 中的所有级别改回 INFO 并在 hibernate.cfg.xml 中将此 属性 设置为 false。
<property name="hibernate.show_sql">false</property>
记录一段时间后,我注意到 Catalina.out 中没有任何记录,除非发生错误,因此在这种情况下,错误和异常被记录到 Catalina.out 而不是常规 SQL 语句,这(几乎)是我最初试图实现的目标。我不知道为什么会这样,并且 where/how 定义了这些日志记录级别。但希望对某人有所帮助。
我们的应用程序在 Tomcat 8 和 Linux 上运行。我们有 log4j.xml 附带 war 来控制我们的应用程序日志记录的日志级别。 log4j 还定义了 SQL.
的日志记录级别在hibernate.cfg.xml中,"hibernate.show_sql"设置为真。
<property name="hibernate.show_sql">true</property>
在$CATALINA_BASE/conf/logging.properties
所有对 ConsoleAppender 的引用:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
已删除,因此除了 SQL 语句外,没有任何内容发送到标准输出。
:"hibernate.show_sql">true,将所有正在处理的 SQL 语句发送到 catalina.out – 请注意 catalina.out 是仅在 [=39= 上创建的文件] 机器。
我读到 "hibernate.show_sql">true,在 DEBUG 级别记录 SQL 语句。问题是我想在ERROR级别记录那些语句但是不知道如何控制级别?
我读到 SQL 日志记录的级别可以由 log4j.xml 控制,但在 log4j.xml 中更改它对 catalina.out 的记录方式没有影响.有谁知道如何控制 catalina.out 中的 SQL 登录仅处于 ERROR 级别?
下面是log4j.xml.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
<appender name="mylog" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="${catalina.base}/logs/mylog.log" />
<param name="Threshold" value="TRACE" />
<param name="Append" value="true" />
<param name="MaxFileSize" value="300MB" />
<param name="MaxBackupIndex" value="10" />
<layout class="it.openutils.log4j.FilteredPatternLayout">
<param name="ConversionPattern"
value="%d{ISO8601} %5p [%t] Executor:%X{Executor} Type:%X{Type} A:%X{Account} C:%X{Campaign} %c{1}:%L - %m%n" />
</layout>
</appender>
<logger name="org.hibernate.SQL" additivity="false">
<level value="ERROR" />
<appender-ref ref="mylog" />
</logger>
<logger name="org.hibernate">
<level value="ERROR"/>
</logger>
<logger name="org.hibernate.jdbc.JDBCContext">
<level value="ERROR"/>
</logger>
<root>
<level value="info" />
<appender-ref ref="mylog" />
</root>
因为无论如何我都找不到将 Catalina.out 的级别设置为错误,所以我决定一起关闭 SQL 日志记录。所以我将 log4j.xml 中的所有级别改回 INFO 并在 hibernate.cfg.xml 中将此 属性 设置为 false。
<property name="hibernate.show_sql">false</property>
记录一段时间后,我注意到 Catalina.out 中没有任何记录,除非发生错误,因此在这种情况下,错误和异常被记录到 Catalina.out 而不是常规 SQL 语句,这(几乎)是我最初试图实现的目标。我不知道为什么会这样,并且 where/how 定义了这些日志记录级别。但希望对某人有所帮助。