1.第一步,引入log4j.jar的包在src下面新建log4j.properties文件,注意此时路径问题。因为后面我们加载配置文件时使用class.getclassLoader().getResourceAsStream("配置文件")方法
具体配置主要注意输出文件路径、等级debug、error等,具体可以搜索log4j配置信息,这里贴出我的源码:
####\u65E5\u5FD7\u7EA7\u522B#####
log4j.rootLogger=DEBUG,stdout,D,E
log4j.logger.org.mybatis=DEBUG
###\u8F93\u51FA\u4FE1\u606F\u5230\u63A7\u5236\u53F0###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.Threshold=ERROR
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS}
method:%1%n%m%n %C: %m%n
###\u8F93\u51FADEBUG\uFF0C\u7EA7\u522B\u4EE5\u4E0A\u7684\u65E5\u5FD7\u7EA7\u522B\u5230 ###
log4j.appender.D=org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File=C:/log/test-errot123.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
###\u8F93\u51FAERROR\u7EA7\u522B\u4EE5\u4E0A\u7684\u65E5\u5FD7\u5230###
log4j.appender.E=org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File=C:/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} [%t:%r]-[%p] %m%n
2.第二步在要写入日志的main()函数中声明logger类,接着读取配置文件即完成日志写入的配置过程。
package log4j;
import java.io.IOException;
import java.util.Properties;
import org.apache.log4j.Logger;
import org.apache.log4j.Priority;
public class test {
static Logger logger = Logger.getLogger(test.class.getName());
public test(){}
public static void main(String args[])
{
//同时输出到控制台和一个文件的实例
/* 用log4包加载配置文件 */
//PropertyConfigurator.configure("\\log4j.properties");
/* 用java自带peoperties加载配置文件 */
Properties props=new Properties();
try {
System.out.println("加载配置文件");
props.load(test.class
.getClassLoader()
.getResourceAsStream("log4j.properties")
);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
logger.debug("主函数调用debug");
logger.info("主函数调用info");
logger.warn("主函数调用warn");
logger.error("主函数调用error");
logger.fatal("主函数调用fatal");
logger.log(Priority.DEBUG, "主函数调用");
logger.debug("主函数调用结束debug");
}
}
其中有些小主意事项,刚开始头文件加载,util和apache下面都有log4j需要注意。其次配置文件加载路径问题,如果没有成功会提示
这个时候你检测配置文件放置路径和当前你所在类文件的路径相对关系。若何当前类处于统一路径直接写配置文件名即可,若处在下级则可以用“/”,“/文件名”代表当前路径可以写入下一路径。如果在同一级别另一路径则可以类似“conf/file.xml”这样找到。