1
2
3
4 package net.sourceforge.pmd.util.log;
5
6 import java.util.logging.Handler;
7 import java.util.logging.Level;
8 import java.util.logging.Logger;
9
10
11
12
13
14
15
16 public class ScopedLogHandlersManager {
17
18 private static final String PACKAGE_NAME = "net.sourceforge.pmd";
19
20 @SuppressWarnings("PMD.LoggerIsNotStaticFinal")
21 private Logger logger;
22 private Level oldLogLevel;
23 private Handler[] oldHandlers;
24 private Handler[] newHandlers;
25
26 public ScopedLogHandlersManager(Level level, Handler... handlers) {
27 newHandlers = handlers;
28 logger = Logger.getLogger(PACKAGE_NAME);
29 oldHandlers = logger.getHandlers();
30 oldLogLevel = logger.getLevel();
31 logger.setLevel(level);
32
33 for (Handler handler : oldHandlers) {
34 logger.removeHandler(handler);
35 }
36 for (Handler handler : newHandlers) {
37 logger.addHandler(handler);
38 }
39 }
40
41 public void close() {
42 for (Handler handler : newHandlers) {
43 logger.removeHandler(handler);
44 }
45 for (Handler handler : oldHandlers) {
46 logger.addHandler(handler);
47 }
48 logger.setLevel(oldLogLevel);
49 }
50 }