forked from strongback/strongback-java
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSystemLogger.java
113 lines (98 loc) · 3.29 KB
/
SystemLogger.java
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/*
* Strongback
* Copyright 2015, Strongback and individual contributors by the @authors tag.
* See the COPYRIGHT.txt in the distribution for a full listing of individual
* contributors.
*
* Licensed under the MIT License; you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://opensource.org/licenses/MIT
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.strongback;
import org.strongback.annotation.ThreadSafe;
/**
* A {@link Logger} implementation that sends messages to {@link System#out} and {@link System#err}.
*
* @author Randall Hauch
*/
@ThreadSafe
final class SystemLogger implements Logger {
private static final int OFF = 0;
private static final int ERROR = 2 << 0;
private static final int WARN = 2 << 1;
private static final int INFO = 2 << 2;
private static final int DEBUG = 2 << 3;
private static final int TRACE = 2 << 4;
private volatile int level = INFO | WARN | ERROR;
@Override
public void error(Throwable t) {
if ((level & ERROR) == ERROR) t.printStackTrace();
}
@Override
public void error(String message) {
if ((level & ERROR) == ERROR) message("ERROR", message);
}
@Override
public void error(Throwable t, String message) {
if ((level & ERROR) == ERROR) {
message("ERROR", message);
t.printStackTrace();
}
}
@Override
public void warn(String message) {
if ((level & WARN) == WARN) message("WARN", message);
}
@Override
public void info(String message) {
if ((level & INFO) == INFO) message("INFO", message);
}
@Override
public void debug(String message) {
if ((level & DEBUG) == DEBUG) message("DEBUG", message);
}
@Override
public void trace(String message) {
if ((level & TRACE) == TRACE) message("TRACE", message);
}
private void message(String level, String message) {
System.out.println(level + " " + message);
}
public SystemLogger enable(Level level) {
switch (level) {
case TRACE:
this.level = TRACE | DEBUG | INFO | WARN | ERROR;
break;
case DEBUG:
this.level = DEBUG | INFO | WARN | ERROR;
break;
case INFO:
this.level = INFO | WARN | ERROR;
break;
case WARN:
this.level = WARN | ERROR;
break;
case ERROR:
this.level = ERROR;
break;
case OFF:
this.level = OFF;
break;
}
return this;
}
@Override
public String toString() {
if ((this.level & TRACE) == TRACE) return "TRACE";
if ((this.level & DEBUG) == DEBUG) return "DEBUG";
if ((this.level & INFO) == INFO) return "INFO";
if ((this.level & WARN) == WARN) return "WARN";
if ((this.level & ERROR) == ERROR) return "ERROR";
return "OFF";
}
}