add p6spy

This commit is contained in:
lijiarao
2023-08-28 11:50:06 +08:00
parent 82d42b63f3
commit 4dc1d81f09
6 changed files with 127 additions and 92 deletions
+4 -1
View File
@@ -222,7 +222,10 @@
<groupId>com.squareup.okhttp3</groupId> <groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId> <artifactId>okhttp</artifactId>
</dependency> </dependency>
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>
+4
View File
@@ -58,6 +58,10 @@
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>
@@ -141,15 +141,15 @@ spring:
poolPreparedStatements: true poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20 maxPoolPreparedStatementPerConnectionSize: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,slf4j filters: stat,slf4j
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录 # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000;druid.stat.logSlowSql\=true connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000;druid.stat.logSlowSql\=true
datasource: datasource:
master: master:
url: jdbc:mysql://10.10.10.44:3306/laws-sinotruk?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true url: jdbc:p6spy:mysql://10.10.10.44:3306/laws-sinotruk?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
username: root username: root
password: hzwlsoft.com password: hzwlsoft.com
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.p6spy.engine.spy.P6SpyDriver
# url: jdbc:mysql://127.0.0.1:3306/jero-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai # url: jdbc:mysql://127.0.0.1:3306/jero-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
# username: root # username: root
# password: 123456 # password: 123456
@@ -203,11 +203,11 @@ mybatis-plus:
id-type: ASSIGN_ID id-type: ASSIGN_ID
# 默认数据库表下划线命名 # 默认数据库表下划线命名
table-underline: true table-underline: true
configuration: # configuration:
# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 返回类型为Map,显示null对应的字段 # 返回类型为Map,显示null对应的字段
call-setters-on-nulls: true # call-setters-on-nulls: true
#jero专用配置 #jero专用配置
jero: jero:
# 签名密钥串(前后端要一致,正式发布请自行修改) # 签名密钥串(前后端要一致,正式发布请自行修改)
@@ -14,7 +14,8 @@
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}:%L) - %msg%n</pattern> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %magenta([%thread]) %highlight(%-5level) \(%F:%L\) - %msg%n</pattern>
<!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}:%L) - %msg%n</pattern>-->
<charset>UTF-8</charset> <charset>UTF-8</charset>
</encoder> </encoder>
</appender> </appender>
@@ -26,7 +27,7 @@
<FileNamePattern>${LOG_HOME}/${PROJECT_NAME}/${LOG_HOME_SYSTEM}/${PROJECT_NAME}-%d{yyyy-MM-dd}.%i.log</FileNamePattern> <FileNamePattern>${LOG_HOME}/${PROJECT_NAME}/${LOG_HOME_SYSTEM}/${PROJECT_NAME}-%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数 --> <!--日志文件保留天数 -->
<MaxHistory>30</MaxHistory> <MaxHistory>30</MaxHistory>
<maxFileSize>100MB</maxFileSize> <maxFileSize>10MB</maxFileSize>
</rollingPolicy> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 --> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
@@ -36,93 +37,93 @@
</appender> </appender>
<!-- 生成 error日志开始 --> <!-- 生成 error日志开始 -->
<appender name="SYSTEM_ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- <appender name="SYSTEM_ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!-- 过滤器,只打印ERROR级别的日志 --> <!-- &lt;!&ndash; 过滤器,只打印ERROR级别的日志 &ndash;&gt;-->
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
<level>ERROR</level> <!-- <level>ERROR</level>-->
<onMatch>ACCEPT</onMatch> <!-- <onMatch>ACCEPT</onMatch>-->
<onMismatch>DENY</onMismatch> <!-- <onMismatch>DENY</onMismatch>-->
</filter> <!-- </filter>-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
<!--日志文件输出的文件名--> <!-- &lt;!&ndash;日志文件输出的文件名&ndash;&gt;-->
<FileNamePattern>${LOG_HOME}/${PROJECT_NAME}/${LOG_HOME_SYSTEM}/${PROJECT_NAME}-error.%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!-- <FileNamePattern>${LOG_HOME}/${PROJECT_NAME}/${LOG_HOME_SYSTEM}/${PROJECT_NAME}-error.%d{yyyy-MM-dd}.%i.log</FileNamePattern>-->
<!--日志文件保留天数--> <!-- &lt;!&ndash;日志文件保留天数&ndash;&gt;-->
<MaxHistory>30</MaxHistory> <!-- <MaxHistory>30</MaxHistory>-->
<!--日志文件最大的大小--> <!-- &lt;!&ndash;日志文件最大的大小&ndash;&gt;-->
<MaxFileSize>100MB</MaxFileSize> <!-- <MaxFileSize>100MB</MaxFileSize>-->
</rollingPolicy> <!-- </rollingPolicy>-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!-- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">-->
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <!-- &lt;!&ndash;格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符&ndash;&gt;-->
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n</pattern> <!-- <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n</pattern>-->
<charset>UTF-8</charset> <!-- <charset>UTF-8</charset>-->
</encoder> <!-- </encoder>-->
</appender> <!-- </appender>-->
<!-- 生成 error 日志结束 --> <!-- 生成 error 日志结束 -->
<!-- 每天生成一个html格式的日志开始 --> <!-- 每天生成一个html格式的日志开始 -->
<appender name="SYSTEM_FILE_HTML" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- <appender name="SYSTEM_FILE_HTML" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
<!--日志文件输出的文件名 --> <!-- &lt;!&ndash;日志文件输出的文件名 &ndash;&gt;-->
<FileNamePattern>/${PROJECT_NAME}/${LOG_HOME_SYSTEM}/${PROJECT_NAME}-%d{yyyy-MM-dd}.%i.html</FileNamePattern> <!-- <FileNamePattern>/${PROJECT_NAME}/${LOG_HOME_SYSTEM}/${PROJECT_NAME}-%d{yyyy-MM-dd}.%i.html</FileNamePattern>-->
<!--日志文件保留天数 --> <!-- &lt;!&ndash;日志文件保留天数 &ndash;&gt;-->
<MaxHistory>30</MaxHistory> <!-- <MaxHistory>30</MaxHistory>-->
<MaxFileSize>100MB</MaxFileSize> <!-- <MaxFileSize>100MB</MaxFileSize>-->
</rollingPolicy> <!-- </rollingPolicy>-->
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <!-- <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">-->
<layout class="ch.qos.logback.classic.html.HTMLLayout"> <!-- <layout class="ch.qos.logback.classic.html.HTMLLayout">-->
<pattern>%p%d%msg%M%F{32}%L</pattern> <!-- <pattern>%p%d%msg%M%F{32}%L</pattern>-->
</layout> <!-- </layout>-->
</encoder> <!-- </encoder>-->
</appender> <!-- </appender>-->
<!-- 每天生成一个html格式的日志结束 --> <!-- 每天生成一个html格式的日志结束 -->
<!-- Druid日志输出,用于记录执行INFO级别的慢SQL --> <!-- Druid日志输出,用于记录执行INFO级别的慢SQL -->
<appender name="DRUID_SLOWSQL_INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- <appender name="DRUID_SLOWSQL_INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!-- LevelFilter: 级别过滤器,根据日志级别进行过滤 --> <!-- &lt;!&ndash; LevelFilter: 级别过滤器,根据日志级别进行过滤 &ndash;&gt;-->
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
<level>INFO</level> <!-- <level>INFO</level>-->
<onMatch>ACCEPT</onMatch> <!-- <onMatch>ACCEPT</onMatch>-->
<onMismatch>DENY</onMismatch> <!-- <onMismatch>DENY</onMismatch>-->
</filter> <!-- </filter>-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
<!--日志文件输出的文件名--> <!-- &lt;!&ndash;日志文件输出的文件名&ndash;&gt;-->
<FileNamePattern>${LOG_HOME}/${PROJECT_NAME}/${LOG_HOME_DRUID}/${PROJECT_NAME}.druid_info.%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!-- <FileNamePattern>${LOG_HOME}/${PROJECT_NAME}/${LOG_HOME_DRUID}/${PROJECT_NAME}.druid_info.%d{yyyy-MM-dd}.%i.log</FileNamePattern>-->
<!--日志文件保留天数--> <!-- &lt;!&ndash;日志文件保留天数&ndash;&gt;-->
<MaxHistory>15</MaxHistory> <!-- <MaxHistory>15</MaxHistory>-->
<!--日志文件最大的大小--> <!-- &lt;!&ndash;日志文件最大的大小&ndash;&gt;-->
<MaxFileSize>100MB</MaxFileSize> <!-- <MaxFileSize>100MB</MaxFileSize>-->
</rollingPolicy> <!-- </rollingPolicy>-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!-- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">-->
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <!-- &lt;!&ndash;格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符&ndash;&gt;-->
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n</pattern> <!-- <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n</pattern>-->
<charset>UTF-8</charset> <!-- <charset>UTF-8</charset>-->
</encoder> <!-- </encoder>-->
</appender> <!-- </appender>-->
<!-- Druid打印的日志文件,用于记录执行WARN级别的SQL --> <!-- Druid打印的日志文件,用于记录执行WARN级别的SQL -->
<appender name="DRUID_SLOWSQL_WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- <appender name="DRUID_SLOWSQL_WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">-->
<level>WARN</level> <!-- <level>WARN</level>-->
</filter> <!-- </filter>-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">-->
<!--日志文件输出的文件名--> <!-- &lt;!&ndash;日志文件输出的文件名&ndash;&gt;-->
<FileNamePattern>${LOG_HOME}/${PROJECT_NAME}/${LOG_HOME_DRUID}/${PROJECT_NAME}.druid_warn.%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!-- <FileNamePattern>${LOG_HOME}/${PROJECT_NAME}/${LOG_HOME_DRUID}/${PROJECT_NAME}.druid_warn.%d{yyyy-MM-dd}.%i.log</FileNamePattern>-->
<!--日志文件保留天数--> <!-- &lt;!&ndash;日志文件保留天数&ndash;&gt;-->
<MaxHistory>30</MaxHistory> <!-- <MaxHistory>30</MaxHistory>-->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">-->
<maxFileSize>100MB</maxFileSize> <!-- <maxFileSize>100MB</maxFileSize>-->
</timeBasedFileNamingAndTriggeringPolicy> <!-- </timeBasedFileNamingAndTriggeringPolicy>-->
</rollingPolicy> <!-- </rollingPolicy>-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!-- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">-->
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <!-- &lt;!&ndash;格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符&ndash;&gt;-->
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n</pattern> <!-- <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n</pattern>-->
<charset>UTF-8</charset> <!-- <charset>UTF-8</charset>-->
</encoder> <!-- </encoder>-->
</appender> <!-- </appender>-->
<!--myibatis log configure --> <!--myibatis log configure -->
<logger name="com.apache.ibatis" level="TRACE" /> <logger name="com.apache.ibatis" level="TRACE" />
@@ -130,20 +131,20 @@
<logger name="java.sql.Statement" level="DEBUG" /> <logger name="java.sql.Statement" level="DEBUG" />
<logger name="java.sql.PreparedStatement" level="DEBUG" /> <logger name="java.sql.PreparedStatement" level="DEBUG" />
<logger name="com.alibaba.druid.filter.stat.StatFilter" level="INFO" additivity="true"> <!-- <logger name="com.alibaba.druid.filter.stat.StatFilter" level="INFO" additivity="true">-->
<appender-ref ref="DRUID_SLOWSQL_INFO_FILE"/> <!-- <appender-ref ref="DRUID_SLOWSQL_INFO_FILE"/>-->
</logger> <!-- </logger>-->
<logger name="com.alibaba.druid.filter.stat.StatFilter" level="WARN"> <!-- <logger name="com.alibaba.druid.filter.stat.StatFilter" level="WARN">-->
<appender-ref ref="DRUID_SLOWSQL_WARN_FILE"/> <!-- <appender-ref ref="DRUID_SLOWSQL_WARN_FILE"/>-->
</logger> <!-- </logger>-->
<!-- 日志输出级别 --> <!-- 日志输出级别 -->
<root level="INFO"> <root level="INFO">
<appender-ref ref="STDOUT" /> <appender-ref ref="STDOUT" />
<appender-ref ref="SYSTEM_FILE" /> <appender-ref ref="SYSTEM_FILE" />
<appender-ref ref="SYSTEM_ERROR_FILE" /> <!-- <appender-ref ref="SYSTEM_ERROR_FILE" />-->
<appender-ref ref="SYSTEM_FILE_HTML" /> <!-- <appender-ref ref="SYSTEM_FILE_HTML" />-->
</root> </root>
</configuration> </configuration>
@@ -0,0 +1,22 @@
module.log=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
# 使用日志系统记录sql
appender=com.p6spy.engine.spy.appender.Slf4JLogger
# 是否开启日志过滤 默认false, 这项配置是否生效前提是配置了 include/exclude/sqlexpression
filter=true
## 过滤 Log 时所排除的表名列表,以逗号分隔。
exclude=QRTZ_SCHEDULER_STATE,QRTZ_TRIGGERS,QRTZ_LOCKS,QRTZ_FIRED_TRIGGERS,dual,QRTZ_CRON_TRIGGERS,QRTZ_JOB_DETAILS,QRTZ_CRON_TRIGGERS,QRTZ_PAUSED_TRIGGER_GRPS
## 配置记录Log例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories=info,debug,result,commit,resultset
# 设置使用p6spy driver来做代理
deregisterdrivers=true
# 日期格式
dateformat=yyyy-MM-dd HH:mm:ss
databaseDialectTimestampFormat = yyyy-MM-dd HH:mm:ss
# 实际驱动
driverlist=com.mysql.cj.jdbc.Driver
# 是否开启慢SQL记录
outagedetection=true
# 慢SQL记录标准 秒
outagedetectioninterval=2
# mybatisplus自定义日志打印
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
+5
View File
@@ -308,6 +308,11 @@
<artifactId>spire.office.free</artifactId> <artifactId>spire.office.free</artifactId>
<version>5.3.1</version> <version>5.3.1</version>
</dependency> </dependency>
<dependency>
<artifactId>p6spy</artifactId>
<groupId>p6spy</groupId>
<version>3.9.1</version>
</dependency>
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>