1 package org.springframework.roo.support.logging;
2
3 import java.util.ArrayList;
4 import java.util.List;
5 import java.util.logging.ConsoleHandler;
6 import java.util.logging.Formatter;
7 import java.util.logging.Handler;
8 import java.util.logging.Level;
9 import java.util.logging.LogRecord;
10 import java.util.logging.Logger;
11
12 import org.springframework.roo.support.util.Assert;
13
14
15
16
17
18
19
20
21 public abstract class HandlerUtils {
22
23
24
25
26
27
28
29
30
31
32 public static final Logger getLogger(Class<?> clazz) {
33 Assert.notNull(clazz, "Class required");
34 Logger logger = Logger.getLogger(clazz.getName());
35 if (logger.getLevel() == null && clazz.getName().startsWith("org.springframework.roo")) {
36 logger.setLevel(Level.FINE);
37 }
38 return logger;
39 }
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 public static final int wrapWithDeferredLogHandler(Logger logger, Level fallbackSeverity) {
56 Assert.notNull(logger, "Logger is required");
57 Assert.notNull(fallbackSeverity, "Fallback severity is required");
58
59 List<DeferredLogHandler> newHandlers = new ArrayList<DeferredLogHandler>();
60
61
62 Handler[] handlers = logger.getHandlers();
63 if (handlers != null && handlers.length > 0) {
64 for (Handler h : handlers) {
65 logger.removeHandler(h);
66 newHandlers.add(new DeferredLogHandler(h, fallbackSeverity));
67 }
68 }
69
70
71 if (newHandlers.size() == 0) {
72 ConsoleHandler consoleHandler = new ConsoleHandler();
73 consoleHandler.setFormatter(new Formatter() {
74 public String format(LogRecord record) {
75 return record.getMessage() + System.getProperty("line.separator");
76 }
77 });
78 newHandlers.add(new DeferredLogHandler(consoleHandler, fallbackSeverity));
79 }
80
81
82 for (DeferredLogHandler h : newHandlers) {
83 logger.addHandler(h);
84 }
85
86 return newHandlers.size();
87 }
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107 public static final int registerTargetHandler(Logger logger, Handler target) {
108 Assert.notNull(logger, "Logger is required");
109 Assert.notNull(target, "Target handler is required");
110
111 int replaced = 0;
112
113 Handler[] handlers = logger.getHandlers();
114 if (handlers != null && handlers.length > 0) {
115 for (Handler h : handlers) {
116 if (h instanceof DeferredLogHandler) {
117 replaced++;
118 DeferredLogHandler defLogger = (DeferredLogHandler) h;
119 defLogger.setTargetHandler(target);
120 }
121 }
122 }
123
124 return replaced;
125 }
126
127
128
129
130
131
132
133 public static final int flushAllHandlers(Logger logger) {
134 Assert.notNull(logger, "Logger is required");
135
136 int flushed = 0;
137
138 Handler[] handlers = logger.getHandlers();
139 if (handlers != null && handlers.length > 0) {
140 for (Handler h : handlers) {
141 flushed++;
142 h.flush();
143 }
144 }
145
146 return flushed;
147 }
148 }