• 中文
    • English
  • 注册
  • 赞助本站

    • 支付宝
    • 微信
    • QQ

    感谢一直支持本站的所有人!

    • 查看作者
    • SpringBoot:开启日志

      一.  使用日志

      SpringBoot内部使用 Commons Logging 来记录日志想要使用日志,且自动配置了相关依赖,所以直接获取Logger对象使用即可。先获取Logger对象:

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

      其中XXX即为要使用Logger对象的类名,比如在BookController中使用:

      import io.zhangjia.springboot06.aspect.LoggingAspect;
      import io.zhangjia.springboot06.entity.Book;
      import io.zhangjia.springboot06.service.BookService;
      import io.zhangjia.springboot06.util.R;
      
      import org.slf4j.Logger;
      import org.slf4j.LoggerFactory;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.web.bind.annotation.*;
      
      import java.util.List;
      
      
      @RestController
      public class BookController {
          @Autowired
          private BookService bookService;
      
          private Logger logger = LoggerFactory.getLogger(BookController.class);
        
          @GetMapping(value = "/book/{bookId}",produces = "application/json;charset=utf-8")
          public  R book(@PathVariable Integer bookId) {
              Book book = bookService.getBook(bookId);
              logger.info(book.toString());
              return R.success(book);
          }
         
      }

      此时访问http://localhost:8888/book/2,控制台输出:

      2019-07-29 19:34:04.368  INFO 32096 --- [nio-8888-exec-2] i.z.s.controller.BookController: Book{bookId=2, name='我的自传', author='孙著杰', price=25.0}

      其中:

      • 2019-07-29 19:34:04.368  :时间日期:精确到毫秒

      • INFO:日志级别

      • 32096:进程ID

      • --- :分隔符,标识实际日志的开始

      • [nio-8888-exec-2]:线程名:方括号括起来(可能会截断控制台输出)

      • i.z.s.controller.BookController:Logger名:通常使用源代码的类名

      • Book{bookId=2, name='我的自传', author='孙著杰', price=25.0}:日志内容 [1]

      二.  日志等级

      除了上面我们使用到的logger.info外,使用Logger对象还可以输出以下信息

      import io.zhangjia.springboot06.controller.BookController;
      import org.junit.Test;
      import org.junit.runner.RunWith;
      import org.slf4j.Logger;
      import org.slf4j.LoggerFactory;
      import org.springframework.boot.test.context.SpringBootTest;
      import org.springframework.test.context.junit4.SpringRunner;
      
      @RunWith(SpringRunner.class)
      @SpringBootTest
      public class SpringBoot06ApplicationTests {
      
          private Logger logger = LoggerFactory.getLogger(BookController.class);
          @ Test
          public void contextLoads(){
              logger.trace("trace");
              logger.debug("debug");
              logger.info("info"); //
              logger.warn("warn");
              logger.error("error");
          }
      
      }

      这5种不同的日志级别由低到高排列:

      • TRACE:比 DEBUG 级别的粒度更细,一般不会使用

      • DEBUG:指明细致的事件信息,一般用于调试应用

      • INFO:指明描述信息,从粗粒度上描述了应用运行过程。

      • WARN:指明潜在的有害状况。

      • ERROR:指明错误事件,但应用可能还能继续运行。[2]

      我们可以在主配置文件中,定义日志等级,这里以trace为例

      logging:
        level:
          io.zhangjia.springboot06: trace

      其中io.zhangjia.springboot06以为在该包下的所有文件都开启日志。接下来执行测试类,控制台输出:

      2019-07-29 19:56:55.270 DEBUG 36204 --- [main] i.z.s.controller.BookController : debug
      2019-07-29 19:56:55.270  INFO 36204 --- [main] i.z.s.controller.BookController : info
      2019-07-29 19:56:55.270  WARN 36204 --- [main] i.z.s.controller.BookController : warn
      2019-07-29 19:56:55.270 ERROR 36204 --- [main] i.z.s.controller.BookController : error

      如果定制的日志等级为debug,则只会输出info,warn,error,依次类推。

      在主配置文件中,除了定义日志等级外,还可以将日志保存在本地,限定文件大小等设置

      logging:
        level:
          io.zhangjia.springboot06: trace
        file: E:\logs\zhangjia.log

      如果file后的路径不存在,会自动创建。

      参考资料

      [1] flysun3344

      [2] 极客学院

    • 0
    • 0
    • 0
    • 648
    • 请登录之后再进行评论

      登录
    • 做任务
    • 实时动态
    • 偏好设置
    • 返回顶部
    • 单栏布局 侧栏位置: