Wenn Sie ein neues System erstellen, bleiben Sie bei Webels Antwort.
Wenn Sie ein vorhandenes System haben, das Sie zu log4j2 migrieren, sollten Sie wahrscheinlich noch die generate-Methoden ausführen (aber ich schließe eine minimale Arbeitsklasse ein), und Sie können diese Funktion hinzufügen, die die alte 1 bietet.2 callerFQCN Art und Weise Dinge (Art) zu tun:
public void log(Class ignoreClassFQCN, Level level, Marker marker, String msg, Throwable throwable){
logger.logIfEnabled(ignoreClassFQCN.getName(), level, marker, msg, throwable);
}
Dann aus Ihrem bestehenden Log-Wrapping-Klassen, können Sie etwas tun:
// inside ThisClass.java, denoting an old logger such as one that used log4j 1.2 with the callerFQCN parameter, or just an old logger that's naive and custom built.
private static final MyLog4j2WrapperClass newLogger = MyLog4j2WrapperClass.create();
public static void debug(String message) {
// basic example
newLogger.log(ThisClass.class, Level.DEBUG, null, message, null);
}
public static void logFailure(String message) {
// example of using a custom log level
newLogger.log(ThisClass.class, MyLog4j2WrapperClass.FAILURE, null, message, null);
}
Ich war zufällig ein Bündel löschen von anderen generierten Funktionen verwende ich nicht, da ich plante, eine einfache Shim für ein schlecht entworfenes (benutzerdefiniertes) Logging-System zu machen. Ich habe einige create() Methoden gelöscht, die ich nicht verwenden wollte. Also hier ist eine Arbeiterklasse (die Teile im Wert von Sharing):
public final class MyLog4j2WrapperClass extends ExtendedLoggerWrapper {
private static final long serialVersionUID = 1L;
private final ExtendedLoggerWrapper logger;
private static final String FQCN = MyLog4j2WrapperClass.class.getName();
public static final Level FAILURE = Level.forName("FAILURE", 150);
public void log(Class ignoreClass, Level level, Marker marker, String msg, Throwable throwable){
logger.logIfEnabled(ignoreClass.getName(), level, marker, msg, throwable);
}
private MyLog4j2WrapperClass(final Logger logger) {
super((AbstractLogger) logger, logger.getName(), logger.getMessageFactory());
this.logger = this;
}
/**
* Returns a custom Logger with the name of the calling class.
*
* @return The custom Logger for the calling class.
*/
public static MyLog4j2WrapperClass create() {
final Logger wrapped = LogManager.getLogger();
return new MyLog4j2WrapperClass(wrapped);
}
Ich sollte anmerken, dass ich dies berücksichtigen eine Beilage - es ist etwas zu Ihnen durch, aber ich würde weiterhin dringend empfohlen, von der alten wegzubewegen Logging-System, sobald Sie die Shim an Ort und Stelle haben. Auf diese Weise können Sie mehr inkrementelle Codeänderungen durchführen, ohne sofort eine vollständige Migration durchführen zu müssen.