0
我一直在訓練自己的日誌記錄。我使用log4j庫進行日誌記錄,並且我是新設計模式。我想問的是如何創建一個工廠來獲取配置的記錄器?如何爲log4j編寫LogFactory?
我一直在訓練自己的日誌記錄。我使用log4j庫進行日誌記錄,並且我是新設計模式。我想問的是如何創建一個工廠來獲取配置的記錄器?如何爲log4j編寫LogFactory?
這可能對你有幫助。
public class LogFactory {
public static final String TOOLKIT = "logging.toolkit";
public static final String TOOLKITCLASS = "logging.toolkit.class";
public static final String Log4j = "log4j";
public static LogAdapter logAdapter;
public static Object lock = new Object();
/**
* Get specific Log implementation
* @param name
* @return
*/
public static Log getLog(final String name) {
if (logAdapter == null) {
synchronized (lock) {
String toolkitClass = System.getProperty(TOOLKITCLASS);
if (toolkitClass != null) {
System.out.println("\n Logging toolkitClass:" + toolkitClass + "\n\n");
logAdapter = createObject(toolkitClass);
}
else {
String toolkit = System.getProperty(TOOLKIT);
if (toolkit == null) {
toolkit = Log4j;
}
if (toolkit.equalsIgnoreCase(Log4j)) {
logAdapter = new Log4jAdapter();
}
}
//Initialize adapter
logAdapter.init();
}
}
return logAdapter.getLog(name);
}
public static Log getLog(final Class<?> clazz) {
return LogFactory.getLog(clazz.getName());
}
/**
* Create an instance of wrapper class using reflection
* @param className
* @return
*/
private static LogAdapter createObject(final String className) {
Object o = null;
try {
Class<?> cl = Class.forName(className);
Constructor<?> c = cl.getConstructor();
o = c.newInstance();
}
catch (Exception e) {
e.printStackTrace();
}
return (LogAdapter) o;
}
}