日志
1、日志工厂
如果是一个数据库操作出现了异常,我们需要排错,日志就是最好的助手!
曾经:sout、debug
现在:日志工厂!
- SLF4J
- LOG4J【掌握】
- LOG4J2
- JDK_LOGGING
- COMMONS_LOGGING
- STDOUT_LOGGING 【掌握】
- NO_LOGGING
STDOUT_LOGGING 标准日志输出
在mybaits中具体使用哪一个日志实现,在设置中设定!
在mybaits核心配置文件中,配置使用的日志
<settings>
<!-- 标准日志工厂实现-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
2、Log4j
什么是Log4j?
- Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件。
- 我们也可以控制每一条日志的输出格式;
- 通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
- 通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
1.导入Log4j的包
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
2.log4j.properties
# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE debug info warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE
# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
3.配置log4j为日志的实现
<!--配置log4j为日志的实现-->
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
4.log4j的使用,测试运行findAll
简单使用
1.在要使用Log4j的类中,导入包 import org.apache.log4j.Logger;
2.日志对象,参数为当前类的class
static Logger logger = Logger.getLogger(mybaitsTest.class);
3.日志级别
logger.info("输出info");
logger.debug("输出debug");
logger.error("输出error");
3、slf4j简介和使用
是什么
slf4j 并不是一种具体的日志系统,而是为各种日志 APIs 提供一个简单统一的接口,从而使得用户能够在部署的时候配置自己所想使用的日志API。
即在开发中统一按照slf4j的API进行开发,在部署时选择不同的日志系统包即可自动转换到不同的日志系统上。
由上图可以这样理解:slf4j只是一个外壳,内部的具体实现都是使用的具体的日志API.
比如:开发中使用的是JDK自带的日志系统,则只需slf4j-api
和 slf4j-jdk12
两个jar包;如果不想使用JDK自带的日志系统想换成Log4j,即可将slf4j-jdk12
换成slf4j-log4j12
即可,代码不用改动(代码中都是用到的slf4j的API)。
如何用
1 MAVEN引入依赖:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
</dependency>
2 Java中使用:
在类中获得Logger对象:
private static final Logger logger = LoggerFactory.getLogger(Test.class);
输出日志信息:
logger.error("日志信息 ");
可以使用占位符:
logger.info("{} is {}", "new String[]{"x", "y"}");