logmanager.java~2~
来自「一个自己做的公司网站和办公职员管理系统。」· JAVA~2~ 代码 · 共 136 行
JAVA~2~
136 行
package ws.woa.logger;
import java.io.FileInputStream;
import java.util.HashMap;
import ws.woa.core.ControllerServlet;
import org.apache.xerces.parsers.SAXParser;
import org.xml.sax.Attributes;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXParseException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
/**
* system-conf.xml偐傜儘僌偵娭偡傞愝掕傪夝愅偟丄
* 揔愗偵愝掕偝傟偨LogWriter傪庢摼偡傞偨傔偺僼傽僋僩儕偲偟偰摦嶌偟傑偡丅
*
* @author Wang
*/
public class LogManager {
private static LogManager instance = null;
private HashMap map = new HashMap();
/**
* 僾儔僀儀乕僩僐儞僗僩儔僋僞
*/
private LogManager() {
try {
String file = ControllerServlet.context.getRealPath("/WEB-INF/system.xml");
LogSAXHandler handler = new LogSAXHandler();
XMLReader parser = new SAXParser();
parser.setContentHandler(handler);
parser.setErrorHandler(handler);
parser.parse(new InputSource(new FileInputStream(file)));
} catch(Exception ex){
// 儘僌偼傾僾儕働乕僔儑儞偺堦晹偱偼側偄偺偱
// 愝掕偑偍偐偟偔偰傕儘僌弌椡晄壜偵偡傞偩偗丅
}
}
/**
* LogWriter傪庢摼偟傑偡丅
* @param name system.xml偱掕媊偟偨logger偺柤慜
* @return LogWriter
*/
public LogWriter getLogWriter(String name){
if(map.get(name)==null){
return new LogWriter();
}
return (LogWriter)map.get(name);
}
/**
* LogManager偺僀儞僗僞儞僗傪庢摼偟傑偡丅
* @return LogManager
*/
public static synchronized LogManager getInstance() {
if(instance==null){
instance = new LogManager();
}
return instance;
}
/*---------------------------------------------------------------*/
/**
* system.xml傪夝愅偟丄儘僌娭學偺忣曬傪庢摼偡傞僴儞僪儔丅
*/
class LogSAXHandler extends DefaultHandler {
/**
* 僞僌奐巒僀儀儞僩偺張棟丅
* 傾僋僔儑儞掕媊僼傽僀儖偵晄惓偑偁偭偨応崌偼幚峴帪椺奜傪throw偟傑偡丅
*/
public void startElement(String uri,String local,String raw,Attributes attrs){
if(raw.equals("log")){
parseLog(attrs);
}
}
/**
* log僞僌偺夝愅
*/
private void parseLog(Attributes attrs){
String name = attrs.getValue("name");
String serial = attrs.getValue("serializer");
String level = attrs.getValue("level");
String file = attrs.getValue("path");
String a_file = attrs.getValue("absolute-path");
String encode = attrs.getValue("encode");
LogWriter logger = new LogWriter();
LogSerializer serializer = null;
// 僔儕傾儔僀僓偺僀儞僗僞儞僗傪惗惉
if(serial.equals("systemout")){
serializer = new SystemOutSerializer();
} else if(serial.equals("file")){
if(a_file!=null){
// 愨懳僷僗傪巊梡
serializer = new FileSerializer(a_file);
} else if(file!=null){
// 傾僾儕働乕僔儑儞儖乕僩偐傜偺憡懳僷僗傪巊梡
serializer = new FileSerializer(ControllerServlet.context.getRealPath(file));
} else {
// 僄儔乕
serializer = new NullSerializer();
}
}
// 僄儞僐乕僪傪巜掕
if(encode!=null && !encode.equals("")){
serializer.setEncode(encode);
}
logger.setSerializer(serializer);
// 儘僌儗儀儖傪僙僢僩
if(level.equals("DEBUG")){
logger.setLevel(LogConstants.DEBUG);
} else if(level.equals("ERROR")){
logger.setLevel(LogConstants.ERROR);
} else if(level.equals("ALART")){
logger.setLevel(LogConstants.ALART);
} else if(level.equals("REPORT")){
logger.setLevel(LogConstants.REPORT);
} else if(level.equals("NOTHING")){
logger.setLevel(LogConstants.NOTHING);
}
map.put(name,logger);
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?