一、代码中实现,实现把日志输出到控制台和文件
package log4jtest;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
public class LogTest {
public static Logger log = Logger.getLogger(LogTest.class);
public static void main(String[] args) {
//设置日志级别
log.setLevel(Level.INFO);
// 输出格式
PatternLayout layout = null;
String pattern = getPattern();
layout = new PatternLayout(pattern);
// 输入到命令行
ConsoleAppender consoleAppender = new ConsoleAppender(
new PatternLayout());
consoleAppender = new ConsoleAppender(layout);
log.addAppender(consoleAppender);
// 输出到文件
FileAppender fileAppender = null;
try {
fileAppender = new FileAppender(layout, "log.txt");
} catch (Exception e) {
}
log.addAppender(fileAppender);
log.debug("debug:");
log.info("info:");
log.warn("warn:");
log.error("error:");
log.fatal("fatal:");
}
/**
* 输出格式<br>
* <li>%c 输出日志信息所属的类的全名
* <li>%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss
* },输出类似:2002-10-18- 22:10:28
* <li>%f 输出日志信息所属的类的类名
* <li>%l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
* <li>%m 输出代码中指定的信息,如log(message)中的message
* <li>%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
* <li>%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
* <li>%r 输出自应用启动到输出该日志信息所耗费的毫秒数
* <li>%t 输出产生该日志事件的线程名
*
* @return 日志输出格式
*/
public static String getPattern() {
StringBuffer pattern = new StringBuffer();
pattern.append("%d %c %l %m%n");
return pattern.toString();
}
}