SLF4J 是门面模式的日志框架,有利于维护和各个类的日志处理方式统一,并且可以在保证不修改代码的情况下,很方便的实现底层日志框架的更换。
不能直接使用日志系统(Log4j、Logback)中的 API
Logger 是一种记录应用程序运行时信息的工具,它可以记录应用程序的运行状态、错误信息、调试信息等。通过使用 Logger,开发人员可以更方便地进行应用程序的调试和故障排除。Logger 可以将记录的信息输出到控制台、文件、数据库等不同的目标中,以便开发人员进行查看和分析。Logger 还可以根据不同的日志级别进行过滤,以便开发人员只关注自己关心的信息。
Logback是一个开源的日志框架,它是log4j框架的改进版,具有更高的性能和更好的可扩展性。Logback支持多种日志级别、多种输出格式、多种输出目的地,可以很方便地集成到各种Java应用程序中。Logback还提供了丰富的配置选项,可以通过配置文件或编程方式进行配置。
Logstash是一个开源的数据收集引擎,它可以从不同的数据源中收集、处理和转换数据,然后将数据发送到各种目标,如Elasticsearch、Kafka、Amazon S3等。Logstash支持多种输入和输出插件,可以轻松地与各种数据源和目标进行集成。它还提供了强大的过滤器插件,可以对数据进行实时处理和转换。Logstash是ELK Stack中的一部分,与Elasticsearch和Kibana一起构成了一个完整的日志分析解决方案。
系统启动参数、环境变量
异常发生时,要有详尽记录,并通知相关人员介入处理,第一时间作出响应,因为这种错误已经影响系统的正常使用
这类异常应该有效记录起来,通过警告方式反馈给相关人员加以关注,避免频繁发生,最终演化为不可控的错误。
增删改
函数出入口,重点关注入口
核心或者逻辑复杂的代码,建议添加详细的注释,以及较详细的日志。
在关键代码流程分支上打印日志。
在调用外部接口的时候,需要打印请求参数、响应值相关信息。
推荐输出英文日志内容,作用如下:
%d{yyyy-MM-dd HH:mm:ss.SSS} [${project.name}-${app.name}]
[%thread]%-5level %logger - %msg%n
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger logger =LoggerFactory.getLogger(Person.class);
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class Person {}
log.info("{}:Processing trade with , symbol : {} ", id, symbol);
log.info("{}:loginOrLogoutLogList param={}", userId, param);
try {// 业务代码处理
} catch (Exception e) {e.printStackTrace(); //不要使用e.printStackTrace();
}
try {//业务代码处理
} catch (Exception e) {// 错误LOG.error('你的程序有异常啦', e.getMessage()); //异常日志不要只打印一半;
}
try {//业务代码处理
} catch (Exception e) {// 错误LOG.error('你的程序有异常啦'); //不要只是一句错误提示;
}try {// 业务代码处理
} catch (Exception e) {log.error("Person study errer,param={},e={}", param, e);
}
try {//业务代码处理
} catch (Exception e) {// 错误LOG.error('你的程序有异常啦'); //不要只是一句错误提示;throw .new Exception("异常信息");
}
避免重复打印日志,会浪费磁盘空间。
如有一行日志清楚表达了意思,避免再冗余打印;
if (user.isVip()) {log.info("该用户是会员,Id:{}", user, getUserId());//冗余,可以跟前面的日志合并一起log.info("开始处理会员逻辑,id:{}", user, getUserId());//会员逻辑
} else {//非会员逻辑
}
日志应当包括基本的信息:如
日志里的敏感信息还在打明文?3 种日志脱敏方案任你选
https://blog.csdn.net/JiuQianWan/article/details/127020281
上一篇:JAVA方法