专栏首页生活不止眼前的代码Spring-LogBack笔记(1) - 基础使用

Spring-LogBack笔记(1) - 基础使用

Spring-LogBack笔记(1) - 基础使用

Spring内部集成了LogBack的日志组件

日志等级分为6种

public enum LogLevel {

	TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF

}

OFF是关闭日志

其他6种从低到高分别是

TRACE < DEBUG < INFO < WARN < ERROR < FATAL

FATAL这个比较特殊,log的方法里面没有这个方法,指出每个严重的错误事件将会导致应用程序的退出。这个级别比较高了。重大错误,这种级别你可以直接停止程序了

在spring里面可以通过配置文件对每个类或者包的日志等级进行控制,低于配置等级的日志将不会执行

在spring里面使用日志打印也很简单,主要有两种方式

一种是通过LogFactory

   private Logger logger = LoggerFactory.getLogger(LogController.class);


    private void print(String key) {
        logger.trace("key: {}", key);
        logger.debug("key: {}", key);
        logger.info("key: {}", key);
        logger.warn("key: {}", key);
        logger.error("key: {}", key);
        System.out.println("key: {}" + key);
    }

另外一种通过@Slf4j在类上面的注解可以直接使用,这种需要先引入Lombok的包

private void print(String key) {
        log.trace("key: {}", key);
        log.debug("key: {}", key);
        log.info("key: {}", key);
        log.warn("key: {}", key);
        log.error("key: {}", key);
        System.out.println("key: {}" + key);
    }

这里就使用@Slf4j在类上面的注解形式在测试

默认配置所有的日志等级都是info,日志等级配置不区分大小写

写个demo测试一下

@Slf4j
@RestController
@RequestMapping("/log")
public class LogController {

    private void print(String key) {
        log.trace("key: {}", key);
        log.debug("key: {}", key);
        log.info("key: {}", key);
        log.warn("key: {}", key);
        log.error("key: {}", key);
        System.out.println("key: {}" + key);
    }


    @GetMapping("/test")
    public String test(@RequestParam String key) {
        print(key);
        return key;
    }
}

输出打印

[http-nio-8801-exec-1] INFO  com.mt.demo.client.controller.LogController - key: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
[http-nio-8801-exec-1] WARN  com.mt.demo.client.controller.LogController - key: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
[http-nio-8801-exec-1] ERROR com.mt.demo.client.controller.LogController - key: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
key: {}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

例如配置

logging:
  level:
    com:
      mt:
        demo:
          client:
            controller:
              LogController: error

输出打印

[http-nio-8801-exec-2] ERROR com.mt.demo.client.controller.LogController - key: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
key: {}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

这种可以配置的方式在生产调试问题的时候还是比较方便的,例如在程序里打上debug的日志,需要调试的时候再动态开启

logging:
  level:
    com:
      mt:
        demo:
          client:
            controller:
              LogController: debug

输出打印

[http-nio-8801-exec-1] DEBUG com.mt.demo.client.controller.LogController - key: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
[http-nio-8801-exec-1] INFO  com.mt.demo.client.controller.LogController - key: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
[http-nio-8801-exec-1] WARN  com.mt.demo.client.controller.LogController - key: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
[http-nio-8801-exec-1] ERROR com.mt.demo.client.controller.LogController - key: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
key: {}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Swagger-ui在文件上传时报错net::ERR_CONNECTION_RESET

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    yingzi_code
  • JAVA线程池的几种使用方式以及线程同步详解

    volatile还有一个重要的作用是禁止指令重排序优化,举个例子 下面代码中如果initFlag不用volatile修饰的话,就不能保证程序在运行的时候num...

    yingzi_code
  • RabbitMQ笔记(六)-BlockedListener

    这个监听器在服务器内存报警或者硬盘报警的情况下,使用发送接口会产生阻塞,如果发送和接受等使用同一个连接,则会都阻塞,因此我们应该为消费者和生产者使用不同的Cac...

    yingzi_code
  • redis的一些简介

    Redis是Remote Dictionary Server的缩写,他本质上一个Key/Value数据库,与Memcached类似的NoSQL型数据库。

    一见
  • Redis学习二(数据操作).

    在 redis-cli 中使用中文时,必须打开 --raw 选项,才能正常显示中文。

    JMCui
  • redis学习(二十一)

    这里列出了一些String常用命令,我们看一下这些String类型的这些命令可以应用到哪些场景。

    崔笑颜
  • Redis详解

    1.关于关系型数据库和nosql数据库 关系型数据库是基于关系表的数据库,最终会将数据持久化到磁盘上,而nosql数据 库是基于特殊的结构,并将数据存储到内存的...

    用户5927264
  • redis

    1)Redis:REmote DIctionary Server(远程字典服务器)

    用户2337871
  • 在微博微信场景下学习Redis数据结构

    这个是微信公众号的文章阅读量数量的统计,可以通过redis的string数据结构来解决。使用incr原子操作命令,redis的key是article:readc...

    程序员小强
  • vue和react中循环key的作用

    没用过react开发项目,但想来跟vue在循环渲染中key的作用应该原理是一样的。循环在没有使用key的时候,vue会警告。但是这个key的作用是什么。

    wade

扫码关注云+社区

领取腾讯云代金券