1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.spring.boot;
18
19 import java.util.concurrent.locks.Lock;
20 import java.util.concurrent.locks.ReentrantLock;
21
22 import org.apache.logging.log4j.LogManager;
23 import org.apache.logging.log4j.internal.LogManagerStatus;
24 import org.springframework.core.env.Environment;
25
26
27
28
29 public class SpringEnvironmentHolder {
30
31 private volatile Environment environment;
32 private Lock lock = new ReentrantLock();
33
34
35 protected Environment getEnvironment() {
36 if (environment == null && LogManagerStatus.isInitialized() && LogManager.getFactory() != null &&
37 LogManager.getFactory().hasContext(SpringEnvironmentHolder.class.getName(), null, false)) {
38 lock.lock();
39 try {
40 if (environment == null) {
41 Object obj = LogManager.getContext(false).getObject(Log4j2CloudConfigLoggingSystem.ENVIRONMENT_KEY);
42 environment = obj instanceof Environment ? (Environment) obj : null;
43 }
44 } finally {
45 lock.unlock();
46 }
47 }
48 return environment;
49 }
50 }