Use local LoggerContext in Log4jLog when static field not initialized yet
Closes gh-24440
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2018 the original author or authors.
|
* Copyright 2002-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -157,7 +157,12 @@ final class LogAdapter {
|
|||||||
private final ExtendedLogger logger;
|
private final ExtendedLogger logger;
|
||||||
|
|
||||||
public Log4jLog(String name) {
|
public Log4jLog(String name) {
|
||||||
this.logger = loggerContext.getLogger(name);
|
LoggerContext context = loggerContext;
|
||||||
|
if (context == null) {
|
||||||
|
// Circular call in early-init scenario -> static field not initialized yet
|
||||||
|
context = LogManager.getContext(Log4jLog.class.getClassLoader(), false);
|
||||||
|
}
|
||||||
|
this.logger = context.getLogger(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -280,92 +285,110 @@ final class LogAdapter {
|
|||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean isFatalEnabled() {
|
public boolean isFatalEnabled() {
|
||||||
return isErrorEnabled();
|
return isErrorEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean isErrorEnabled() {
|
public boolean isErrorEnabled() {
|
||||||
return this.logger.isErrorEnabled();
|
return this.logger.isErrorEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean isWarnEnabled() {
|
public boolean isWarnEnabled() {
|
||||||
return this.logger.isWarnEnabled();
|
return this.logger.isWarnEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean isInfoEnabled() {
|
public boolean isInfoEnabled() {
|
||||||
return this.logger.isInfoEnabled();
|
return this.logger.isInfoEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean isDebugEnabled() {
|
public boolean isDebugEnabled() {
|
||||||
return this.logger.isDebugEnabled();
|
return this.logger.isDebugEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean isTraceEnabled() {
|
public boolean isTraceEnabled() {
|
||||||
return this.logger.isTraceEnabled();
|
return this.logger.isTraceEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void fatal(Object message) {
|
public void fatal(Object message) {
|
||||||
error(message);
|
error(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void fatal(Object message, Throwable exception) {
|
public void fatal(Object message, Throwable exception) {
|
||||||
error(message, exception);
|
error(message, exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void error(Object message) {
|
public void error(Object message) {
|
||||||
if (message instanceof String || this.logger.isErrorEnabled()) {
|
if (message instanceof String || this.logger.isErrorEnabled()) {
|
||||||
this.logger.error(String.valueOf(message));
|
this.logger.error(String.valueOf(message));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void error(Object message, Throwable exception) {
|
public void error(Object message, Throwable exception) {
|
||||||
if (message instanceof String || this.logger.isErrorEnabled()) {
|
if (message instanceof String || this.logger.isErrorEnabled()) {
|
||||||
this.logger.error(String.valueOf(message), exception);
|
this.logger.error(String.valueOf(message), exception);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void warn(Object message) {
|
public void warn(Object message) {
|
||||||
if (message instanceof String || this.logger.isWarnEnabled()) {
|
if (message instanceof String || this.logger.isWarnEnabled()) {
|
||||||
this.logger.warn(String.valueOf(message));
|
this.logger.warn(String.valueOf(message));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void warn(Object message, Throwable exception) {
|
public void warn(Object message, Throwable exception) {
|
||||||
if (message instanceof String || this.logger.isWarnEnabled()) {
|
if (message instanceof String || this.logger.isWarnEnabled()) {
|
||||||
this.logger.warn(String.valueOf(message), exception);
|
this.logger.warn(String.valueOf(message), exception);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void info(Object message) {
|
public void info(Object message) {
|
||||||
if (message instanceof String || this.logger.isInfoEnabled()) {
|
if (message instanceof String || this.logger.isInfoEnabled()) {
|
||||||
this.logger.info(String.valueOf(message));
|
this.logger.info(String.valueOf(message));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void info(Object message, Throwable exception) {
|
public void info(Object message, Throwable exception) {
|
||||||
if (message instanceof String || this.logger.isInfoEnabled()) {
|
if (message instanceof String || this.logger.isInfoEnabled()) {
|
||||||
this.logger.info(String.valueOf(message), exception);
|
this.logger.info(String.valueOf(message), exception);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void debug(Object message) {
|
public void debug(Object message) {
|
||||||
if (message instanceof String || this.logger.isDebugEnabled()) {
|
if (message instanceof String || this.logger.isDebugEnabled()) {
|
||||||
this.logger.debug(String.valueOf(message));
|
this.logger.debug(String.valueOf(message));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void debug(Object message, Throwable exception) {
|
public void debug(Object message, Throwable exception) {
|
||||||
if (message instanceof String || this.logger.isDebugEnabled()) {
|
if (message instanceof String || this.logger.isDebugEnabled()) {
|
||||||
this.logger.debug(String.valueOf(message), exception);
|
this.logger.debug(String.valueOf(message), exception);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void trace(Object message) {
|
public void trace(Object message) {
|
||||||
if (message instanceof String || this.logger.isTraceEnabled()) {
|
if (message instanceof String || this.logger.isTraceEnabled()) {
|
||||||
this.logger.trace(String.valueOf(message));
|
this.logger.trace(String.valueOf(message));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void trace(Object message, Throwable exception) {
|
public void trace(Object message, Throwable exception) {
|
||||||
if (message instanceof String || this.logger.isTraceEnabled()) {
|
if (message instanceof String || this.logger.isTraceEnabled()) {
|
||||||
this.logger.trace(String.valueOf(message), exception);
|
this.logger.trace(String.valueOf(message), exception);
|
||||||
@@ -486,74 +509,92 @@ final class LogAdapter {
|
|||||||
this.logger = java.util.logging.Logger.getLogger(name);
|
this.logger = java.util.logging.Logger.getLogger(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean isFatalEnabled() {
|
public boolean isFatalEnabled() {
|
||||||
return isErrorEnabled();
|
return isErrorEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean isErrorEnabled() {
|
public boolean isErrorEnabled() {
|
||||||
return this.logger.isLoggable(java.util.logging.Level.SEVERE);
|
return this.logger.isLoggable(java.util.logging.Level.SEVERE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean isWarnEnabled() {
|
public boolean isWarnEnabled() {
|
||||||
return this.logger.isLoggable(java.util.logging.Level.WARNING);
|
return this.logger.isLoggable(java.util.logging.Level.WARNING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean isInfoEnabled() {
|
public boolean isInfoEnabled() {
|
||||||
return this.logger.isLoggable(java.util.logging.Level.INFO);
|
return this.logger.isLoggable(java.util.logging.Level.INFO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean isDebugEnabled() {
|
public boolean isDebugEnabled() {
|
||||||
return this.logger.isLoggable(java.util.logging.Level.FINE);
|
return this.logger.isLoggable(java.util.logging.Level.FINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean isTraceEnabled() {
|
public boolean isTraceEnabled() {
|
||||||
return this.logger.isLoggable(java.util.logging.Level.FINEST);
|
return this.logger.isLoggable(java.util.logging.Level.FINEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void fatal(Object message) {
|
public void fatal(Object message) {
|
||||||
error(message);
|
error(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void fatal(Object message, Throwable exception) {
|
public void fatal(Object message, Throwable exception) {
|
||||||
error(message, exception);
|
error(message, exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void error(Object message) {
|
public void error(Object message) {
|
||||||
log(java.util.logging.Level.SEVERE, message, null);
|
log(java.util.logging.Level.SEVERE, message, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void error(Object message, Throwable exception) {
|
public void error(Object message, Throwable exception) {
|
||||||
log(java.util.logging.Level.SEVERE, message, exception);
|
log(java.util.logging.Level.SEVERE, message, exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void warn(Object message) {
|
public void warn(Object message) {
|
||||||
log(java.util.logging.Level.WARNING, message, null);
|
log(java.util.logging.Level.WARNING, message, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void warn(Object message, Throwable exception) {
|
public void warn(Object message, Throwable exception) {
|
||||||
log(java.util.logging.Level.WARNING, message, exception);
|
log(java.util.logging.Level.WARNING, message, exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void info(Object message) {
|
public void info(Object message) {
|
||||||
log(java.util.logging.Level.INFO, message, null);
|
log(java.util.logging.Level.INFO, message, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void info(Object message, Throwable exception) {
|
public void info(Object message, Throwable exception) {
|
||||||
log(java.util.logging.Level.INFO, message, exception);
|
log(java.util.logging.Level.INFO, message, exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void debug(Object message) {
|
public void debug(Object message) {
|
||||||
log(java.util.logging.Level.FINE, message, null);
|
log(java.util.logging.Level.FINE, message, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void debug(Object message, Throwable exception) {
|
public void debug(Object message, Throwable exception) {
|
||||||
log(java.util.logging.Level.FINE, message, exception);
|
log(java.util.logging.Level.FINE, message, exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void trace(Object message) {
|
public void trace(Object message) {
|
||||||
log(java.util.logging.Level.FINEST, message, null);
|
log(java.util.logging.Level.FINEST, message, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void trace(Object message, Throwable exception) {
|
public void trace(Object message, Throwable exception) {
|
||||||
log(java.util.logging.Level.FINEST, message, exception);
|
log(java.util.logging.Level.FINEST, message, exception);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user