Java中Log4j的最佳实践
通用
- 把ThreadName, RequestId放到MDC, 加到pattern里.
异步日志
使用 log4j2 asyncLogger 来异步打印
- 不要在pattern里增加location相关信息, 例如class, file, location, line, method等, 因为这些底层需要打印堆栈, 然后遍历, 性能较差. 尤其是需要使用asyncLogger的场景下
- 异步日志底层实现原理: 本质是一个RingBuffer, 默认size大约是21w条, 需要注意不要使用DiscardPolicy;