Slf4j
全称:Simple Logging Facade for Java,即简单日志门面接口,和 Apache 的 commons-logging 是一样的概念,它们都不是具体的日志框架,你可以指定其他主流的日志实现框架。
Log级别及使用说明
日志级别 | 描述 |
---|---|
OFF | 关闭:最高级别,不输出日志。 |
FATAL | 致命:输出非常严重的可能会导致应用程序终止的错误。 |
ERROR | 错误:输出错误,但应用还能继续运行。 |
WARN | 警告:输出可能潜在的危险状况。 |
INFO | 信息:输出应用运行过程的详细信息。 |
DEBUG | 调试:输出更细致的对调试应用有用的信息。 |
TRACE | 跟踪:输出更细致的程序运行轨迹。 |
ALL | 所有:输出所有级别信息。 |
日志输出关系,如下图所示:
日志场景说明
- DEBUG:记录对调试程序有帮助的信息。
- INFO:用来记录程序运行现场,虽然此处并未发生错误,但是对排查其他错误具有指导意义。
- WARN:可以用来记录程序运行现场,但是更偏向于表明此处有出现潜在错误的可能。
- ERROR:表明当前程序运行发生了错误,需要被关注。但是当前发生的错误,没有影响系统的继续运行。
- FATAL:表明当前程序运行出现了严重的错误事件,并且将会导致应用程序中断。
需要注意点:
- 避免无效日志打印:日志配置设置 additivity=”false”。
- 区别对待错误日志:WARN 与 ERROR 都是与错误有关的日志级别,但不要一发生错误就笼统地输出 ERROR 级别日志。一些业务异常是可以通过引导重试就能恢复正常的,例如用户输入参数错误。在这种情况下,记录日志是为了在用户咨询时可以还原现场,如果输出为 ERROR 级别就不适合了。ERROR 级别只记录系统逻辑错误、异常或者违反重要的业务规则,其他错误都可以归为 WARN 级别。
- 保证记录内容完整:日志记录的内容包括现场上下文信息与异常堆栈信息。记录异常时,一定要输出异常堆栈,例如,logger.error(“xxxx: ${e.message}”, e);日志中如果输出对象实例,要确保实例类重写了 toString() 方法,否则只输出对象的 hash code 值,没有意义。