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 package org.spf4j.log;
33
34 import java.util.EnumMap;
35 import java.util.Map;
36 import org.spf4j.base.avro.LogLevel;
37
38
39
40
41
42
43 public enum Level {
44 TRACE(java.util.logging.Level.FINEST),
45 DEBUG(java.util.logging.Level.FINE),
46 INFO(java.util.logging.Level.INFO),
47 WARN(java.util.logging.Level.WARNING),
48 ERROR(java.util.logging.Level.SEVERE),
49 OFF(java.util.logging.Level.OFF);
50
51
52 static final class Lazy {
53 private static final Map<Level, LogLevel> CONVERT_MAP = new EnumMap<>(Level.class);
54 static {
55 CONVERT_MAP.put(TRACE, LogLevel.TRACE);
56 CONVERT_MAP.put(DEBUG, LogLevel.DEBUG);
57 CONVERT_MAP.put(INFO, LogLevel.INFO);
58 CONVERT_MAP.put(WARN, LogLevel.WARN);
59 CONVERT_MAP.put(ERROR, LogLevel.ERROR);
60 CONVERT_MAP.put(OFF, LogLevel.UNKNOWN);
61 }
62 }
63
64 private final java.util.logging.Level julLevel;
65
66 Level(final java.util.logging.Level julLevel) {
67 this.julLevel = julLevel;
68 }
69
70 public int getIntValue() {
71 return julLevel.intValue();
72 }
73
74 public java.util.logging.Level getJulLevel() {
75 return julLevel;
76 }
77
78 public LogLevel getAvroLevel() {
79 return Lazy.CONVERT_MAP.get(this);
80 }
81
82 public static Level fromAvroLevel(final LogLevel level) {
83 switch (level) {
84 case UNKNOWN:
85 case DEBUG:
86 return Level.DEBUG;
87 case ERROR:
88 return Level.ERROR;
89 case INFO:
90 return Level.INFO;
91 case TRACE:
92 return Level.TRACE;
93 case WARN:
94 return Level.WARN;
95 default:
96 throw new IllegalArgumentException("Unsupported LogLevel " + level);
97 }
98 }
99
100
101 public static Level fromJulLevel(final int severity) {
102 if (severity <= TRACE.getIntValue()) {
103 return TRACE;
104 } else if (severity <= DEBUG.getIntValue()) {
105 return DEBUG;
106 } else if (severity <= INFO.getIntValue()) {
107 return INFO;
108 } else if (severity <= WARN.getIntValue()) {
109 return WARN;
110 } else if (severity <= ERROR.getIntValue()) {
111 return ERROR;
112 } else {
113 return OFF;
114 }
115 }
116
117 }
118