5.4 日志
框架
意义
规范
级别
//条件输出,避免资源浪费
if(logger.isDebugEnabled()){//条件输出
logger.debug("processing trade with id: "+id+" and symbol: "+symbol);
//占位符如下
logger.debug("processing trade with id: {} and symbol: {}", id, symbol);
}
框架
日志门面
日志适配器
日志库
配置
Maven配置-slf4j+logback
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j-api.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback-classic.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${logback-core.version}</version>
</dependency>
Maven配置-slf4j+slf4j-log4j12+log4j
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j-api.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j-log4j12.version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
如果老代码直接使用了log4j日志库提供的接口来打印日志,则还需要引入日志库适配器
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>${log4j-over-slf4j.version}</version>
</dependency>
使用
//logger定义为static变量,因为与类绑定,避免每次都new一个新对象造成资源浪费,内存溢出等
private static final Logger logger=LoggerFactory.getLogger(Abc.class);