Я недавно унаследовал некоторый код Java и должен интегрировать его в проект, над которым я работаю.Мой проект - сервисный агент, который обрабатывает и преобразует сообщения XML.Просматривая новый код, я обнаружил следующий класс ведения журнала:
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
public class MyLogger {
private static MyLogger instance = null;
protected final static Logger log = Logger.getLogger(MyLogger.class);
private MyLogger() {
super();
}
public static MyLogger getInstance(){
if(instance == null){
instance = new MyLogger();
BasicConfigurator.configure();
log.setLevel(Level.ALL);
}
return instance;
}
public void info(String myclass, String msg) {
log.info("[" + myclass + "] " + msg);
}
public void error(String myclass, String msg, Exception ce) {
log.error("[" + myclass + "] " + msg, ce);
}
public void warning(String myclass, String msg) {
log.warn("[" + myclass + "] " + msg);
}
}
Этот класс в основном оборачивает log4j (другим) синглтоном.Все записи в классах, которые мне нужно интегрировать, выглядят примерно так:
public class MyClass {
private final static MyLogger log = MyLogger.getInstance();
private final static String myclass = MyClass.class.getName();
...
log.info(myclass, "Information message...");
}
Я не вижу очевидного преимущества использования дополнительного класса для ведения журнала, поэтому я рассматриваю возможность рефакторинга этого кода для удалениякласс MyLogger и войдите в систему следующим образом:
import org.apache.log4j.Logger;
public class MyClass {
private static Logger log = Logger.getLogger(MyClass.class);
...
log.info("Information Message...");
}
Это сделает механизм ведения журнала согласованным для всего проекта.Прежде чем я сделаю это, я хотел бы знать, есть ли какие-либо преимущества для упаковки Log4j с одноэлементным классом, который я могу пропустить.Спасибо!
РЕДАКТИРОВАТЬ: Спасибо всем за полезные ответы - я подобрал несколько новых идей от каждого.Принял ответ Натана Хьюза за то, что он указал на утраченную функциональность, оставив класс нетронутым - я предполагал, что самым большим недостатком в оставлении одного синглтона было просто раздувание кода.Я испорчу класс.