java Log4j的使用详解(实测有效)

一:

    下载jar包;

    链接:http://www.apache.org/dyn/closer.cgi/logging/log4j/1.2.17/log4j-1.2.17.zip

    maven依赖:

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

二:

    导入JAR包后,在SRC级别下创建log4j.properties配置文件,配置方法如下:

### 设置###
log4j.rootLogger = debug,stdout,D,E

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志文件设置 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = vincent_player_debug.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 输出ERROR 级别以上的日志文件设置 ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File = vincent_player_error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

    注: 如果日志文件没有设置路径的话,那么日志文件会输出到工程目录下。

    各个字段简介:

    log4j.rootLogger=debug,c (设置日志级别,c是变量,可以有很多)

    log4j.appender.c = org.apache.log4j.ConsoleAppender(把日志打印到控制台)

    log4j.appender.c.Target = System.out(控制台)

    log4j.appender.c.layout = org.apache.log4j.PatternLayout(布局方式—一般就都是这种自由方式布局)

    log4j.appender.c.layout.ConversionPattern = [%-5p]%d{yyyy-MM-ddHH:mm:ss,SSS}method:%l%n%m%n(日志打印的内容)

    三:测试

package com.vrv.utils;

import org.apache.log4j.Logger;

public class Log4j {
    private static Logger logger = Logger.getLogger(Log4j.class);
    
    public static void main(String[] args) throws Exception {
          // 记录debug级别的信息  
          logger.debug("This is debug message.");  
          // 记录info级别的信息  
          logger.info("This is info message.");  
          // 记录error级别的信息  
          logger.error("This is error message."); 
          try {
        	  int[] arr = {1, 2, 3};
              for (int i = 0; i <= arr.length; i++) {
                  System.out.println(arr[i]);
              } 
          } catch (Exception e) {
            logger.debug("在干什么事情的时间报了什么错误:"+e);
          }
    }
}

    工具类:

package com.vrv.utils;

import java.io.PrintWriter;
import java.io.StringWriter;

/**
 * 对于log4j的日志信息进行封装
 * @author Administrator
 */
public class Log4j_Utils {
	public static String printloginfo(Exception e) {
		StringWriter sw=new StringWriter();
		e.printStackTrace(new PrintWriter(sw,true));
		String str=sw.toString();
		return str;
	}
}

    四:效果

    控制台:

[DEBUG] 2019-01-06 10:00:50,596 method:com.vrv.utils.Log4j.main(Log4j.java:21)
在干什么事情的时间报了什么错误:java.lang.ArrayIndexOutOfBoundsException: 3
	at com.vrv.utils.Log4j.main(Log4j.java:18)

   项目文件目录下;

转换方法,请阅读另外一篇文章: 

https://blog.csdn.net/javaprogramme/article/details/80698083

https://www.cnblogs.com/franson-2016/p/5640427.html

http://www.cnblogs.com/stupid-vincent/p/6227431.html

猜你喜欢

转载自blog.csdn.net/qq_41712834/article/details/85912524