我正在尝试将我的hibernate应用程序配置为输出日志记录信息。我的log4j.properties配置如下:
{
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\sisco.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
# Root logger option
log4j.rootLogger=INFO, file, stdout, debug
# Log everything. Good for troubleshooting
log4j.logger.org.hibernate=INFO
# Log all JDBC parameters
log4j.logger.org.hibernate.type=ALL
}
但是我觉得hibernate甚至没有读取这个文件,因为无论我设置这个文件,什么都没有改变,我也删除了它,我的应用程序正常运行。
我想也许,项目中的其他一些jar可能有一个包含在jar中的log4j.properties文件,然后hibernate正在使用它。它有意义吗?
有没有人有任何想法?
由于
答案 0 :(得分:1)
你必须将这个jar添加到你的类路径
中slf4j-api-1.7.5.jar // the slf4j API
slf4j-log4j12-1.7.5.jar // log4j bindings for slf4j
log4j-1.2.17.jar // log4j itself
这对我有用,祝你好运〜
答案 1 :(得分:0)
文件log4j.xml
的优先级高于文件log4j.properties
。
e.g:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN"
"log4j.dtd" >
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- console -->
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<param name="threshold" value="TRACE" />
<layout class="org.apache.log4j.PatternLayout">
<param name="conversionPattern"
value="%d{yyyyMMdd-HHmmss.SSS} %-5p (%c.java:%L).%M - %m%n" />
</layout>
</appender>
<!-- categories -->
<category name="org.hibernate">
<priority value="INFO" />
</category>
<category name="org.hibernate.type">
<priority value="TRACE" />
</category>
<!-- root -->
<root>
<priority value="TRACE" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>
从框架的1.2.12开始,只需将它放在项目的src
文件夹中的默认包中。 log4j自动加载它。无需以编程方式或其他任何方式加载它。