开发者社区> 问答> 正文

我能打印出 info 级别的日志,但是 error 级别的没打印出来,请问是什么问题?

我能打印出 info 级别的日志,但是 error 级别的没打印出来,请问是什么问题lADPJwKt5O-ZGD3NCpjNBMQ_1220_2712.jpg

展开
收起
oyv2sdtrmu4d4 2023-09-09 09:15:04 821 0
2 条回答
写回答
取消 提交回答
  • 查看输出的日志
    登录分布式任务调度平台。

    在左侧导航栏单击任务管理。

    在任务列表中找到目标任务,在目标任务的操作列选择AAA > 历史记录。

    在任务示例记录页面单击目标任务操作列的日志。

    2f88ab77bdc1674fc1136404e0058d53_p396326.png

    查询业务失败的原因
    SchedulerX 2.0的日志服务,可以收集任务的执行日志和异常,包括Service的日志都可以收集。

    新建任务代码,配置使用SchedulerX打印日志。

    ```package com.hxm.test.processor;

    import com.alibaba.schedulerx.test.service.TestService;
    import com.alibaba.schedulerx.worker.domain.JobContext;
    import com.alibaba.schedulerx.worker.processor.JavaProcessor;
    import com.alibaba.schedulerx.worker.processor.ProcessResult;

    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;

    @Component
    public class HelloWorldJob extends JavaProcessor {
    //使用SchedulerX收集日志
    private static final Logger LOGGER = LogManager.getLogger("schedulerx");

    @Autowired
    private TestService testService;
    
    @Override
    public ProcessResult process(JobContext context) throws Exception {
        String parameters = context.getJobParameters();
        String tokens[] = parameters.split(" ");
        int a = Integer.valueOf(tokens[0]);
        int b = Integer.valueOf(tokens[1]);
        int c = testService.doDivision(a, b);
        LOGGER.info("testService.doDivision finished, a={}, b={}, c={}", a, b, c);
        if (c < 0) {
            return new ProcessResult(false, "result=" + c);
        }
        return new ProcessResult(true);
    }
    

    }
    ```

    控制台配置任务。

    根据代码逻辑可知1除以0肯定会抛出异常。

    f9b7bc0205b0a279e03183eb71397ba6_p399345.png

    任务运行一次后,通过任务实例列表,查看日志。

    f72e39499b6f36ad8c3530908f22fb87_p399353.png

    根据日志内容,可得出失败的原因是TestServiceImpl抛出了除0的异常。

    03e897ffda8879b7858f224f23a3d1ed_p399357.png

    2023-09-09 13:40:58
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    重启试试

    无法打印 error 级别的日志可能有以下几个原因:

    1. 配置问题:请检查您的日志配置文件(例如 log4j、logback 或 java.util.logging 等)中是否正确设置了 error 级别的日志输出。确保 error 级别对应的输出目标(如文件、控制台等)是启用的。
    2. 级别不匹配:请检查您在代码中设置的日志级别是否与配置文件中定义的级别匹配。例如,如果您在代码中使用了 Logger.info(),但配置文件中 error 级别的输出目标没有启用,那么 error 级别的日志将不会被打印。
    3. 日志输出被抑制:请检查您的代码中是否有使用 Logger.setLevel() 方法设置了日志输出的最低级别,导致 error 级别的日志无法输出。如果您在代码中设置了 Logger.setLevel(Level.INFO),那么只有 info 级别及以上的日志才会被打印,error 级别的日志将不会被打印。
    4. 代码中未使用 error 级别的日志方法:请检查您的代码中是否使用了错误的日志方法。例如,如果您使用了 Logger.info() 方法,但期望输出 error 级别的日志,那么您需要使用 Logger.error() 方法。
    5. 日志库问题:请确保您使用的日志库是正确安装和配置的。
    2023-09-09 10:41:55
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
问答排行榜
最热
最新

相关电子书

更多
PostgresChina2018_赖思超_PostgreSQL10_hash索引的WAL日志修改版final 立即下载
Kubernetes下日志实时采集、存储与计算实践 立即下载
日志数据采集与分析对接 立即下载