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());
+ }
+ }
+
+}
|