log4j的初始化:
log4j可以使用3中配置器来初始化:BasicConfigurator,DOMConfigurator,PropertyConfigurator 其语法为:
BasicConfigurator.configure (): 自动快速地使用缺省Log4j环境。
PropertyConfigurator.configure ( String configFilename) :读取使用Java的特性文件编写的配置文件。
DOMConfigurator.configure ( String filename ) :读取XML形式的配置文件。
注意一点:PropertyConfigurator.configure ( String configFilename),这个语句只需要在系统启动的时候执行一次。
那么到底放到那里进行这条语句的初始化呢?(servletlistener里边)
注意:任何WEB工程,只要lib目录下有log4j的jar包,classes目录下边有log4j.properties,
则log4j.properties会自动加载,不用写任何代码,log4j就会初试化。
在需要使用log4j的类中,添加一个静态的属性:(不必是静态的把?)
public static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () ) ;
protected final Log logger = LogFactory.getLog(getClass());
log4j中配置日志文件相对路径方法:
在servletlistener中写:
PropertyConfigurator.configure ( String configFilename) ;//实例化log4j.properties
System.setProperty ("WORKDIR", WORKDIR);//设置个系统变量
log4j.properties中写:
log4j.appender.logfile.File=${WORKDIR}/logs/app.log
注意:是log4j.appender.logfile.File=${WORKDIR}/logs/app.log 不是 log4j.appender.logfile.File=${WORKDIR}/logs/app.log .
System.setProperty ("WORKDIR", WORKDIR);//设置个系统变量 这句要先写,然后,
PropertyConfigurator.configure ( String configFilename) ;//实例化log4j.properties 。
public static String errorException(Exception e) {
StackTraceElement[] ste = e.getStackTrace();
StringBuffer sb = new StringBuffer();
sb.append(e.getMessage() + "/n");
for (int i = 0; i < ste.length; i++) {
sb.append(ste[i].toString() + "/n");
}
return sb.toString();
}
log4j自带一个方法(不是commons-logging),也可以把输出堆栈信息:
logger.error(String s,Exception e);