首先我们平时看到的日志是长这个样子的:
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:日志换行。