log4j遇到的一些问题

来源:互联网 发布:转发文章赚钱软件 编辑:程序博客网 时间:2024/06/02 02:14

log4j的一些配置:

log4j.rootLogger=info,stdout,D,E     

//日志的常用输出的级别debug<info<error<fatal  这里面的stdout(控制台)、D(输出debug及以上级别的日志信息)、E(输出error及以上级别的日志信息)代表日志输出的位置(可以指定任意的名称)

//指定日志输出的级别info,相当于object类中的一个属性,在不指定的要具体输出什么类下面的日志的时候,最低输出的级别为info,像D和E也会继承info因此输出的日志级别最低也是info信息,像D里面就不会出现debug的日志信息了。但是如果指定了要输出的类里面的日志的信息,像下面的指定log.Log4jTest类里面输出的最低的级别为debug,因此所有的stdout,D,E都会继承他输出的日志的信息的级别最低都为debug,D中就会出现debug的日志信息。(简单来说向D、E是在类的基础上实现的Threshold的功能的,如果继承的最低级别是info的话,那么最低输出日志级别必定是info信息即使Threshold配置DEBUG也不起作用。这点还不太清楚为什么,有知道的可以在下面评论里说一下,感谢。)

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p -%m%n
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 




log4j.appender.D=org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File=/log/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




log4j.appender.E=org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File=/log/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}  [ %l:%c:%t:%r ] - [ %p ]  %m%n


log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG


log4j.additivity.log.Log4jTest=true
log4j.logger.log.Log4jTest=debug,testLog


log4j.appender.testLog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.testLog.File=/log/testLog.log
log4j.appender.testLog.layout=org.apache.log4j.PatternLayout
log4j.appender.testLog.layout.ConversionPattern=%m%n


测试代码如下:

public class Log4jTest {



static Logger log=Logger.getLogger(Log4jTest.class);

public static void main(String[] args) {
PropertyConfigurator.configure("src/main/resources/log4j.properties");

log.info("这是在测试info");
log.error("这是在测试error");
log.debug("这是在测试debug");

try{
Student.print();
}catch(Exception e){
log.error("发生异常"+e);
}
}
}

public class Student implements Serializable{


public static Logger log=Logger.getLogger(Student.class);

private static final long serialVersionUID = 6953145752845327861L;

private String name;
private String age;

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public Student(){

}
public Student(String name,String age){
this.name=name;
this.age=age;
}

@Override
public String toString() {
return "[name=" + name + ", age=" + age + "]";
}
public static void print(){
Student stu=new Student();
stu.setName("张三");
stu.setAge("23");
log.debug("这是student的debug信息");
log.info("这是 Student "+stu);
}
}


原创粉丝点击