项目开发中,日志使用是必不可少的。有了日志可以记录程序的运行过程,方便我们查找关键信息,也方便快速定位解决问题。
1、什么情况下要使用日志呢?
- 编程语言提示异常:如今各类主流的编程语言都包括异常机制,业务相关的流行框架有完整的异常模块。这类捕获的异常是系统告知开发人员需要加以关注的,是质量非常高的报错。应当适当记录日志,根据实际结合业务的情况使用warn或者error级别。
- 业务流程预期不符:除开平台以及编程语言异常之外,项目代码中结果与期望不符时也是日志场景之一,简单来说所有流程分支都可以加入考虑。取决于开发人员判断能否容忍情形发生。常见的合适场景包括外部参数不正确,数据处理问题导致返回码不在合理范围内等等。
- 系统核心角色,组件关键动作:系统中核心角色触发的业务动作是需要多加关注的,是衡量系统正常运行的重要指标,建议记录INFO级别日志,比如电商系统用户从登录到下单的整个流程;微服务各服务节点交互;核心数据表增删改;核心组件运行等等,如果日志频度高或者打印量特别大,可以提炼关键点INFO记录,其余酌情考虑DEBUG级别。
- 系统初始化:系统或者服务的启动参数。核心模块或者组件初始化过程中往往依赖一些关键配置,根据参数不同会提供不一样的服务。务必在这里记录INFO日志,打印出参数以及启动完成态服务表述。
2、常用的日志框架什么?
2.1 常用的日志框架
log4j、Logging、commons-logging、slf4j、logback
2.2 日志框架怎么选
- commons-loggin、slf4j 只是一种日志抽象门面,不是具体的日志框架。 log4j、logback 是具体的日志实现框架。
- 在比较关注性能的地方,选择Logback或自己实现高性能Logging API可能更合适。推荐:slf4j + logback.
- 在已经使用了Log4j的项目中,如果没有发现问题,继续使用可能是更合适的方式:推荐组合为:slf4j + log4j2.
- 如果不想有依赖则使用java.util.logging或框架容器已经提供的日志接口。
3、日志如何使用?
3.1指定类日志输出
使用指定类初始化日志对象,在日志输出的时候,可以打印日志信息所在的类。在项目开发过程中,经常需要打印日志信息,往往会在每个类的第一行加上形如以下代码:
public static final Logger logger =LoggerFactory.getLogger(XXX.class);
2、不要使用具体的日志实现类
InterfaceImpl interface = new InterfaceImpl();