Spring Boot 默认日志配置的相关设置
首先我们平时看到的日志是长这个样子的:
A:日期和时间
B:日志级别,分别有:ERROR、WARN、INFO、DEBUG、TRACE
C:进程ID
D 分隔符,后面的是日志消息
E:线程的名称
F:类名
G:消息体
Spring Boot 使用的是LogBack 作为日志的实现,接口使用的是 apache Commons Logging 。我们在代码中是这么用的:
private Log log = LogFactory.getLog(UsersController.class);
mv.addObject("password", cmd.getPassword());
mv.addObject("userName", cmd.getUserName());
log.error("用户名为:"+cmd.getUserName()+"密码为:"+cmd.getPassword());
执行打印为:
2018-06-20 21:33:38.765 ERROR 6668 --- [nio-8080-exec-3] com.hlm.controller.UsersController : 用户名为:小明密码为:123456
默认情况是打印INFO 级别以上的信息,比如我在代码中设置一个DEBUG级别的,它是不会打印出来的
mv.addObject("password", cmd.getPassword());
mv.addObject("userName", cmd.getUserName());
log.error("用户名为:"+cmd.getUserName()+"密码为:"+cmd.getPassword());
log.debug("我是DEBUG级别打印");
如果我想设置打印级别,可以在application.properties 中设置
logging.level.root=debug
打印结果为:
除此之处,你会发现无论是启动信息还是URL跳转时的打印信息都会比以前多。
logging.level.root 的意思就是所类的打印信息都是这个级别,当然我们还可以指定某个包名的类的日志级别
logging.level.com.hlm.controller=debug
这样,除了你指定包下的类会是debug级别,其他的还是默认的info。
在默认的情况下,是没有指定日志输出到文件的。当然,想要输出我们是可以设置的
logging.file=mylog.log
启动项目后,刷新一下左边的工程目录,就可以看到多了一个你命名的日志文件
它默认是保存在工程的目录下,当然这个你也可以指定位置
logging.path=d:/log
这样就会将生成的日志文件保存到相应的位置上去了。
一天始的时候我们就提到了工作台中打印的日志的格式,其实这个我们也是可以设置的。
logging.pattern.console= %level %date{HH:mm:ss} --> %logger{30}.%M.%L:%m%n
大家可以看到工作台输出的日志已经变为我设置的样子了
但是我日志记录文件中的却还是默认的
如果我们想让文件中记录的也像工作台中的输出一样,那么得多加一项配置
logging.pattern.file= %level %date{HH:mm:ss}--> %logger{30}.%M.%L:%m%n
其中:
%level :日志级别;
%date:日志发生时间;
%logger:用于输出Logger 的名字,包名+类名;
%thread 当前线程名;
%M:日志发生时的方法名;
%L:日志调用所在代码行;
%m:日志消息;
%n:日志换行。