xxl-job打印sql日志
【摘要】 在XXL-JOB中打印SQL日志,通常需要结合XXL-JOB任务执行时所使用的持久化框架(如MyBatis、JPA等)的日志配置来实现。以下是针对不同场景的详细解决方案: 1. 确认XXL-JOB任务的持久化框架XXL-JOB的任务调度和执行通常涉及数据库操作(如任务存储、日志记录等)。如果任务执行过程中涉及自定义的数据库操作(例如通过MyBatis或JPA操作业务数据),则需要配置相应框架...
在XXL-JOB中打印SQL日志,通常需要结合XXL-JOB任务执行时所使用的持久化框架(如MyBatis、JPA等)的日志配置来实现。以下是针对不同场景的详细解决方案:
1. 确认XXL-JOB任务的持久化框架
XXL-JOB的任务调度和执行通常涉及数据库操作(如任务存储、日志记录等)。如果任务执行过程中涉及自定义的数据库操作(例如通过MyBatis或JPA操作业务数据),则需要配置相应框架的日志输出。
2. 针对MyBatis的SQL日志配置
如果XXL-JOB任务中使用了MyBatis进行数据库操作,可以通过以下方式打印SQL日志:
方法一:在application.properties
或application.yml
中配置
# MyBatis日志配置(适用于Spring Boot项目)
logging.level.org.mybatis=DEBUG # MyBatis核心日志
logging.level.com.yourpackage.mapper=TRACE # 你的Mapper接口包路径(输出SQL和参数)
方法二:在Logback/Log4j2配置文件中细化
<!-- Logback示例 (logback-spring.xml) -->
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- MyBatis日志 -->
<logger name="org.mybatis" level="DEBUG"/>
<logger name="com.yourpackage.mapper" level="TRACE"/> <!-- 输出SQL和参数 -->
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
效果
- 在任务执行时,控制台或日志文件中会输出类似以下内容:
DEBUG c.y.m.UserMapper.selectById - ==> Preparing: SELECT id, name FROM user WHERE id = ? DEBUG c.y.m.UserMapper.selectById - ==> Parameters: 1(Integer) TRACE c.y.m.UserMapper.selectById - <== Total: 1
3. 针对JPA/Hibernate的SQL日志配置
如果XXL-JOB任务中使用了JPA/Hibernate进行数据库操作,可以通过以下方式打印SQL日志:
方法一:在application.properties
中配置
# JPA/Hibernate SQL日志配置
spring.jpa.show-sql=true # 显示SQL语句
spring.jpa.properties.hibernate.format_sql=true # 格式化SQL语句
logging.level.org.hibernate.SQL=DEBUG # Hibernate SQL日志
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE # 参数绑定日志
方法二:在Logback/Log4j2配置文件中细化
<!-- Logback示例 -->
<logger name="org.hibernate.SQL" level="DEBUG"/>
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>
效果
- 在任务执行时,控制台或日志文件中会输出类似以下内容:
Hibernate: select user0_.id as id1_0_, user0_.name as name2_0_ from user user0_ where user0_.id=? binding parameter [1] as [INTEGER] - [1]
4. 针对XXL-JOB自身SQL日志的配置
XXL-JOB本身使用数据库进行任务调度和日志存储(如xxl_job_info
、xxl_job_log
等表)。如果需要查看XXL-JOB自身的SQL日志(例如调度器初始化时的SQL),可以:
方法一:配置XXL-JOB的日志级别
XXL-JOB的日志通常通过Logback或Log4j2输出。可以在日志配置文件中增加以下配置:
<!-- Logback示例 -->
<logger name="com.xxl.job.core" level="DEBUG"/> <!-- XXL-JOB核心日志 -->
<logger name="com.xxl.job.admin" level="DEBUG"/> <!-- XXL-JOB Admin日志 -->
方法二:配置数据源日志
如果XXL-JOB使用了连接池(如HikariCP),可以配置连接池的日志级别:
logging.level.com.zaxxer.hikari=DEBUG # 连接池日志
5. 完整示例(MyBatis + XXL-JOB)
假设你的XXL-JOB任务中使用了MyBatis进行数据库操作,以下是完整的配置示例:
application.properties
# XXL-JOB配置
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
xxl.job.executor.appname=xxl-job-executor-sample
xxl.job.executor.ip=
xxl.job.executor.port=9999
xxl.job.accessToken=
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
xxl.job.executor.logretentiondays=30
# MyBatis日志配置
logging.level.org.mybatis=DEBUG
logging.level.com.yourpackage.mapper=TRACE
logback-spring.xml
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- MyBatis日志 -->
<logger name="org.mybatis" level="DEBUG"/>
<logger name="com.yourpackage.mapper" level="TRACE"/>
<!-- XXL-JOB日志 -->
<logger name="com.xxl.job.core" level="DEBUG"/>
<logger name="com.xxl.job.admin" level="DEBUG"/>
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
6. 注意事项
-
日志级别选择:
DEBUG
:输出SQL语句。TRACE
:输出SQL语句和参数绑定(MyBatis需要配置com.yourpackage.mapper
为TRACE
)。- 生产环境建议避免使用
TRACE
级别,以免日志量过大。
-
性能影响:
- 开启SQL日志会增加日志量,可能影响性能,建议在调试时使用。
-
XXL-JOB日志与业务日志分离:
- 如果需要区分XXL-JOB调度日志和业务SQL日志,可以通过不同的日志文件或Appender进行配置。
7. 总结
- MyBatis任务:配置
logging.level.org.mybatis=DEBUG
和logging.level.com.yourpackage.mapper=TRACE
。 - JPA/Hibernate任务:配置
spring.jpa.show-sql=true
和logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
。 - XXL-JOB自身日志:配置
logging.level.com.xxl.job.core=DEBUG
。
通过以上配置,你可以在XXL-JOB任务执行时清晰地看到SQL日志,便于调试和优化任务中的数据库操作。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)