1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.codelibs.fess.util;
17
18 import java.util.Arrays;
19
20 import org.apache.logging.log4j.Level;
21 import org.apache.logging.log4j.core.Core;
22 import org.apache.logging.log4j.core.LogEvent;
23 import org.apache.logging.log4j.core.appender.rewrite.RewritePolicy;
24 import org.apache.logging.log4j.core.config.plugins.Plugin;
25 import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
26 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
27 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
28
29
30
31
32
33
34 @Plugin(name = "ErrorToWarnRewritePolicy", category = Core.CATEGORY_NAME, elementType = "rewritePolicy", printObject = true)
35 public class ErrorToWarnRewritePolicy implements RewritePolicy {
36
37
38 private final String[] loggerNames;
39
40
41
42
43
44
45 public ErrorToWarnRewritePolicy(final String[] loggerNames) {
46 this.loggerNames = loggerNames;
47 }
48
49
50
51
52
53
54
55 @Override
56 public LogEvent rewrite(final LogEvent event) {
57 final String loggerName = event.getLoggerName();
58 if (loggerName == null) {
59 return event;
60 }
61 for (final String name : loggerNames) {
62 if (loggerName.startsWith(name)) {
63 final Level sourceLevel = event.getLevel();
64 if (sourceLevel != Level.ERROR) {
65 return event;
66 }
67 return new Log4jLogEvent.Builder(event).setLevel(Level.WARN).build();
68 }
69 }
70 return event;
71 }
72
73
74
75
76
77
78
79 @PluginFactory
80 public static ErrorToWarnRewritePolicy createPolicy(@PluginAttribute("loggers") final String loggerNamePrefix) {
81 final String[] loggerNames = loggerNamePrefix != null
82 ? Arrays.stream(loggerNamePrefix.split(",")).map(String::trim).filter(s -> s.length() > 0).toArray(n -> new String[n])
83 : new String[0];
84 return new ErrorToWarnRewritePolicy(loggerNames);
85 }
86
87 }