log4j---------学习总结(一)

一.log4j框架

  • log4j可靠的,快速的,可扩展的(灵活的)日志框架 
  • log4j具有高可配置性,可以通过外部配置文件来控制 
  • log4j可以根据日志不同级别来过滤日志, 
  • log4j可以将日志记录直接写到控制台,文件,数据库,UNIX系统日志
  • log4j的配置文件默认引用地址为PATH或者CLASSPATH所在目录当中(在src下面,第一层),标准名称=log4j.properties

  总结:首先log4j是一个日志框架,用来记录项目运行中的一些日志,而log4j的配置是通过外部的配置文件来实现,体现了这个框架的灵活性

     并且日志分级别过滤,更高级的是能将日志记录到很多地方.

二.log4j的maven引用和下载地址

  1.maven地址

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

  2.jar下载地址

  http://logging.apache.org/log4j/2.x/download.html

三.配置文件

  

  解释:

    第一行-------------初始化日志记录位置,日志过滤级别  (ALL,TRACE,DEBUG,INFO,WARN,ERROR,FATAL)

    第二行-------------日志以什么方式打印(输出源)(file,DB,Console,)

    第三行-------------日志以什么格式打印(布局)(PatternLayout,HTMLLayout)

  

//1.输出源响应的实现类
        //文件
        file--->org.apache.log4j.FileAppender
        //数据库
        DB--->org.apache.log4j.JDBCAppender
     //控制台
     Console--->org.apache.log4j.ConsoleAppender    

//2.布局模式
     PatternLayout--->org.apache.log4j.PatternLayout

      HTMLLayout--->org.apache.log4j.HTMLLayout

四.输出源参数解析

  一.数据库参数 (org.apache.log4j.JDBCAppender)

user 连接数据库的用户名
password 连接数据库的密码
URL 数据库的连接字符串
driver 连接数据库的驱动程序
sql 设置操作数据库的SQL语句                    

 

 

 

五.布局模式参数解析

  一.PatternLayout参数

M 打印日志请求的方法名称  method
C 输出日志打印请求的类名加包名,例:com.test.Test
X 打印日志记录请求的客户端地址
d 打印日志记录的当前时间%d{yyyy-MM-dd HH:mm:ss}
m 打印应用程序的一些信息
p 打印日志的过滤级别
n 输出一个当前系统的换行符

六.测试  

  1.日志记录文件测试

  log4j配置

logDir=D:/log
log4j.rootLogger=DEBUG,FILE

log4j.appender.FILE=org.apache.log4j.FileAppender 
log4j.appender.FILE.File=${logDir}/log.txt

log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=[%p][%d{yyyy-MM-dd HH:mm:ss}][%c]%m%n

  2.日志记录数据库测试

  log4j配置

log4j.rootLogger = INFO, DB

log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DB.URL=jdbc:mysql://localhost:3306/Testlogs
log4j.appender.DB.driver=com.mysql.jdbc.Driver
log4j.appender.DB.user=****
log4j.appender.DB.password=****
log4j.appender.DB.sql=INSERT INTO log (logDate, logClientIP, logName, logLevel, logMsg) VALUES('%d','%X{clientIP}','%C','%p','%m')

log4j.appender.DB.layout=org.apache.log4j.PatternLayout

数据库表      

CREATE TABLE log4j(
    logId INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
    logDate VARCHAR(10),
    logClientIP VARCHAR(15),
    logName VARCHAR(255),
    logLevel VARCHAR(5),
    logMsg VARCHAR(255)
);

七.java测试
package com.du20150626;

import org.apache.log4j.Logger;

public class Log4jTest {
    /**
     * log4j可靠的,快速的,可扩展的(灵活的)日志框架
     * log4j具有高可配置性,可以通过外部配置文件来控制
     * log4j可以根据日志不同级别来过滤日志,
     * log4j可以将日志记录直接写到控制台,文件,数据库,UNIX系统日志
     * log4j配置文件名称=log4j.properties  存放位置PATH或者CLASSPATH所在目录当中
     * 
     */
    private static Logger log = Logger.getLogger(Log4jTest.class);
    
    public static void main(String[] args) {
        log.debug("Debug ----> log4j debug");
        log.info("info -----> log4j info");
        log.info("info -----> log4j info");
        log.debug("Debug ----> log4j debug");
        log.info("info -----> log4j info");
        log.info("info -----> log4j info");
        log.info("info -----> log4j info");
    }
}


 
原文地址:https://www.cnblogs.com/duwenlei/p/4602277.html