zoukankan      html  css  js  c++  java
  • mybatis学习五 log4j

    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 的第一行中控制输出级别输出目的地

      

    log4j.rootCategory=error, CONSOLE ,LOGFILE
    error 表示输出的级别,如果在程序中调用Logger实例的方法,并且这方法级别低于设置的级别,
    则在输出目的地无法看到输出内容,例如下面的代码
    Logger log=Logger.getLogger(Test.class);
    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(将日志信息以流格式发送到任意指定的地方)

    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern=%C %d{YYYY-MM-dd hh:mm:ss} %m %n
    
    log4j.appender.LOGFILE=org.apache.log4j.FileAppender
    log4j.appender.LOGFILE.File=E:/my.log 
    log4j.appender.LOGFILE.Append=true
    log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
    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 换行

    例如:

    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    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>标签所在的位置

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration
      PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <!-- 
            配置log4j
         -->
         <settings>
             <setting name="logImpl" value="LOG4J"/>
         </settings>
    
        <!-- default的值是<environment>的id,代表当前要连接的数据库环境
            【注】default的值一定要是一个<environment>,否则在获取SqlSession实例时会报空指针错误
         -->
        <environments default="mySqlJdbc">
            <environment id="mySqlJdbc">
                <!-- 事物标签,使用原生jdbc的事物 -->
                <transactionManager type="JDBC"></transactionManager>
                <!-- 数据库连接池技术 -->
                <dataSource type="POOLED">
                    <!-- property中的name的值,不能随便写,有规定的 -->
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://192.168.153.128:3306/mybaties?characterEncoding=utf-8"/>
                    <property name="username" value="root"/>
                    <property name="password" value="123456"/>
                </dataSource>
            </environment>
            <environment id="oracleJdbc">
                <transactionManager type=""></transactionManager>
                <dataSource type=""></dataSource>
            </environment>
        </environments>
        
        
        <!-- 加载XXXMapper.xml
            如果采用代理开发,package批量指定xxxMapper.xml文件已经xxxMapper.java文件
         -->
        <mappers>
            <mapper resource="com/caopeng/mapper/FlowerMapper.xml"/>
        </mappers>
    </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级别的,那么此时就需要指定局部

    的输出级别

    log4j.rootCategory=ERROR, CONSOLE ,LOGFILE
    log4j.logger.com.bjsxt.mapper=DEBUG
    
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern=%C %d{YYYY-MM-dd hh:mm:ss} %m %n
    
    log4j.appender.LOGFILE=org.apache.log4j.FileAppender
    log4j.appender.LOGFILE.File=f:/my.log
    log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.LOGFILE.layout.ConversionPattern=%C %m%L %n
  • 相关阅读:
    Java知识汇总第二天
    jvm学习笔记
    java知识汇总的第一天
    全链路压测流量模型
    FunTester测试框架Redis性能测试实践
    FunTester抄代码之路
    Jira API的踩坑记
    把工作讲给家人听
    颇具年代感的《JMeter中文操作手册》
    FunTester框架Redis压测预备
  • 原文地址:https://www.cnblogs.com/cplinux/p/9622841.html
Copyright © 2011-2022 走看看