आपके पास एकाधिक लॉगर उदाहरण हैं क्योंकि आप लॉगिंग करते समय उन्हें अलग व्यवहार करना चाहते हैं (आमतौर पर उस क्लास नाम को प्रिंट करके, जिसे वे कॉन्फ़िगर करते हैं)। यदि आपको इसकी परवाह नहीं है, तो आप कक्षा में केवल एक स्थिर लॉगर उदाहरण बना सकते हैं और उस स्थान पर इसका उपयोग कर सकते हैं।
एकल लॉगर बनाने के लिए, आप केवल एक स्थिर उपयोगिता लॉगिंग क्लास को एकल बिंदु लॉगर होने के लिए बना सकते हैं, इसलिए यदि हमें लॉगर पैकेज को बदलने की आवश्यकता है, तो आप केवल इस कक्षा को अपडेट करेंगे।
final public class Logger {
private static final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger("Log");
enum Level {Error, Warn, Fatal, Info, Debug}
private Logger() {/* do nothing */};
public static void logError(Class clazz, String msg) {
log(Level.Error, clazz, msg, null);
}
public static void logWarn(Class clazz, String msg) {
log(Level.Warn, clazz, msg, null);
}
public static void logFatal(Class clazz, String msg) {
log(Level.Fatal, clazz, msg, null);
}
public static void logInfo(Class clazz, String msg) {
log(Level.Info, clazz, msg, null);
}
public static void logDebug(Class clazz, String msg) {
log(Level.Debug, clazz, msg, null);
}
public static void logError(Class clazz, String msg, Throwable throwable) {
log(Level.Error, clazz, msg, throwable);
}
public static void logWarn(Class clazz, String msg, Throwable throwable) {
log(Level.Warn, clazz, msg, throwable);
}
public static void logFatal(Class clazz, String msg, Throwable throwable) {
log(Level.Fatal, clazz, msg, throwable);
}
public static void logInfo(Class clazz, String msg, Throwable throwable) {
log(Level.Info, clazz, msg, throwable);
}
public static void logDebug(Class clazz, String msg, Throwable throwable) {
log(Level.Debug, clazz, msg, throwable);
}
private static void log(Level level, Class clazz, String msg, Throwable throwable) {
String message = String.format("[%s] : %s", clazz, msg);
switch (level) {
case Info:
logger.info(message, throwable);
break;
case Warn:
logger.warn(message, throwable);
break;
case Error:
logger.error(message, throwable);
break;
case Fatal:
logger.fatal(message, throwable);
break;
default:
case Debug:
logger.debug(message, throwable);
}
}
}
मैंने ठीक उसी तरह किया जैसा आपने उल्लेख किया है, लेकिन मुख्य वर्ग में केवल लॉग मुद्रित हो जाते हैं, अन्य तरीकों से लॉग मुद्रित नहीं होते हैं? इसे कैसे जोड़ेंगे –