我正在开发一个基于spring的应用程序,它必须通过mybatis与SQL数据库通信:好吧,但是日志目的地。
由于某些原因mybatis登录到错误的文件,你能帮我弄清楚原因吗?这是我的配置:
log4j.properties:
### Appenders
# Console appender
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=WARN
log4j.appender.console.layout=org.apache.log4j.PatternLayout
# Application file appender
log4j.appender.main=org.apache.log4j.RollingFileAppender
log4j.appender.main.File=logs/app.log
log4j.appender.main.layout=org.apache.log4j.PatternLayout
log4j.appender.main.MaxFileSize=10MB
log4j.appender.main.MaxBackupIndex=15
# Libs file appender
log4j.appender.libs=org.apache.log4j.RollingFileAppender
log4j.appender.libs.File=logs/app_libs.log
log4j.appender.libs.layout=org.apache.log4j.PatternLayout
log4j.appender.libs.MaxFileSize=10MB
log4j.appender.libs.MaxBackupIndex=15
### Loggers & additivity
# Application
log4j.additivity.our.company.basepackage=false
log4j.logger.our.company.basepackage=TRACE,main,console
# Root logger
log4j.rootLogger=INFO,libs
pom.xml片段
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.5</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<scope>runtime</scope>
</dependency>
我在“app.log”文件中找到了mybatis的TRACE级行(“org.apache.ibatis.logging.jdbc.BaseJdbcLogger.trace(BaseJdbcLogger.java:145)”)。
我从spring-core中排除了commons-logging,并且使用依赖树我没有看到commons-logging。为什么mybatis没有登录到文件“app_libs.log”?为什么mybatis不尊重指定的级别?
谢谢。
修改1
使用mybatis-generator生成了用于查询数据库的代码,生成的代码位于包“our.company.basepackage”下的某处。
答案 0 :(得分:1)
自问题发布以来,我没有停下来思考这个问题,直到现在:我找到了这种行为的原因。
决定性的建议是&#34;代码是用mybatis-generator&#34;生成的,它是在应用程序的同一个子包中生成的:这意味着* Mapper类,用于查询数据库,实际上在应用程序包中,因此它们的日志被视为&#34; our.company.basepackage&#34;的日志。而不是&#34; org.apache.ibatis&#34;。
的日志&#34; org.apache.ibatis&#34;在日志行中误导了我。
在这个小小的洞察力之后,我将以下内容添加到我的log4j.properties:
log4j.additivity.our.company.basepackage.persistence.mybatis=false
log4j.logger.our.company.basepackage.persistence.mybatis=INFO,libs
有了这两行,一切正常,即不再有&#34; org.apache.ibatis&#34; app.log中的行。
我希望这对其他使用mybatis-generator的人有用。