前言

对于现在的应用程序来说,日志的重要性是不言而喻的。很难想象没有任何日志记录功能的应用程序运行在生产环境中。日志所能提供的功能是多种多样的,包括记录程序运行时产生的错误信息、状态信息、调试信息和执行时间信息等。在生产环境中,日志是查找问题来源的重要依据。应用程序运行时的产生的各种信息,都应该通过日志 API 来进行记录。很多开发人员习惯于使用 System.out.println、System.err.println 以及异常对象的 printStrackTrace 方法来输出相关信息。这些使用方式虽然简便,但是所产生的信息在出现问题时并不能提供有效的帮助。这些使用方式都应该改为使用日志。

1、实现Java日志的几种工具

mybatis日志教程(Mybatis添加日志功能)(1)

常用的Log4j和Log4j2的配置区别1:Log4j通常用一个log4j.properties的文件作为主配置文件

mybatis日志教程(Mybatis添加日志功能)(2)

%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL

%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss,SSS},输出类似:2011-10-18 22:10:28,921

%r: 输出自应用启动到输出该log信息耗费的毫秒数

%c: 输出日志信息所属的类目,通常就是所在类的全名

%t: 输出产生该日志事件的线程名

%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。

%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。

%%: 输出一个"%"字符 %F: 输出日志消息产生时所在的文件名称

%L: 输出代码中的行号

%m: 输出代码中指定的消息,产生的日志具体信息

%n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行

2:log4j2:采用的是.xml,.json或者.jsn这种方式来做,比如log4j2.xml

mybatis日志教程(Mybatis添加日志功能)(3)

2、环境准备

<1> 标准日志实现【在mybatis核心配置文件[mybatis-config.xml]中配置即可使用】

<settings> <setting name="logImpl" value="STDOUT_LOGGING"/> </settings>

<2>Log4j【是我们最常用的日志打印工具】

3、示例(使用步骤)

①导入log4j的包

<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>

② 添加log4j.properties 配置文件

#将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码 log4j.rootLogger=DEBUG,console,file #控制台输出的相关设置 log4j.appender.console = org.apache.log4j.ConsoleAppender log4j.appender.console.Target = System.out log4j.appender.console.Threshold=DEBUG log4j.appender.console.layout = org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=[%c]-%m%n #文件输出的相关设置 log4j.appender.file = org.apache.log4j.RollingFileAppender log4j.appender.file.File=./log/xiezhr.log log4j.appender.file.MaxFileSize=10mb log4j.appender.file.Threshold=DEBUG log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n #日志输出级别 log4j.logger.org.mybatis=DEBUG log4j.logger.java.sql=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.ResultSet=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG

③settings 设置日志实现

<settings> <setting name="logImpl" value="LOG4J"/> </settings>

④在程序中使用Log4j进行输出

static Logger logger = Logger.getLogger(TestUserDao.class); @Test public void testUserDao(){ logger.info("info:进入了testUserDao方法"); logger.debug("debug:进入了testUserDao方法"); logger.error("error: 进入selectUser方法"); SqlSession sqlSession = MysqlUtil.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); User user = mapper.selectUserById(1); System.out.println(user); }

⑤ 测试

mybatis日志教程(Mybatis添加日志功能)(4)

总结:

日志记录是应用程序运行中必不可少的一部分。具有良好格式和完备信息的日志记录可以在程序出现问题时帮助开发人员迅速地定位错误的根源。对于开发人员来说,在程序中使用日志API记录日志并不复杂,不过遵循一些最佳实践可以更好地利用日志。

,