Skip to content

Commit

Permalink
Log4jLog re-resolves ExtendedLogger on deserialization
Browse files Browse the repository at this point in the history
This is necessary for compatibility with Log4J 2.21, analogous to the existing re-resolution in Spring's SLF4J adapter.

Closes gh-31582

(cherry picked from commit 1e78cc3)
  • Loading branch information
jhoeller committed Nov 9, 2023
1 parent f8e1ce3 commit f97e819
Showing 1 changed file with 9 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2002-2021 the original author or authors.
* Copyright 2002-2023 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -154,9 +154,12 @@ private static class Log4jLog implements Log, Serializable {
private static final LoggerContext loggerContext =
LogManager.getContext(Log4jLog.class.getClassLoader(), false);

private final ExtendedLogger logger;
private final String name;

private final transient ExtendedLogger logger;

public Log4jLog(String name) {
this.name = name;
LoggerContext context = loggerContext;
if (context == null) {
// Circular call in early-init scenario -> static field not initialized yet
Expand Down Expand Up @@ -270,6 +273,10 @@ private void log(Level level, Object message, Throwable exception) {
this.logger.logIfEnabled(FQCN, level, null, message, exception);
}
}

protected Object readResolve() {
return new Log4jLog(this.name);
}
}


Expand Down

0 comments on commit f97e819

Please sign in to comment.