日志的位置信息包含哪些?
- %C or $class:类名
- %F or %file:文件名
- %L or %line:打印日志的方法所在文件的行数
- %M or %method:打印日志的方法名
- %l or %location:包含以上的位置信息
打印日志位置有什么影响?
官方文档上强调了三遍,位置使用要慎用慎用。相比于不使用位置信息:
- 对于同步日志来说,速度要慢3~5倍
- 对于异步日志来说,速度要慢30~100倍
日志位置是怎么获取到的?
提示:includeLocation必须得设置为true
以AsyncLogger为例, 从处理日志事件开始看起:
- AsyncLoggerConfig
protected void callAppenders(final LogEvent event) {
//填充属性
populateLazilyInitializedFields(event);
///把日志事件入队
if (!delegate.tryEnqueue(event, this)) {
handleQueueFull(event);
}
}
private void populateLazilyInitializedFields(final LogEvent event) {
//这里
event.getSource();
event.getThreadName();
}