一、log4j
1—基本使用
新建项目后,引入log4j.jar包,一般也同时引入commons-logging-api.jar。如下图

**在src目录下建立一个新文件,命名为:log4j.properties。**
里面写入设置内容
log4j.rootLogger=DEBUG,ERROR,INFO,D,E
### 输出调试信息到文件 ###
log4j.appender.D=org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File=C:/java_logs/logRT.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=C:/java_logs/errors.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
使用方法
public class test {
private static Logger logger=Logger.getLogger(test.class);
public static void main(String[] args) {
PropertyConfigurator.configure("src/log4j.properties");
logger.debug("--------------------------->main_START");
try {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String inData=br.readLine();
System.out.println("输入的字符串是:"+inData);
logger.info("------------------------------------[ value ] "+ inData);
} catch (IOException e) {
logger.error("-------------------------------[ msg ] "+e.getMessage());
e.printStackTrace();
}
}
}
2—Idea的牵绊
在maven项目中,如果为单一项目带module,那么log4j.properties位置在src文件夹内。PropertyConfigurator.configure设定路径可用【.\\src\\main\\log4j.properties】。
public class testLog {
private Logger logger=Logger.getLogger(testLog.class);
void testLog(){
logger.info("info-------------------------完成");
logger.debug("debug--------------------完成");
}
public static void main(String[] args) {
PropertyConfigurator.configure(".\\src\\main\\log4j.properties");
new testLog().testLog();
}
}
如果是多module的项目,那么上述方法不可用。在src文件夹哪个位置不能访问到log4j.properties,使用Main函数进行输出。
多module项目,首先需要设定模块的保存文件夹在project文件夹下。
String path=System.getProperty("user.dir");
System.out.println("路径====================="+path);
PropertyConfigurator.configure(path+"/log01/src/main/log4j.properties");