logback学习(一)日志打印格式

官网文档学习:http://logback.qos.ch/manual/layouts.html

往下一拉,来到Conversion Word这个表格,里面就是配置参数的选择了,重点挑几个学习学习

c{length}、lo{length}、logger{length}

在记录事件的起点输出记录器的名称。

这个日志的起点,就是在哪个文件下打印的,会将所属包名和文件名都列出来,加了长度,就会缩写。
如有个mainPackage.sub.sample.Bard的日志名,我将格式写在左手边,结果打印写在右手边
%logger:mainPackage.sub.sample.Bar
%logger{0}:Bar
%logger{5}:m.s.s.Bar
%logger{10}:m.s.s.Bar
%logger{15}:m.sub.sample.Bar
很明显看出,不指定长度,就默认输出完整的。指定0,至少都会输出一个词。其他的,只有当超过单词的长度,才会完整输出,要不然都是首字母显示

这个缩写还是有点好处的,毕竟在一个项目中,有可能类名会重复,只是说包名不一致,完整的将日志名都打印出来,未免会占用大量的数据,因此用缩写也很方便

C{length}、class{length}

输出发出日志记录请求的调用方的全限定类名。

跟上面的用法差不多,只是输出的这个日志记录的调用方,而且这个文档上有一句话Generating the caller class information is not particularly fast. Thus, its use should be avoided unless execution speed is not an issue。生成这个呼叫者信息的速度不是特别快,应该避免用它,想想就知道不可能快的,因为要溯源找到这个呼叫者

contextName、cn

输出事件起源处的记录器所附加到的记录器上下文的名称。

实际上就是你的xml中configuration下的contextName字段,如果不是汇集类型的日志,用这个没多大意义

d{pattern}、date{pattern}、d{pattern, timezone}、date{pattern, timezone}

时期格式我就不列了,没多大差别,我一般用的是%d{yyyy-MM-dd HH:mm:ss:SSS}

F / file

输出发出记录请求的Java源文件的文件名。

实际上文档上不推荐用这个,logger那跟这个很相似,我打印出来对比,手动记录的,一般来说他们俩的文件都是一致的,除非有些是jar打印的。这种也找不到是在哪一行打印的,有些是喜欢用这个命令再结合line用来定位(line也不推荐使用)

L / line

输出发出日志记录请求的行号

文档不推荐使用,个人觉得也没什么必要,一般都是看错误日志,一旦有异常,会打印异常栈,那还是可以定位到哪一行代码的,除非自己有特殊业务的需求

m / msg / message

输出与日志记录事件关联的应用程序提供的消息。

打印的内容

M / method

在发出记录请求的地方输出方法名称。

不建议使用

n

输出平台相关的行分隔符或多个字符。

该转换字提供的性能几乎与使用不可移植的行分隔符字符串(例如“ \ n”或“ \ r \ n”)相同。 因此,这是指定行分隔符的首选方式。

就是用来控制日志格式的,日志系统分析日志的时候按格式切分会比较好

p / le / level

顾名思义,输出日志记录事件的级别

r / relative

输出从应用程序启动到创建日志记录事件为止经过的毫秒数。

t / thread

输出生成日志事件的线程的名称。

自义定的线程需要指定个名字,方便错误溯源(阿里巴巴java规范强制)

你可能感兴趣的:(学习,logback)