log4j配置问题,请进... gong1(轻松编程) ,怎么实现啊,大侠,提点提点亚 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 --------------//LevelDependFileAppender.javapackage org.apache.log4j;import java.io.OutputStreamWriter;import java.io.Writer;import java.io.File;import java.io.FileOutputStream;import org.apache.log4j.helpers.LogLog;public class LevelDependFileAppender extends LevelDependWriterAppender { protected String debugFile,infoFile,warnFile,errorFile,fatalFile; protected File fDebug,fInfo,fWarn,fError,fFatal; public LevelDependFileAppender() { } public LevelDependFileAppender(Layout layout, String sDebug,String sInfo, String sWarn,String sError,String sFatal) { this.layout = layout; setFiles(sDebug,sInfo,sWarn,sError,sFatal); } public void setdebugFile(String value) { if(value!=null){ debugFile= value.trim(); }else{ LogLog.warn("debugFile can not be null"); } } public String getdebugFile() { return debugFile; } public void setinfoFile(String value) { if(value!=null){ infoFile= value.trim(); }else{ LogLog.warn("InfoFile can not be null"); } } public String getInfoFile() { return infoFile; } public void setwarnFile(String value) { if(value!=null){ warnFile= value.trim(); }else{ LogLog.warn("warnFile can not be null"); } } public String getwarnFile() { return warnFile; } public void seterrorFile(String value) { if(value!=null){ errorFile= value.trim(); }else{ LogLog.warn("errorFile can not be null"); } } public String geterrorFile() { return errorFile; } public void setfatalFile(String value) { if(value!=null){ fatalFile= value.trim(); }else{ LogLog.warn("fatalFile can not be null"); } } public String getfatalFile() { return fatalFile; } public void setFiles(String sDebug,String sInfo, String sWarn,String sError,String sFatal){ setdebugFile(sDebug); setinfoFile(sInfo); setwarnFile(sWarn); seterrorFile(sError); setfatalFile(sFatal); activateOptions(); } public void activateOptions() { OutputStreamWriter wrDebug,wrInfo,wrWarn,wrError,wrFatal; try{ fDebug=new File(debugFile); wrDebug=new OutputStreamWriter(new FileOutputStream(fDebug)); fInfo=new File(infoFile); if(fInfo.getPath().equalsIgnoreCase(fDebug.getPath())){ fInfo=fDebug; wrInfo=wrDebug; }else wrInfo=new OutputStreamWriter(new FileOutputStream(fInfo)); fWarn=new File(warnFile); if(fWarn.getPath().equalsIgnoreCase(fDebug.getPath())){ fWarn=fDebug; wrWarn=wrDebug; } else if(fWarn.getPath().equalsIgnoreCase(fInfo.getPath())){ fWarn=fInfo; wrWarn=wrInfo; }else wrWarn=new OutputStreamWriter(new FileOutputStream(fWarn)); fError=new File(errorFile); if(fError.getPath().equalsIgnoreCase(fDebug.getPath())){ fError=fDebug; wrError=wrDebug; } else if(fError.getPath().equalsIgnoreCase(fInfo.getPath())){ fError=fInfo; wrError=wrInfo; } else if(fError.getPath().equalsIgnoreCase(fWarn.getPath())){ fError=fWarn; wrError=wrWarn; }else wrError=new OutputStreamWriter(new FileOutputStream(fError)); fFatal=new File(fatalFile); if(fFatal.getPath().equalsIgnoreCase(fDebug.getPath())){ fFatal=fDebug; wrFatal=wrDebug; } else if(fFatal.getPath().equalsIgnoreCase(fInfo.getPath())){ fFatal=fInfo; wrFatal=wrInfo; } else if(fFatal.getPath().equalsIgnoreCase(fWarn.getPath())){ fFatal=fWarn; wrFatal=wrWarn; } else if(fFatal.getPath().equalsIgnoreCase(fError.getPath())){ fFatal=fError; wrFatal=wrError; }else wrFatal=new OutputStreamWriter(new FileOutputStream(fFatal)); setWriters(wrDebug,wrInfo,wrWarn,wrError,wrFatal); }catch(Exception e){ LogLog.error("Can not open file!",e); }}}//LevelDependWriterAppender.javapackage org.apache.log4j;import java.io.IOException;import java.io.Writer;import java.io.OutputStream;import java.io.OutputStreamWriter;import org.apache.log4j.spi.ErrorHandler;import org.apache.log4j.spi.LoggingEvent;import org.apache.log4j.helpers.QuietWriter;import org.apache.log4j.helpers.LogLog;public class LevelDependWriterAppender extends AppenderSkeleton { protected boolean immediateFlush = true; protected String encoding; protected QuietWriter qwDebug ; protected QuietWriter qwInfo; protected QuietWriter qwWarn; protected QuietWriter qwError; protected QuietWriter qwFatal; public LevelDependWriterAppender() { } public LevelDependWriterAppender(Layout layout, OutputStream osDebug,OutputStream osInfo,OutputStream osWarn,OutputStream osError, OutputStream osFatal) { this(layout, new OutputStreamWriter(osDebug), new OutputStreamWriter(osInfo), new OutputStreamWriter(osWarn), new OutputStreamWriter(osError), new OutputStreamWriter(osFatal)); } public LevelDependWriterAppender(Layout layout, Writer wrDebug, Writer wrInfo, Writer wrWarn, Writer wrError, Writer wrFatal) { this.layout = layout; this.setWriters(wrDebug,wrInfo,wrWarn,wrError,wrFatal); } public void setImmediateFlush(boolean value) { immediateFlush = value; } public boolean getImmediateFlush() { return immediateFlush; } public void activateOptions() { } public void append(LoggingEvent event) { if(!checkEntryConditions(event)) { return; } subAppend(event); } protected boolean checkEntryConditions(LoggingEvent le) { if(this.closed) { LogLog.warn("Not allowed to write to a closed appender."); return false; } QuietWriter qw; switch(le.getLevel().level){ case Level.DEBUG_INT: qw=qwDebug; break; case Level.INFO_INT: qw=qwInfo; break; case Level.WARN_INT: qw=qwWarn; break; case Level.ERROR_INT: qw=qwError; break; case Level.FATAL_INT: qw=qwFatal; break; default: errorHandler.error("Not surpported level to "+this.getClass().getName()); return false; } if(qw == null) { errorHandler.error("No output stream or file used by"+le.getLevel().levelStr+ "set for the appender named ["+name+"]."); return false; } if(this.layout == null) { errorHandler.error("No layout set for the appender named ["+ name+"]."); return false; } return true; } public synchronized void close() { if(this.closed) return; this.closed = true; writeFooter(); reset(); } protected void closeWriter() { if(qwDebug != null) { try { qwDebug.close(); } catch(IOException e) { LogLog.error("Could not close " + qwDebug, e); } } if(qwInfo != null) { try { qwInfo.close(); } catch(IOException e) { LogLog.error("Could not close " + qwInfo, e); } } if(qwWarn != null) { try { qwWarn.close(); } catch(IOException e) { LogLog.error("Could not close " + qwWarn, e); } } if(qwError != null) { try { qwError.close(); } catch(IOException e) { LogLog.error("Could not close " + qwError, e); } } if(qwFatal != null) { try { qwFatal.close(); } catch(IOException e) { LogLog.error("Could not close " + qwFatal, e); } } } protected OutputStreamWriter createWriter(OutputStream os) { OutputStreamWriter retval = null; String enc = getEncoding(); if(enc != null) { try { retval = new OutputStreamWriter(os, enc); } catch(IOException e) { LogLog.warn("Error initializing output writer."); LogLog.warn("Unsupported encoding?"); } } if(retval == null) { retval = new OutputStreamWriter(os); } return retval; } public String getEncoding() { return encoding; } public void setEncoding(String value) { encoding = value; } public synchronized void setErrorHandler(ErrorHandler eh) { if(eh == null) { LogLog.warn("You have tried to set a null error-handler."); } else { this.errorHandler = eh; if(this.qwDebug != null) { this.qwDebug.setErrorHandler(eh); } if(this.qwInfo != null) { this.qwInfo.setErrorHandler(eh); } if(this.qwWarn != null) { this.qwWarn.setErrorHandler(eh); } if(this.qwError != null) { this.qwError.setErrorHandler(eh); } if(this.qwFatal != null) { this.qwFatal.setErrorHandler(eh); } } } public synchronized void setWriters(Writer wrDebug,Writer wrInfo, Writer wrWarn,Writer wrError,Writer wrFatal) { reset(); this.qwDebug = new QuietWriter(wrDebug, errorHandler); if(wrInfo==wrDebug) this.qwInfo=this.qwDebug; else this.qwInfo = new QuietWriter(wrInfo, errorHandler); if(wrWarn==wrDebug) this.qwWarn=this.qwDebug; else if(wrWarn==wrInfo) this.qwWarn=this.qwInfo; else this.qwWarn = new QuietWriter(wrWarn, errorHandler); if(wrError==wrDebug) this.qwError=this.qwDebug; else if(wrError==wrInfo) this.qwError=this.qwInfo; else if(wrError==wrWarn) this.qwError=this.qwWarn; else this.qwError = new QuietWriter(wrError, errorHandler); if(wrFatal==wrDebug) this.qwFatal=this.qwDebug; else if(wrFatal==wrInfo) this.qwFatal=this.qwInfo; else if(wrFatal==wrWarn) this.qwFatal=this.qwWarn; else if(wrFatal==wrError) this.qwFatal=this.qwError; else this.qwFatal = new QuietWriter(wrFatal, errorHandler); //this.tp = new TracerPrintWriter(qw); writeHeader(); } protected void subAppend(LoggingEvent event) { QuietWriter qw; switch(event.getLevel().level){ case Level.DEBUG_INT: qw=qwDebug; break; case Level.INFO_INT: qw=qwInfo; break; case Level.WARN_INT: qw=qwWarn; break; case Level.ERROR_INT: qw=qwError; break; case Level.FATAL_INT: qw=qwFatal; break; default: errorHandler.error("Not surpported level to "+this.getClass().getName()); return; } qw.write(this.layout.format(event)); if(layout.ignoresThrowable()) { String[] s = event.getThrowableStrRep(); if (s != null) { int len = s.length; for(int i = 0; i < len; i++) { qw.write(s[i]); qw.write(Layout.LINE_SEP); } } } if(this.immediateFlush) { qw.flush(); } } public boolean requiresLayout() { return true; } protected void reset() { closeWriter(); this.qwDebug = null; this.qwInfo = null; this.qwWarn = null; this.qwError = null; this.qwFatal = null; //this.tp = null; } protected void writeFooter() { if(layout != null) { String f = layout.getFooter(); if(f != null){ if(this.qwDebug != null) { this.qwDebug.write(f); this.qwDebug.flush(); } if((this.qwInfo != null)&&(this.qwDebug!=this.qwInfo)) { this.qwInfo.write(f); this.qwInfo.flush(); } if((this.qwWarn != null)&&(this.qwWarn!=this.qwInfo) &&(this.qwWarn!=this.qwDebug)){ this.qwWarn.write(f); this.qwWarn.flush(); } if((this.qwError != null)&&(this.qwError!=this.qwWarn) &&(this.qwError!=this.qwInfo)&&(this.qwError!=this.qwDebug)){ this.qwError.write(f); this.qwError.flush(); } if((this.qwFatal != null)&&(this.qwFatal!=this.qwError) &&(this.qwFatal!=this.qwWarn)&&(this.qwFatal!=this.qwInfo) &&(this.qwFatal!=this.qwDebug)){ this.qwFatal.write(f); this.qwFatal.flush(); } } } } protected void writeHeader() { if(layout != null) { String h = layout.getHeader(); if(h != null){ if(this.qwDebug != null) this.qwDebug.write(h); if((this.qwInfo != null)&&(this.qwDebug!=this.qwInfo)) this.qwInfo.write(h); if((this.qwWarn != null)&&(this.qwWarn!=this.qwInfo) &&(this.qwWarn!=this.qwDebug)) this.qwWarn.write(h); if((this.qwError != null)&&(this.qwError!=this.qwWarn) &&(this.qwError!=this.qwInfo)&&(this.qwError!=this.qwDebug)) this.qwError.write(h); if((this.qwFatal != null)&&(this.qwFatal!=this.qwError) &&(this.qwFatal!=this.qwWarn)&&(this.qwFatal!=this.qwInfo) &&(this.qwFatal!=this.qwDebug)) this.qwFatal.write(h); } } }}-----------------//log4j.propertieslog4j.debug=truelog4j.rootLogger=,A1log4j.appender.A1=org.apache.log4j.LevelDependFileAppenderlog4j.appender.A1.layout=org.apache.log4j.SimpleLayoutlog4j.appender.A1.debugFile=log4j_debug.loglog4j.appender.A1.infoFile=log4j_info.loglog4j.appender.A1.warnFile=log4j_warn.loglog4j.appender.A1.errorFile=log4j_error.loglog4j.appender.A1.fatalFile=log4j_fatal.log-------------//使用 PropertyConfigurator.configure("log4j.properties"); Logger log=Logger.getLogger(className); log.info("This is info msg"); log.debug("This is debug msg"); log.warn("This is warn msg"); log.error("This is error msg"); log.fatal("This is fatal msg"); log.info("Another info msg"); log.fatal("Another fatal msg"); 如何将编写好的JSP项目发布到服务器中? JSP读取内容乱码问题 fr struts2中使用ewebeditor的bug [在线等]请问${}是什么呢~? 在jsp中怎样弹出“是否确定删除”的小窗口 菜鸟提问,jsp网页设计 ---怎么样得到用户在地址栏里输入的URL? 我是无从下手,请高手帮帮忙 怎样在按钮的onclick事件调用Javascript函数时传参数过去?急!!! 参数不足,期待是1 请问各位大哥,如何动态生成表头?
//LevelDependFileAppender.javapackage org.apache.log4j;import java.io.OutputStreamWriter;
import java.io.Writer;
import java.io.File;
import java.io.FileOutputStream;
import org.apache.log4j.helpers.LogLog;public class LevelDependFileAppender extends LevelDependWriterAppender { protected String debugFile,infoFile,warnFile,errorFile,fatalFile;
protected File fDebug,fInfo,fWarn,fError,fFatal; public LevelDependFileAppender() {
} public LevelDependFileAppender(Layout layout, String sDebug,String sInfo,
String sWarn,String sError,String sFatal) {
this.layout = layout;
setFiles(sDebug,sInfo,sWarn,sError,sFatal);
} public
void setdebugFile(String value) {
if(value!=null){
debugFile= value.trim();
}else{
LogLog.warn("debugFile can not be null");
}
} public
String getdebugFile() {
return debugFile;
} public
void setinfoFile(String value) {
if(value!=null){
infoFile= value.trim();
}else{
LogLog.warn("InfoFile can not be null");
}
} public
String getInfoFile() {
return infoFile;
}
public
void setwarnFile(String value) {
if(value!=null){
warnFile= value.trim();
}else{
LogLog.warn("warnFile can not be null");
}
} public
String getwarnFile() {
return warnFile;
}
public
void seterrorFile(String value) {
if(value!=null){
errorFile= value.trim();
}else{
LogLog.warn("errorFile can not be null");
}
} public
String geterrorFile() {
return errorFile;
}
public
void setfatalFile(String value) {
if(value!=null){
fatalFile= value.trim();
}else{
LogLog.warn("fatalFile can not be null");
}
} public
String getfatalFile() {
return fatalFile;
}
public
void setFiles(String sDebug,String sInfo,
String sWarn,String sError,String sFatal){
setdebugFile(sDebug);
setinfoFile(sInfo);
setwarnFile(sWarn);
seterrorFile(sError);
setfatalFile(sFatal);
activateOptions();
}
public
void activateOptions() {
OutputStreamWriter wrDebug,wrInfo,wrWarn,wrError,wrFatal;
try{
fDebug=new File(debugFile);
wrDebug=new OutputStreamWriter(new FileOutputStream(fDebug));
fInfo=new File(infoFile);
if(fInfo.getPath().equalsIgnoreCase(fDebug.getPath())){
fInfo=fDebug;
wrInfo=wrDebug;
}else wrInfo=new OutputStreamWriter(new FileOutputStream(fInfo));
fWarn=new File(warnFile);
if(fWarn.getPath().equalsIgnoreCase(fDebug.getPath())){
fWarn=fDebug;
wrWarn=wrDebug;
}
else if(fWarn.getPath().equalsIgnoreCase(fInfo.getPath())){
fWarn=fInfo;
wrWarn=wrInfo;
}else wrWarn=new OutputStreamWriter(new FileOutputStream(fWarn));
fError=new File(errorFile);
if(fError.getPath().equalsIgnoreCase(fDebug.getPath())){
fError=fDebug;
wrError=wrDebug;
}
else if(fError.getPath().equalsIgnoreCase(fInfo.getPath())){
fError=fInfo;
wrError=wrInfo;
}
else if(fError.getPath().equalsIgnoreCase(fWarn.getPath())){
fError=fWarn;
wrError=wrWarn;
}else wrError=new OutputStreamWriter(new FileOutputStream(fError));
fFatal=new File(fatalFile);
if(fFatal.getPath().equalsIgnoreCase(fDebug.getPath())){
fFatal=fDebug;
wrFatal=wrDebug;
}
else if(fFatal.getPath().equalsIgnoreCase(fInfo.getPath())){
fFatal=fInfo;
wrFatal=wrInfo;
}
else if(fFatal.getPath().equalsIgnoreCase(fWarn.getPath())){
fFatal=fWarn;
wrFatal=wrWarn;
}
else if(fFatal.getPath().equalsIgnoreCase(fError.getPath())){
fFatal=fError;
wrFatal=wrError;
}else wrFatal=new OutputStreamWriter(new FileOutputStream(fFatal));
setWriters(wrDebug,wrInfo,wrWarn,wrError,wrFatal);
}catch(Exception e){
LogLog.error("Can not open file!",e);
}
}
}
//LevelDependWriterAppender.javapackage org.apache.log4j;import java.io.IOException;
import java.io.Writer;
import java.io.OutputStream;
import java.io.OutputStreamWriter;import org.apache.log4j.spi.ErrorHandler;
import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.helpers.QuietWriter;
import org.apache.log4j.helpers.LogLog;
public class LevelDependWriterAppender extends AppenderSkeleton { protected boolean immediateFlush = true; protected String encoding; protected QuietWriter qwDebug ;
protected QuietWriter qwInfo;
protected QuietWriter qwWarn;
protected QuietWriter qwError;
protected QuietWriter qwFatal; public
LevelDependWriterAppender() {
}
public
LevelDependWriterAppender(Layout layout, OutputStream osDebug,OutputStream
osInfo,OutputStream osWarn,OutputStream osError,
OutputStream osFatal) {
this(layout, new OutputStreamWriter(osDebug), new OutputStreamWriter(osInfo),
new OutputStreamWriter(osWarn), new OutputStreamWriter(osError),
new OutputStreamWriter(osFatal));
} public
LevelDependWriterAppender(Layout layout, Writer wrDebug, Writer wrInfo,
Writer wrWarn, Writer wrError, Writer wrFatal) {
this.layout = layout;
this.setWriters(wrDebug,wrInfo,wrWarn,wrError,wrFatal);
} public
void setImmediateFlush(boolean value) {
immediateFlush = value;
} public
boolean getImmediateFlush() {
return immediateFlush;
} public
void activateOptions() {
} public
void append(LoggingEvent event) { if(!checkEntryConditions(event)) {
return;
}
subAppend(event);
} protected
boolean checkEntryConditions(LoggingEvent le) {
if(this.closed) {
LogLog.warn("Not allowed to write to a closed appender.");
return false;
}
QuietWriter qw;
switch(le.getLevel().level){
case Level.DEBUG_INT:
qw=qwDebug;
break;
case Level.INFO_INT:
qw=qwInfo;
break;
case Level.WARN_INT:
qw=qwWarn;
break;
case Level.ERROR_INT:
qw=qwError;
break;
case Level.FATAL_INT:
qw=qwFatal;
break;
default:
errorHandler.error("Not surpported level to "+this.getClass().getName());
return false;
}
if(qw == null) {
errorHandler.error("No output stream or file used by"+le.getLevel().levelStr+
"set for the appender named ["+name+"].");
return false;
} if(this.layout == null) {
errorHandler.error("No layout set for the appender named ["+ name+"].");
return false;
}
return true;
} public
synchronized
void close() {
if(this.closed)
return;
this.closed = true;
writeFooter();
reset();
} protected void closeWriter() {
if(qwDebug != null) {
try {
qwDebug.close();
} catch(IOException e) {
LogLog.error("Could not close " + qwDebug, e);
}
}
if(qwInfo != null) {
try {
qwInfo.close();
} catch(IOException e) {
LogLog.error("Could not close " + qwInfo, e);
}
}
if(qwWarn != null) {
try {
qwWarn.close();
} catch(IOException e) {
LogLog.error("Could not close " + qwWarn, e);
}
}
if(qwError != null) {
try {
qwError.close();
} catch(IOException e) {
LogLog.error("Could not close " + qwError, e);
}
}
if(qwFatal != null) {
try {
qwFatal.close();
} catch(IOException e) {
LogLog.error("Could not close " + qwFatal, e);
}
}
} protected
OutputStreamWriter createWriter(OutputStream os) {
OutputStreamWriter retval = null; String enc = getEncoding();
if(enc != null) {
try {
retval = new OutputStreamWriter(os, enc);
} catch(IOException e) {
LogLog.warn("Error initializing output writer.");
LogLog.warn("Unsupported encoding?");
}
}
if(retval == null) {
retval = new OutputStreamWriter(os);
}
return retval;
} public String getEncoding() {
return encoding;
} public void setEncoding(String value) {
encoding = value;
}
if(eh == null) {
LogLog.warn("You have tried to set a null error-handler.");
} else {
this.errorHandler = eh;
if(this.qwDebug != null) {
this.qwDebug.setErrorHandler(eh);
}
if(this.qwInfo != null) {
this.qwInfo.setErrorHandler(eh);
}
if(this.qwWarn != null) {
this.qwWarn.setErrorHandler(eh);
}
if(this.qwError != null) {
this.qwError.setErrorHandler(eh);
}
if(this.qwFatal != null) {
this.qwFatal.setErrorHandler(eh);
}
}
} public synchronized void setWriters(Writer wrDebug,Writer wrInfo,
Writer wrWarn,Writer wrError,Writer wrFatal) {
reset();
this.qwDebug = new QuietWriter(wrDebug, errorHandler);
if(wrInfo==wrDebug)
this.qwInfo=this.qwDebug;
else this.qwInfo = new QuietWriter(wrInfo, errorHandler);
if(wrWarn==wrDebug)
this.qwWarn=this.qwDebug;
else if(wrWarn==wrInfo)
this.qwWarn=this.qwInfo;
else this.qwWarn = new QuietWriter(wrWarn, errorHandler);
if(wrError==wrDebug)
this.qwError=this.qwDebug;
else if(wrError==wrInfo)
this.qwError=this.qwInfo;
else if(wrError==wrWarn)
this.qwError=this.qwWarn;
else this.qwError = new QuietWriter(wrError, errorHandler);
if(wrFatal==wrDebug)
this.qwFatal=this.qwDebug;
else if(wrFatal==wrInfo)
this.qwFatal=this.qwInfo;
else if(wrFatal==wrWarn)
this.qwFatal=this.qwWarn;
else if(wrFatal==wrError)
this.qwFatal=this.qwError;
else this.qwFatal = new QuietWriter(wrFatal, errorHandler);
//this.tp = new TracerPrintWriter(qw);
writeHeader();
} protected
void subAppend(LoggingEvent event) {
QuietWriter qw;
switch(event.getLevel().level){
case Level.DEBUG_INT:
qw=qwDebug;
break;
case Level.INFO_INT:
qw=qwInfo;
break;
case Level.WARN_INT:
qw=qwWarn;
break;
case Level.ERROR_INT:
qw=qwError;
break;
case Level.FATAL_INT:
qw=qwFatal;
break;
default:
errorHandler.error("Not surpported level to "+this.getClass().getName());
return;
}
qw.write(this.layout.format(event)); if(layout.ignoresThrowable()) {
String[] s = event.getThrowableStrRep();
if (s != null) {
int len = s.length;
for(int i = 0; i < len; i++) {
qw.write(s[i]);
qw.write(Layout.LINE_SEP);
}
}
} if(this.immediateFlush) {
qw.flush();
}
} public
boolean requiresLayout() {
return true;
} protected
void reset() {
closeWriter();
this.qwDebug = null;
this.qwInfo = null;
this.qwWarn = null;
this.qwError = null;
this.qwFatal = null;
//this.tp = null;
} protected
void writeFooter() {
if(layout != null) {
String f = layout.getFooter();
if(f != null){
if(this.qwDebug != null) {
this.qwDebug.write(f);
this.qwDebug.flush();
}
if((this.qwInfo != null)&&(this.qwDebug!=this.qwInfo)) {
this.qwInfo.write(f);
this.qwInfo.flush();
}
if((this.qwWarn != null)&&(this.qwWarn!=this.qwInfo)
&&(this.qwWarn!=this.qwDebug)){
this.qwWarn.write(f);
this.qwWarn.flush();
}
if((this.qwError != null)&&(this.qwError!=this.qwWarn)
&&(this.qwError!=this.qwInfo)&&(this.qwError!=this.qwDebug)){
this.qwError.write(f);
this.qwError.flush();
}
if((this.qwFatal != null)&&(this.qwFatal!=this.qwError)
&&(this.qwFatal!=this.qwWarn)&&(this.qwFatal!=this.qwInfo)
&&(this.qwFatal!=this.qwDebug)){
this.qwFatal.write(f);
this.qwFatal.flush();
} } }
} protected
void writeHeader() {
if(layout != null) {
String h = layout.getHeader();
if(h != null){
if(this.qwDebug != null)
this.qwDebug.write(h);
if((this.qwInfo != null)&&(this.qwDebug!=this.qwInfo))
this.qwInfo.write(h);
if((this.qwWarn != null)&&(this.qwWarn!=this.qwInfo)
&&(this.qwWarn!=this.qwDebug))
this.qwWarn.write(h);
if((this.qwError != null)&&(this.qwError!=this.qwWarn)
&&(this.qwError!=this.qwInfo)&&(this.qwError!=this.qwDebug))
this.qwError.write(h);
if((this.qwFatal != null)&&(this.qwFatal!=this.qwError)
&&(this.qwFatal!=this.qwWarn)&&(this.qwFatal!=this.qwInfo)
&&(this.qwFatal!=this.qwDebug))
this.qwFatal.write(h);
} }
}
}
-----------------
//log4j.properties
log4j.debug=true
log4j.rootLogger=,A1
log4j.appender.A1=org.apache.log4j.LevelDependFileAppender
log4j.appender.A1.layout=org.apache.log4j.SimpleLayout
log4j.appender.A1.debugFile=log4j_debug.log
log4j.appender.A1.infoFile=log4j_info.log
log4j.appender.A1.warnFile=log4j_warn.log
log4j.appender.A1.errorFile=log4j_error.log
log4j.appender.A1.fatalFile=log4j_fatal.log
-------------
//使用
PropertyConfigurator.configure("log4j.properties");
Logger log=Logger.getLogger(className);
log.info("This is info msg");
log.debug("This is debug msg");
log.warn("This is warn msg");
log.error("This is error msg");
log.fatal("This is fatal msg");
log.info("Another info msg");
log.fatal("Another fatal msg");