一. 使用日志
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后的路径不存在,会自动创建。
请登录之后再进行评论