1.  log4j(log for java)由 apache 推出的开源免费日志处理的类库.
2. 为什么需要日志:
  2.1 在项目中编写 System.out.println();输出到控制台,当项目发布
    到 tomcat 后,没有控制台(在命令行界面能看见.),不容易观察一些输出结果.
  2.2 log4j作用,不仅能把内容输出到控制台,还能把内容输出到文件中.便于观察结果.

4. log4j 输出级别
  4.1 fatal(致命错误) > error (错误) > warn (警告) > info(普通信息) > debug(调试信息)
  4.2 在 log4j.properties 的第一行中控制输出级别与输出目的地

  

  1. log4j.rootCategory=error, CONSOLE ,LOGFILE
  1. error 表示输出的级别,如果在程序中调用Logger实例的方法,并且这方法级别低于设置的级别,
    则在输出目的地无法看到输出内容,例如下面的代码
  1. Logger log=Logger.getLogger(Test.class);
  2. log.info("这是一个测试");//因为info的级别小于error的级别,因此无法看到输出的内容

CONSOLE, LOGFILE都是子定义的appenderName,即输入目的地的名称,这个可以自己命名

5. 下面是log4j的配置输出目的地的语法

Appender主要定义日志信息输出在什么位置,主要语法为:

log4j.appender.appenderName = classInfo
log4j.appender.appenderName.option1 = value1
  …
log4j.appender.appenderName.optionN = valueN

appenderName可自定义

Log4j提供的appender类有以下几种:

•org.apache.log4j.ConsoleAppender(用于输出到控制太), 
•org.apache.log4j.FileAppender(输出到文件), 
•org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
•org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件) 
•org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

  1. log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
  2. log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
  3. log4j.appender.CONSOLE.layout.ConversionPattern=%C %d{YYYY-MM-dd hh:mm:ss} %m %n
  4.  
  5. log4j.appender.LOGFILE=org.apache.log4j.FileAppender
  6. log4j.appender.LOGFILE.File=E:/my.log
  7. log4j.appender.LOGFILE.Append=true
  8. log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
  9. log4j.appender.LOGFILE.layout.ConversionPattern=%C %m%L %n

6 . Layout 负责格式化Appender的输出

og4j.appender.appenderName.layout = classInfo
log4j.appender.appenderName.layout.option1 = value1

log4j.appender.appenderName.layout.optionN = valueN

其中,Log4j提供的layout有以下几种:

•org.apache.log4j.HTMLLayout(以HTML表格形式布局), 
•org.apache.log4j.PatternLayout(可以灵活地指定布局模式), 
•org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
•org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

7.PatternLayout 采用log4j表达式指定输出格式

  7.1   %C 包名+类名

  7.2  %d{YYYY-MM-dd HH:mm:ss} 时间
  7.3  %L 行号
  7.4  %m 信息
  7.5  %n 换行

例如:

  1. log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
  2. log4j.appender.CONSOLE.layout.ConversionPattern=%C %d{YYYY-MM-dd hh:mm:ss} %m %n

8 . mybatis开启log4j

  有时候在mybatis中需要使用log4j来打印sql语句,以及日志

  开启log4j的办法是在全局配置文件中,加入<settings>标签,因为全局配置文件采用的是DTD约束,

标签是有顺序的,注意<settings>标签所在的位置

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <!--
  7. 配置log4j
  8. -->
  9. <settings>
  10. <setting name="logImpl" value="LOG4J"/>
  11. </settings>
  12.  
  13. <!-- default的值是<environment>的id,代表当前要连接的数据库环境
  14. 【注】default的值一定要是一个<environment>,否则在获取SqlSession实例时会报空指针错误
  15. -->
  16. <environments default="mySqlJdbc">
  17. <environment id="mySqlJdbc">
  18. <!-- 事物标签,使用原生jdbc的事物 -->
  19. <transactionManager type="JDBC"></transactionManager>
  20. <!-- 数据库连接池技术 -->
  21. <dataSource type="POOLED">
  22. <!-- property中的name的值,不能随便写,有规定的 -->
  23. <property name="driver" value="com.mysql.jdbc.Driver"/>
  24. <property name="url" value="jdbc:mysql://192.168.153.128:3306/mybaties?characterEncoding=utf-8"/>
  25. <property name="username" value="root"/>
  26. <property name="password" value="123456"/>
  27. </dataSource>
  28. </environment>
  29. <environment id="oracleJdbc">
  30. <transactionManager type=""></transactionManager>
  31. <dataSource type=""></dataSource>
  32. </environment>
  33. </environments>
  34.  
  35. <!-- 加载XXXMapper.xml
  36. 如果采用代理开发,package批量指定xxxMapper.xml文件已经xxxMapper.java文件
  37. -->
  38. <mappers>
  39. <mapper resource="com/caopeng/mapper/FlowerMapper.xml"/>
  40. </mappers>
  41. </configuration>

9 .设置局部输出级别(控制某个局部内容的日志级别)

  9.1 命名级别(包级别): <mapper>namespace 属性中除了最后一个类名

  例如 namespace=”com.bjsxt.mapper.PeopleMapper” 其中包级别为com.bjsxt.mapper ,需要在 log4j.propeties 中
   
    9.1.1 先在总体级别调成 Error 不输出无用信息
    9.1.2 在设置某个指定位置级别为 DEBUG

9.2 类级别
  9.2.1 namespace 属性值 ,namespace 类名
9.3 方法级别
  9.3.2 使用 namespace 属性值+标签 id 属性值

例如:在服务器运行时,只有程序报错时才需要打印,就把全局的级别调成了ERROR,

但是在局部中,还想看sql语句的输出,mybatis中的sql语句输出时DEBUG级别的,那么此时就需要指定局部

的输出级别

  1. log4j.rootCategory=ERROR, CONSOLE ,LOGFILE
  2. log4j.logger.com.bjsxt.mapper=DEBUG
  3.  
  4. log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
  5. log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
  6. log4j.appender.CONSOLE.layout.ConversionPattern=%C %d{YYYY-MM-dd hh:mm:ss} %m %n
  7.  
  8. log4j.appender.LOGFILE=org.apache.log4j.FileAppender
  9. log4j.appender.LOGFILE.File=f:/my.log
  10. log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
  11. log4j.appender.LOGFILE.layout.ConversionPattern=%C %m%L %n

mybatis学习五 log4j的更多相关文章

  1. mybatis 学习五 二级缓存不推荐使用

    mybatis 二级缓存不推荐使用 一 mybatis的缓存使用. 大体就是首先根据你的sqlid,参数的信息自己算出一个key值,然后你查询的时候,会先把这个key值去缓存中找看有没有value,如 ...

  2. mybatis 学习五 动态SQL语句

    3.1 selectKey 标签 在insert语句中,在Oracle经常使用序列.在MySQL中使用函数来自动生成插入表的主键,而且需要方法能返回这个生成主键.使用myBatis的selectKey ...

  3. mybatis学习 (五) POJO的映射文件

    Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心. 1.parameterType(输入类型) 通过parameterType ...

  4. mybatis学习笔记(五):mybatis 逆向工程

    mybatis学习笔记(五):mybatis 逆向工程 在日常开发中,如果数据库中存在多张表,自己手动创建 多个pojo 类和编写 SQL 语法配置文件,未免太过繁琐,mybatis 也提供了一键式生 ...

  5. mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(附demo和搭建过程遇到的问题解决方法)

    文章介绍结构一览 一.使用maven创建web项目 1.新建maven项目 2.修改jre版本 3.修改Project Facts,生成WebContent文件夾 4.将WebContent下的两个文 ...

  6. (转)MyBatis框架的学习(五)——一对一关联映射和一对多关联映射

    http://blog.csdn.net/yerenyuan_pku/article/details/71894172 在实际开发中我们不可能只是对单表进行操作,必然要操作多表,本文就来讲解多表操作中 ...

  7. 【MyBatis学习笔记】

    [MyBatis学习笔记]系列之预备篇一:ant的下载与安装 [MyBatis学习笔记]系列之预备篇二:ant入门示例 [MyBatis学习笔记]系列之一:MyBatis入门示例 [MyBatis学习 ...

  8. Mybatis学习笔记二

    本篇内容,紧接上一篇内容Mybatis学习笔记一 输入映射和输出映射 传递简单类型和pojo类型上篇已介绍过,下面介绍一下包装类型. 传递pojo包装对象 开发中通过可以使用pojo传递查询条件.查询 ...

  9. Mybatis学习笔记一

    Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为M ...

随机推荐

  1. 旋转数组的最小数字(python)

    题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋 ...

  2. ceph 维护之 osd节点添加

    一.目标 添加一台新osd 节点,主机名ceph6 到 ceph 集群.public IP:10.6.32.25      cluster_network :10.6.33.25 二.基础环境配置 1 ...

  3. LibreOJ 6285. 数列分块入门 9

    题目链接:https://loj.ac/problem/6285 其实一看到是离线,我就想用莫队算法来做,对所有询问进行分块,但是左右边界移动的时候,不会同时更新数字最多的数,只是后面线性的扫了一遍, ...

  4. 【资料整理】ADO.NET

    ADO.NET: 1.SYSTEM.DATA 命名空间下类的集合的统称,用于操作 连接数据库的 它提供了统一的编程接口,可以操作不同的数据库 数据库实例:默认实例(MSSQLSEVER)和命名实例(M ...

  5. Bootstrap(6)图标菜单按钮组件

    一.小图标组件 Bootstrap 提供了免费的 263 个小图标(数了两次),具体可以参考中文官网的组件链接:http://v3.bootcss.com/components/#glyphicons ...

  6. webpack.dev.conf.js

    var utils = require('./utils')var webpack = require('webpack')var config = require('../config') // 一 ...

  7. (六)ROS话题---节点之间通信的方式

    1. 理解 ROS 话题: (Ctrl+Alt+T 打开一个新终端) 运行下面的命令: $ roscore (Ctrl+Alt+T 打开一个新终端) $ rosrun turtlesim turtle ...

  8. golang语言中os/user包的学习与使用

    package main; import ( "os/user" "fmt" ) func main() { //返回当前用户的结构 u, _ := user. ...

  9. jquery ajax 中实现给变量赋值

    我们在用JQuery的Ajax从后台提取数据后想把它赋值给全局变量,但是却怎么都赋不进,为什么呢? 原因其实很简单,我们用的Ajax是异步操作,也就是说在你赋值的时候数据还没提取出来,你当然赋不进去, ...

  10. webpack搭建自己的项目

    使用代理的方式参考地址:http://www.cnblogs.com/wangyongcun/p/7665687.html npm 常用模块 npm init 创建package.json文件 一值回 ...