Skip to content

Commit abc2269

Browse files
committed
Use local LoggerContext in Log4jLog when static field not initialized yet
Closes gh-24440
1 parent ff385aa commit abc2269

File tree

1 file changed

+43
-2
lines changed

1 file changed

+43
-2
lines changed

spring-jcl/src/main/java/org/apache/commons/logging/LogAdapter.java

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2018 the original author or authors.
2+
* Copyright 2002-2020 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -157,7 +157,12 @@ private static class Log4jLog implements Log, Serializable {
157157
private final ExtendedLogger logger;
158158

159159
public Log4jLog(String name) {
160-
this.logger = loggerContext.getLogger(name);
160+
LoggerContext context = loggerContext;
161+
if (context == null) {
162+
// Circular call in early-init scenario -> static field not initialized yet
163+
context = LogManager.getContext(Log4jLog.class.getClassLoader(), false);
164+
}
165+
this.logger = context.getLogger(name);
161166
}
162167

163168
@Override
@@ -280,92 +285,110 @@ public Slf4jLog(T logger) {
280285
this.logger = logger;
281286
}
282287

288+
@Override
283289
public boolean isFatalEnabled() {
284290
return isErrorEnabled();
285291
}
286292

293+
@Override
287294
public boolean isErrorEnabled() {
288295
return this.logger.isErrorEnabled();
289296
}
290297

298+
@Override
291299
public boolean isWarnEnabled() {
292300
return this.logger.isWarnEnabled();
293301
}
294302

303+
@Override
295304
public boolean isInfoEnabled() {
296305
return this.logger.isInfoEnabled();
297306
}
298307

308+
@Override
299309
public boolean isDebugEnabled() {
300310
return this.logger.isDebugEnabled();
301311
}
302312

313+
@Override
303314
public boolean isTraceEnabled() {
304315
return this.logger.isTraceEnabled();
305316
}
306317

318+
@Override
307319
public void fatal(Object message) {
308320
error(message);
309321
}
310322

323+
@Override
311324
public void fatal(Object message, Throwable exception) {
312325
error(message, exception);
313326
}
314327

328+
@Override
315329
public void error(Object message) {
316330
if (message instanceof String || this.logger.isErrorEnabled()) {
317331
this.logger.error(String.valueOf(message));
318332
}
319333
}
320334

335+
@Override
321336
public void error(Object message, Throwable exception) {
322337
if (message instanceof String || this.logger.isErrorEnabled()) {
323338
this.logger.error(String.valueOf(message), exception);
324339
}
325340
}
326341

342+
@Override
327343
public void warn(Object message) {
328344
if (message instanceof String || this.logger.isWarnEnabled()) {
329345
this.logger.warn(String.valueOf(message));
330346
}
331347
}
332348

349+
@Override
333350
public void warn(Object message, Throwable exception) {
334351
if (message instanceof String || this.logger.isWarnEnabled()) {
335352
this.logger.warn(String.valueOf(message), exception);
336353
}
337354
}
338355

356+
@Override
339357
public void info(Object message) {
340358
if (message instanceof String || this.logger.isInfoEnabled()) {
341359
this.logger.info(String.valueOf(message));
342360
}
343361
}
344362

363+
@Override
345364
public void info(Object message, Throwable exception) {
346365
if (message instanceof String || this.logger.isInfoEnabled()) {
347366
this.logger.info(String.valueOf(message), exception);
348367
}
349368
}
350369

370+
@Override
351371
public void debug(Object message) {
352372
if (message instanceof String || this.logger.isDebugEnabled()) {
353373
this.logger.debug(String.valueOf(message));
354374
}
355375
}
356376

377+
@Override
357378
public void debug(Object message, Throwable exception) {
358379
if (message instanceof String || this.logger.isDebugEnabled()) {
359380
this.logger.debug(String.valueOf(message), exception);
360381
}
361382
}
362383

384+
@Override
363385
public void trace(Object message) {
364386
if (message instanceof String || this.logger.isTraceEnabled()) {
365387
this.logger.trace(String.valueOf(message));
366388
}
367389
}
368390

391+
@Override
369392
public void trace(Object message, Throwable exception) {
370393
if (message instanceof String || this.logger.isTraceEnabled()) {
371394
this.logger.trace(String.valueOf(message), exception);
@@ -486,74 +509,92 @@ public JavaUtilLog(String name) {
486509
this.logger = java.util.logging.Logger.getLogger(name);
487510
}
488511

512+
@Override
489513
public boolean isFatalEnabled() {
490514
return isErrorEnabled();
491515
}
492516

517+
@Override
493518
public boolean isErrorEnabled() {
494519
return this.logger.isLoggable(java.util.logging.Level.SEVERE);
495520
}
496521

522+
@Override
497523
public boolean isWarnEnabled() {
498524
return this.logger.isLoggable(java.util.logging.Level.WARNING);
499525
}
500526

527+
@Override
501528
public boolean isInfoEnabled() {
502529
return this.logger.isLoggable(java.util.logging.Level.INFO);
503530
}
504531

532+
@Override
505533
public boolean isDebugEnabled() {
506534
return this.logger.isLoggable(java.util.logging.Level.FINE);
507535
}
508536

537+
@Override
509538
public boolean isTraceEnabled() {
510539
return this.logger.isLoggable(java.util.logging.Level.FINEST);
511540
}
512541

542+
@Override
513543
public void fatal(Object message) {
514544
error(message);
515545
}
516546

547+
@Override
517548
public void fatal(Object message, Throwable exception) {
518549
error(message, exception);
519550
}
520551

552+
@Override
521553
public void error(Object message) {
522554
log(java.util.logging.Level.SEVERE, message, null);
523555
}
524556

557+
@Override
525558
public void error(Object message, Throwable exception) {
526559
log(java.util.logging.Level.SEVERE, message, exception);
527560
}
528561

562+
@Override
529563
public void warn(Object message) {
530564
log(java.util.logging.Level.WARNING, message, null);
531565
}
532566

567+
@Override
533568
public void warn(Object message, Throwable exception) {
534569
log(java.util.logging.Level.WARNING, message, exception);
535570
}
536571

572+
@Override
537573
public void info(Object message) {
538574
log(java.util.logging.Level.INFO, message, null);
539575
}
540576

577+
@Override
541578
public void info(Object message, Throwable exception) {
542579
log(java.util.logging.Level.INFO, message, exception);
543580
}
544581

582+
@Override
545583
public void debug(Object message) {
546584
log(java.util.logging.Level.FINE, message, null);
547585
}
548586

587+
@Override
549588
public void debug(Object message, Throwable exception) {
550589
log(java.util.logging.Level.FINE, message, exception);
551590
}
552591

592+
@Override
553593
public void trace(Object message) {
554594
log(java.util.logging.Level.FINEST, message, null);
555595
}
556596

597+
@Override
557598
public void trace(Object message, Throwable exception) {
558599
log(java.util.logging.Level.FINEST, message, exception);
559600
}

0 commit comments

Comments
 (0)