问题:应用 additivity="false"
选项时不起作用。
尝试通过 log4j 打印控制台日志,它工作但重复了日志语句。当我应用 additivity="false"
选项时,不会打印任何内容。
log4j 的 Springboot 项目设置:
1.依赖声明:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
2.更改了 application.properties
文件中的 jdbcDriver :
spring.datasource.url=jdbc:log4jdbc:mariadb://localhost:3306/sampleDB?serverTimezone=UTC&useUnicode=true
spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
3.添加了 log4jdbc.log4j2.properties 文件 (/src/main/resources/)
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0
4.添加 logback.xml 文件 (/src/main/resources/)
<?xml version="1.0" encoding="UTF-8"?>
<configuration >
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>%d %5p [%c] %m%n</Pattern>
</encoder>
</appender>
<logger name="jdbc" level="OFF"/>
<logger name="jdbc.sqlonly" level="OFF"/>
<logger name="jdbc.sqltiming" level="DEBUG" />
<logger name="jdbc.audit" level="OFF"/>
<logger name="jdbc.resultset" level="OFF"/>
<logger name="jdbc.resultsettable" level="DEBUG"/>
<logger name="jdbc.connection" level="OFF"/>
<root level="INFO">
<appender-ref ref="console"/>
</root>
</configuration>
问题
这有效,但重复如下:
它的重复日志记录,但实际上 insert sql
执行一次。
2021-02-28 16:54:41,620 DEBUG [jdbc.sqltiming] jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2) 18. SELECT POST_ID ,USER_NAME ,TITLE ,CONTENTS ,REPLY_IDX ,REPLY_GROUP_ID ,REPLY_DEPTH ,BOARD_NAME ,UPDATE_DATE FROM BOARDS WHERE POST_ID = '1253'; {executed in 2 msec} 2021-02-28 16:54:41,620 DEBUG [jdbc.sqltiming] jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2) 22. SELECT POST_ID ,USER_NAME ,TITLE ,CONTENTS ,REPLY_IDX ,REPLY_GROUP_ID ,REPLY_DEPTH ,BOARD_NAME ,UPDATE_DATE FROM BOARDS WHERE POST_ID = '1253'; {executed in 2 msec}
自己尝试
additivity="false"
时,没有日志记录。 =>“我不明白为什么”additivity="false"
时,它会再次打印重复的日志。 <?xml version="1.0" encoding="UTF-8"?>
<configuration >
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>%d %5p [%c] %m%n</Pattern>
</encoder>
</appender>
<logger name="jdbc" level="OFF"/>
<logger name="jdbc.sqlonly" level="OFF"/>
<logger name="jdbc.sqltiming" level="DEBUG" additivity="false"/>
<logger name="jdbc.audit" level="OFF"/>
<logger name="jdbc.resultset" level="OFF"/>
<logger name="jdbc.resultsettable" level="DEBUG"/>
<logger name="jdbc.connection" level="OFF"/>
<root level="INFO">
<appender-ref ref="console"/>
</root>
</configuration>
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
<version>1.16</version>
</dependency>
如何让日志只打印一次???