xxl-job异步任务日志打印到调度器任务管理日志

news/2024/5/19 1:06:37 标签: xxl-job

文章目录

      • 1. xxl-job-core模块添加过滤器
      • 2. 执行器logback.xml添加过滤器配置
      • 3. 测试

1. xxl-job-core模块添加过滤器

package com.xxl.job.core.config;

import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.classic.spi.ThrowableProxy;
import ch.qos.logback.classic.spi.ThrowableProxyUtil;
import ch.qos.logback.core.filter.Filter;
import ch.qos.logback.core.spi.FilterReply;
import com.xxl.job.core.context.XxlJobContext;
import com.xxl.job.core.context.XxlJobHelper;


/**
 * xxl-job日志自定义过滤器
 *
 * @author 万飞
 * @date 2024/02/29
 */
public class XxlJobLogFilter extends Filter<ILoggingEvent> {

    @Override
    public FilterReply decide(ILoggingEvent event) {
        // 判断是否是处于xxl-job上下文中(通过xxl-job调用发起的)
        if (XxlJobContext.getXxlJobContext() != null) {
            // 调用xxl-job记录日志的方法 不同版本的xxl-job记录日志的api不一样
            XxlJobHelper.log(event.getFormattedMessage());
            // 获取ThrowableProxy对象
            ThrowableProxy throwableProxy = (ThrowableProxy) event.getThrowableProxy();
            // 判断是否有异常
            if (throwableProxy != null) {
                // 获取异常信息
                String stackTrace = ThrowableProxyUtil.asString(throwableProxy);
                // 打印异常信息
                XxlJobHelper.log("异常信息: {}", stackTrace);
            }
        }
        // 放行
        return FilterReply.NEUTRAL;
    }
}

2. 执行器logback.xml添加过滤器配置

        <filter class="com.xxl.job.core.config.XxlJobLogFilter"/>

在这里插入图片描述

3. 测试

编写一个异步执行的任务
TestService

package com.xxl.job.executor.service.jobhandler;

/**
 * 测试服务
 *
 * @author 万飞
 * @date 2024/02/29
 */
public interface TestService {

    /**
     * 日志
     */
    void log();
}

TestServiceImpl

package com.xxl.job.executor.service.jobhandler;

import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

/**
 * 测试服务
 *
 * @author 万飞
 * @date 2024/02/29
 */
@Service
@Slf4j
public class TestServiceImpl implements TestService {
    private static Logger logger = LoggerFactory.getLogger(TestServiceImpl.class);

    @Override
    @Async
    @SneakyThrows
    public void log() {
        Thread.sleep(10000);

        logger.info("线程开始执行");
        logger.info("打印日志:这是一条日志信息");
        logger.info("线程执行完毕");

        log.info("lombok info---");
        log.warn("lombok warn---");

        // 测试异常日志打印
        int i = 1/0;
        log.error("lombok error---");
    }
}

SampleXxlJob注入TestService

    @Autowired
    private TestService testService;

添加threadJobHandler任务

    /**
     * 6、多线程任务,日志
     */
    @XxlJob("threadJobHandler")
    public void threadJobHandler() throws Exception {
        testService.log();
        logger.info("线程开始执行-----11111");
    }

启动类开启异步任务@EnableAsync
在这里插入图片描述
启动调度器和执行器
在这里插入图片描述
查看日志
在这里插入图片描述
因为是异步的,任务完成后,等10秒,还会继续打印线程的日志,错误信息也会打印


http://www.niftyadmin.cn/n/5402744.html

相关文章

ChatGPT 4.0:革新文献检索与推荐体验

ChatGPT 4.0&#xff1a;革新文献检索与推荐体验 随着信息时代的到来&#xff0c;学术文献的数量急剧增加&#xff0c;如何快速而准确地检索到所需的文献&#xff0c;以及发现潜在有价值的研究&#xff0c;成为了学术界的一大挑战。ChatGPT 4.0作为最新一代的自然语言处理模型…

移动端的React项目中如何配置自适应和px转rem

创建项目 create-react-app project-name 启动项目 npm start 下载自适应和px转rem的插件 自适应的&#xff1a; npm install lib-flexible --save px转rem的&#xff1a;npm install postcss-pxtorem5.1.1 --save-dev 创建craco.config.js配置文件 在package.json中…

Kotlin 中的 with 函数简介

在 Kotlin 中&#xff0c;with 函数是一个非常方便的工具&#xff0c;它可以帮助简化对特定对象的操作。本文将介绍 with 函数的使用方法&#xff0c;并与 Java 中的实现进行对比。 Kotlin 中的 with 函数 with 函数允许在一个对象上执行一系列操作&#xff0c;而无需重复引用…

假如有n个台阶,一次只能上1个台阶或2个台阶,请问走到第n个台阶有几种走法?

说明如下:假如有 3个台阶&#xff0c;那么总计就有3种走法:第一种为每次上1个台阶&#xff0c;上3次;第二种为先上2个台阶&#xff0c;再上1个台阶;第三种为先上1个台阶&#xff0c;再上2个台阶。 解决方法&#xff1a;递归 代码展示&#xff1a; #include <stdio.h> …

React之组件定义和事件处理

一、组件的分类 在react中&#xff0c;组件分为函数组件和class组件&#xff0c;也就是无状态组件和有状态组件。 * 更过时候我们应该区别使用无状态组件&#xff0c;因为如果有状态组件会触发生命周期所对应的一些函数 * 一旦触发他生命周期的函数&#xff0c;它就会影响当前项…

【K8S类型系统】一文梳理 K8S 各类型概念之间的关系(GVK/GVR/Object/Schema/RestMapper)

参考 k8s 官方文档 https://kubernetes.io/zh-cn/docs/reference/https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/ 重点 Kubernetes源码学习-kubernetes基础数据结构 - 知乎 重点 Kubernetes类型系统 | 李乾坤的博客 重点 k8s源码学习-三大核心数…

Stable Diffusion WebUI 图库浏览器插件:浏览器以前生成的图片

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 大家好,我是水滴~~ 本文介绍的插件叫图库浏览器,是一个用于浏览器以前生成的图片信息的插件。本文将介绍该插件的安装和使用,希望能够对你有所帮助。 文章目录 安装使用这是一个图片浏览器,用于浏览以前生成的…

Pycharm一直打不开,无任何报错

我windows安装了pycharm一直打不开(无论专业版还是社区版都打不开)&#xff0c;无任何弹窗&#xff0c;无任何报错 最后解决问题&#xff1a; 查看环境变量PYCHARM_VM_OPTIONS 发现有一个环境变量PYCHARM_VM_OPTIONS 删除PYCHARM_VM_OPTIONS这个环境变量&#xff0c;pycharm终…