এটা না sjf4j মধ্যে একটি লগ স্তর উল্লেখ করা সম্ভব 1.xবাক্সের বাইরে। তবে সমস্যাটি2.0 সমাধানের জন্য slf4j এর আশা রয়েছে । 2.0 এ এটির মতো দেখতে পাওয়া যাবে:
import org.slf4j.helpers.Util;
import static org.slf4j.spi.LocationAwareLogger.*;
Util.log(logger, DEBUG_INT, "hello world!");
এরই মধ্যে, slf4j 1.x এর জন্য, আপনি এই কাজেরটি ব্যবহার করতে পারেন:
এই ক্লাসটি আপনার ক্লাসপথে অনুলিপি করুন:
import org.slf4j.Logger;
import java.util.function.Function;
public enum LogLevel {
TRACE(l -> l::trace, Logger::isTraceEnabled),
DEBUG(l -> l::debug, Logger::isDebugEnabled),
INFO(l -> l::info, Logger::isInfoEnabled),
WARN(l -> l::warn, Logger::isWarnEnabled),
ERROR(l -> l::error, Logger::isErrorEnabled);
interface LogMethod {
void log(String format, Object... arguments);
}
private final Function<Logger, LogMethod> logMethod;
private final Function<Logger, Boolean> isEnabledMethod;
LogLevel(Function<Logger, LogMethod> logMethod, Function<Logger, Boolean> isEnabledMethod) {
this.logMethod = logMethod;
this.isEnabledMethod = isEnabledMethod;
}
public LogMethod prepare(Logger logger) {
return logMethod.apply(logger);
}
public boolean isEnabled(Logger logger) {
return isEnabledMethod.apply(logger);
}
}
তারপরে আপনি এটি ব্যবহার করতে পারেন:
Logger logger = LoggerFactory.getLogger(Application.class);
LogLevel level = LogLevel.ERROR;
level.prepare(logger).log("It works!");
level.prepare(logger).log("Hello {}!", "world");
try {
throw new RuntimeException("Oops");
} catch (Throwable t) {
level.prepare(logger).log("Exception", t);
}
if (level.isEnabled(logger)) {
level.prepare(logger).log("logging is enabled");
}
এটি এর মতো একটি লগ আউটপুট দেবে:
[main] ERROR Application - It works!
[main] ERROR Application - Hello world!
[main] ERROR Application - Exception
java.lang.RuntimeException: Oops
at Application.main(Application.java:14)
[main] ERROR Application - logging is enabled
এটা কি মূল্য?
- Proএটি উত্স কোডের অবস্থানটি রাখে (শ্রেণীর নাম, পদ্ধতির নাম, লাইন নম্বরগুলি আপনার কোডকে নির্দেশ করবে )
- Proআপনি সহজেই ভেরিয়েবল , প্যারামিটার এবং রিটার্নের ধরণগুলি সংজ্ঞায়িত করতে পারেন
LogLevel
- Proআপনার ব্যবসায়ের কোডটি ছোট এবং পড়তে সহজ এবং কোন অতিরিক্ত নির্ভরতার প্রয়োজন নেই required
সর্বনিম্ন উদাহরণ হিসাবে উত্স কোডটি গিটহাবটিতে হোস্ট করা হয়েছে ।