summaryrefslogtreecommitdiff
path: root/src/main/patch/houston/future.patch
blob: 2ac592276b85020e7bb5a0b2a8d6582d180e09d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

  Some patches that maybe will become relevant in future. For example bcause a
  PR is no yet merged or similar.


--- /dev/null
+++ b/houston-process/src/main/java/net/bull/javamelody/internal/common/Log4J2Logger.java
@@ -22,1 +22,1 @@
         if (!iLoaders.hasNext()) throw new IllegalStateException("Too few logger impls");
         SLF4JServiceProvider loggerProvider = iLoaders.next();
-        if (iLoaders.hasNext()) throw new IllegalStateException("Too many logger impls");
+        if (!(loggerProvider instanceof org.slf4j.simple.SimpleServiceProvider) && iLoaders.hasNext()) throw new IllegalStateException("Too many logger impls");
         loggerProvider.initialize();
         ILoggerFactory loggerFactory = loggerProvider.getLoggerFactory();


--- /dev/null
+++ b/houston-process/src/main/java/ch/post/it/paisa/houston/process/main/BadLoggerImplKiller.java
@@ -0,0 +1,26 @@
+package ch.post.it.paisa.houston.process.main;
+
+import org.slf4j.spi.SLF4JServiceProvider;
+
+import java.util.ServiceLoader;
+
+
+public class BadLoggerImplKiller {
+
+    public static void assertExactlyOneLoggerImplPresent(){
+        Class<?> log4jProviderClz, simpleProviderClz;
+        try {
+            log4jProviderClz = Class.forName("org.apache.logging.slf4j.SLF4JServiceProvider");
+            simpleProviderClz = Class.forName("org.slf4j.simple.SimpleServiceProvider");
+        }catch( ClassNotFoundException ex ){
+            throw new RuntimeException(ex);
+        }
+        for( SLF4JServiceProvider provider : ServiceLoader.load(SLF4JServiceProvider.class) ){
+            Class<?> providerClass = provider.getClass();
+            if( log4jProviderClz.isAssignableFrom(providerClass) ) continue;
+            if( simpleProviderClz.isAssignableFrom(providerClass) ) continue;
+            throw new IllegalStateException("Go away with this ugly logger: "+ providerClass.getName());
+        }
+    }
+
+}