1.logback介绍
logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback-classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能(用的少)。
2. maven依赖
org.slf4j
slf4j-api
1.7.21
ch.qos.logback
logback-classic
1.1.7
ch.qos.logback
logback-access
1.1.7
logback-classic包含了logback-core,不需要再单独引用了。
3. 配置和使用
1. 日志使用
我们使用org.slf4j.LoggerFactory,就可以直接使用日志了。
private static final Logger logger = LoggerFactory.getLogger(this.getClass());
使用:
@Controller
@RequestMapping(value= "")public class IndexController extendsBaseController {/*** Success
*@paramresponse
*@throwsIOException*/@RequestMapping(value= "")
@ResponseBodypublic void hello(HttpServletResponse response) throwsIOException {
logger.debug("DEBUG TEST 这个地方输出DEBUG级别的日志");
logger.info("INFO test 这个地方输出INFO级别的日志");
logger.error("ERROR test 这个地方输出ERROR级别的日志");
}
}
2. 在控制台输出特定级别的日志
logback的配置文件都放在/src/main/resource/文件夹下的logback.xml文件中。其中logback.xml文件就是logback的配置文件。只要将这个文件放置好了之后,系统会自动找到这个配置文件。
下面的配置中,我们输出特定的ERROR级别的日志:
[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n
结果只在控制台输出ERROR级别的日志。
3. 设置输出多个级别的日志
[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n
设置两个level,则可以输出 ERROR和INFO级别的日志了。
4. 设置文件日志(你懂得)
additivity="false"很少将这个属性设置为true
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
${catalina.base}/logs/guide_info.log
${catalina.base}/logs/guide_info.%d{yyyy-MM-dd}-%i.log
30
50MB
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
${catalina.base}/logs/guide_error.log
${catalina.base}/logs/guide.%d{yyyy-MM-dd}-%i.log
30
50MB
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
public classTest {public static voidmain(String[] args) {
Logger INFO_LOG= LoggerFactory.getLogger("infoLog");
Logger ERROR_LOG= LoggerFactory.getLogger("errorLog");
INFO_LOG.info("业务日志");
ERROR_LOG.error("异常日志");
}
}
/*** Return a logger named according to the name parameter using the
* statically bound {@linkILoggerFactory} instance.
*
*@paramname
* The name of the logger.
*@returnlogger*/
public staticLogger getLogger(String name) {
ILoggerFactory iLoggerFactory=getILoggerFactory();returniLoggerFactory.getLogger(name);
}
5. 精确设置每个包下面的日志