-
Notifications
You must be signed in to change notification settings - Fork 32
Expand file tree
/
Copy pathLogLevelGuard.java
More file actions
39 lines (32 loc) · 967 Bytes
/
LogLevelGuard.java
File metadata and controls
39 lines (32 loc) · 967 Bytes
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
package org.jlab.logging;
import java.util.List;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Kluge around certain upstream function calls that alter log levels against our will.
* @author dilks
*/
public class LogLevelGuard {
private final List<String> loggerNames;
private final Map<String, Level> savedLevels = new HashMap<>();
/**
* constructor
* @param loggerNames the names of the Loggers to guard
*/
public LogLevelGuard(String... loggerNames) {
this.loggerNames = List.of(loggerNames);
}
/** save the log levels */
public void save() {
for(var name : loggerNames)
savedLevels.put(name, Logger.getLogger(name).getLevel());
}
/** restore the log levels */
public void restore() {
for(var entry : savedLevels.entrySet())
if(entry.getValue() != null)
Logger.getLogger(entry.getKey()).setLevel(entry.getValue());
}
}