xxl-job打印sql日志

举报
林欣 发表于 2025/05/16 16:07:47 2025/05/16
【摘要】 在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.propertiesapplication.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_infoxxl_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. 注意事项

  1. 日志级别选择

    • DEBUG:输出SQL语句。
    • TRACE:输出SQL语句和参数绑定(MyBatis需要配置com.yourpackage.mapperTRACE)。
    • 生产环境建议避免使用TRACE级别,以免日志量过大。
  2. 性能影响

    • 开启SQL日志会增加日志量,可能影响性能,建议在调试时使用。
  3. XXL-JOB日志与业务日志分离

    • 如果需要区分XXL-JOB调度日志和业务SQL日志,可以通过不同的日志文件或Appender进行配置。

7. 总结

  • MyBatis任务:配置logging.level.org.mybatis=DEBUGlogging.level.com.yourpackage.mapper=TRACE
  • JPA/Hibernate任务:配置spring.jpa.show-sql=truelogging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
  • XXL-JOB自身日志:配置logging.level.com.xxl.job.core=DEBUG

通过以上配置,你可以在XXL-JOB任务执行时清晰地看到SQL日志,便于调试和优化任务中的数据库操作。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。