1. pom.xml中springboot版本依赖

  1. <!--Spring-boot中去掉logback的依赖-->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. <exclusions>
  6. <exclusion>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-logging</artifactId>
  9. </exclusion>
  10. </exclusions>
  11. </dependency>
  12. <!--日志-->
  13. <dependency>
  14. <groupId>org.springframework.boot</groupId>
  15. <artifactId>spring-boot-starter-log4j2</artifactId>
  16. </dependency>
  17. <!--数据库连接池-->
  18. <dependency>
  19. <groupId>com.alibaba</groupId>
  20. <artifactId>druid-spring-boot-starter</artifactId>
  21. <version>1.1.6</version>
  22. </dependency>
  23. <!--其他依赖-->

2. log4j2.xml文件中的日志配置(完整,可直接拷贝使用)

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration status="OFF">
  3. <appenders>
  4. <Console name="Console" target="SYSTEM_OUT">
  5. <!--只接受程序中DEBUG级别的日志进行处理-->
  6. <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
  7. <PatternLayout pattern="[%d{HH:mm:ss.SSS}] %-5level %class{36} %L %M - %msg%xEx%n"/>
  8. </Console>
  9. <!--处理DEBUG级别的日志,并把该日志放到logs/debug.log文件中-->
  10. <!--打印出DEBUG级别日志,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
  11. <RollingFile name="RollingFileDebug" fileName="./logs/debug.log"
  12. filePattern="logs/$${date:yyyy-MM}/debug-%d{yyyy-MM-dd}-%i.log.gz">
  13. <Filters>
  14. <ThresholdFilter level="DEBUG"/>
  15. <ThresholdFilter level="INFO" onMatch="DENY" onMismatch="NEUTRAL"/>
  16. </Filters>
  17. <PatternLayout
  18. pattern="[%d{yyyy-MM-dd HH:mm:ss}] %-5level %class{36} %L %M - %msg%xEx%n"/>
  19. <Policies>
  20. <SizeBasedTriggeringPolicy size="500 MB"/>
  21. <TimeBasedTriggeringPolicy/>
  22. </Policies>
  23. </RollingFile>
  24. <!--处理INFO级别的日志,并把该日志放到logs/info.log文件中-->
  25. <RollingFile name="RollingFileInfo" fileName="./logs/info.log"
  26. filePattern="logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log.gz">
  27. <Filters>
  28. <!--只接受INFO级别的日志,其余的全部拒绝处理-->
  29. <ThresholdFilter level="INFO"/>
  30. <ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/>
  31. </Filters>
  32. <PatternLayout
  33. pattern="[%d{yyyy-MM-dd HH:mm:ss}] %-5level %class{36} %L %M - %msg%xEx%n"/>
  34. <Policies>
  35. <SizeBasedTriggeringPolicy size="500 MB"/>
  36. <TimeBasedTriggeringPolicy/>
  37. </Policies>
  38. </RollingFile>
  39. <!--处理WARN级别的日志,并把该日志放到logs/warn.log文件中-->
  40. <RollingFile name="RollingFileWarn" fileName="./logs/warn.log"
  41. filePattern="logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log.gz">
  42. <Filters>
  43. <ThresholdFilter level="WARN"/>
  44. <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
  45. </Filters>
  46. <PatternLayout
  47. pattern="[%d{yyyy-MM-dd HH:mm:ss}] %-5level %class{36} %L %M - %msg%xEx%n"/>
  48. <Policies>
  49. <SizeBasedTriggeringPolicy size="500 MB"/>
  50. <TimeBasedTriggeringPolicy/>
  51. </Policies>
  52. </RollingFile>
  53. <!--处理error级别的日志,并把该日志放到logs/error.log文件中-->
  54. <RollingFile name="RollingFileError" fileName="./logs/error.log"
  55. filePattern="logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log.gz">
  56. <ThresholdFilter level="ERROR"/>
  57. <PatternLayout
  58. pattern="[%d{yyyy-MM-dd HH:mm:ss}] %-5level %class{36} %L %M - %msg%xEx%n"/>
  59. <Policies>
  60. <SizeBasedTriggeringPolicy size="500 MB"/>
  61. <TimeBasedTriggeringPolicy/>
  62. </Policies>
  63. </RollingFile>
  64. <!--druid的日志记录追加器-->
  65. <RollingFile name="druidSqlRollingFile" fileName="./logs/druid-sql.log"
  66. filePattern="logs/$${date:yyyy-MM}/api-%d{yyyy-MM-dd}-%i.log.gz">
  67. <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss}] %-5level %L %M - %msg%xEx%n"/>
  68. <Policies>
  69. <SizeBasedTriggeringPolicy size="500 MB"/>
  70. <TimeBasedTriggeringPolicy/>
  71. </Policies>
  72. </RollingFile>
  73. </appenders>
  74. <loggers>
  75. <root level="DEBUG">
  76. <appender-ref ref="Console"/>
  77. <appender-ref ref="RollingFileInfo"/>
  78. <appender-ref ref="RollingFileWarn"/>
  79. <appender-ref ref="RollingFileError"/>
  80. <appender-ref ref="RollingFileDebug"/>
  81. </root>
  82. <!--记录druid-sql的记录-->
  83. <logger name="druid.sql.Statement" level="debug" additivity="false">
  84. <appender-ref ref="druidSqlRollingFile"/>
  85. </logger>
  86. <logger name="druid.sql.Statement" level="debug" additivity="false">
  87. <appender-ref ref="druidSqlRollingFile"/>
  88. </logger>
  89. <!--log4j2 自带过滤日志-->
  90. <Logger name="org.apache.catalina.startup.DigesterFactory" level="error" />
  91. <Logger name="org.apache.catalina.util.LifecycleBase" level="error" />
  92. <Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" />
  93. <logger name="org.apache.sshd.common.util.SecurityUtils" level="warn"/>
  94. <Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" />
  95. <Logger name="org.crsh.plugin" level="warn" />
  96. <logger name="org.crsh.ssh" level="warn"/>
  97. <Logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="error" />
  98. <Logger name="org.hibernate.validator.internal.util.Version" level="warn" />
  99. <logger name="org.springframework.boot.actuate.autoconfigure.CrshAutoConfiguration" level="warn"/>
  100. <logger name="org.springframework.boot.actuate.endpoint.jmx" level="warn"/>
  101. <logger name="org.thymeleaf" level="warn"/>
  102. </loggers>
  103. </configuration>

3. 配置application.properties

  1. # 配置日志输出
  2. spring.datasource.druid.filter.slf4j.enabled=true
  3. spring.datasource.druid.filter.slf4j.statement-create-after-log-enabled=false
  4. spring.datasource.druid.filter.slf4j.statement-close-after-log-enabled=false
  5. spring.datasource.druid.filter.slf4j.result-set-open-after-log-enabled=false
  6. spring.datasource.druid.filter.slf4j.result-set-close-after-log-enabled=false

4. 输出日志于druid-sql.log

  1. [2018-02-07 14:15:50] DEBUG 134 statementLog - {conn-10001, pstmt-20000} created. INSERT INTO city ( id,name,state ) VALUES( ?,?,? )
  2. [2018-02-07 14:15:50] DEBUG 134 statementLog - {conn-10001, pstmt-20000} Parameters : [null, b2ffa7bd-6b53-4392-aa39-fdf8e172ddf9, a9eb5f01-f6e6-414a-bde3-865f72097550]
  3. [2018-02-07 14:15:50] DEBUG 134 statementLog - {conn-10001, pstmt-20000} Types : [OTHER, VARCHAR, VARCHAR]
  4. [2018-02-07 14:15:50] DEBUG 134 statementLog - {conn-10001, pstmt-20000} executed. 5.113815 millis. INSERT INTO city ( id,name,state ) VALUES( ?,?,? )
  5. [2018-02-07 14:15:50] DEBUG 134 statementLog - {conn-10001, stmt-20001} executed. 0.874903 millis. SELECT LAST_INSERT_ID()
  6. [2018-02-07 14:15:52] DEBUG 134 statementLog - {conn-10001, stmt-20002, rs-50001} query executed. 0.622665 millis. SELECT 1