1
1
package oracle .weblogic .deploy .logging ;
2
2
3
- import java .util .ArrayList ;
4
- import java .util .List ;
5
- import java .util .Properties ;
3
+ import java .text .MessageFormat ;
4
+ import java .util .*;
6
5
import java .util .logging .*;
6
+ import java .util .logging .Formatter ;
7
7
8
8
9
9
public class SummaryHandler extends MemoryHandler implements WLSDeployLogEndHandler {
10
10
private static final String CLASS = SummaryHandler .class .getName ();
11
- private static final PlatformLogger LOGGER = WLSDeployLogFactory .getLogger ("wlsdeploy" );
12
11
private static final String LEVEL_PROPERTY = "level" ;
13
12
private static final String TARGET_PROPERTY = "target" ;
13
+ private static final String FORMATTER_PROPERTY = "formatter" ;
14
14
private static final String SIZE_PROPERTY = "size" ;
15
15
private static final int DEFAULT_SIZE = 3000 ;
16
+ private static final String LINE_SEPARATION = System .lineSeparator ();
16
17
18
+ private PlatformLogger LOGGER = WLSDeployLogFactory .getLogger ("wlsdeploy.exit" );
17
19
private boolean online = false ;
18
20
private int bufferSize ;
19
21
20
- private LevelHandler infoMemoryHandler = new NoActionHandler (Level .INFO );
21
- private LevelHandler warnMemoryHandler = new NoActionHandler (Level .WARNING );
22
- private LevelHandler errMemoryHandler = new NoActionHandler (Level .SEVERE );
23
- private LevelHandler [] handlers = {infoMemoryHandler , warnMemoryHandler , errMemoryHandler };
22
+ private Handler target ;
23
+ private List <LevelHandler > handlers = new ArrayList <>();
24
24
private boolean closed = false ;
25
25
26
26
public SummaryHandler () {
27
27
super ();
28
28
configure ();
29
- infoMemoryHandler = getLevelHandler (Level .INFO );
30
- infoMemoryHandler = getLevelHandler (Level .WARNING );
31
- infoMemoryHandler = getLevelHandler (Level .SEVERE );
29
+ target = getConsoleHandler ();
30
+ LOGGER .setLevel (Level .INFO );
31
+ addLevelHandler (Level .INFO );
32
+ addLevelHandler (Level .WARNING );
33
+ addLevelHandler (Level .SEVERE );
34
+ System .out .println ("*** summary handler" );
32
35
}
33
36
34
37
@ Override
35
38
public synchronized void publish (LogRecord record ) {
36
39
// after close, take yourself out of the mix. The stored up log messages are going to go to the
37
40
// console handler anyway
38
41
if (!closed ) {
39
- infoMemoryHandler . publish ( record );
40
- warnMemoryHandler .publish (record );
41
- errMemoryHandler . publish ( record );
42
+ for ( Handler handler : handlers ) {
43
+ handler .publish (record );
44
+ }
42
45
}
43
46
}
44
47
45
48
@ Override
46
49
public synchronized void push () {
50
+ System .out .println ("i am in push " );
47
51
String METHOD = "push" ;
48
52
LOGGER .entering (CLASS , METHOD );
49
53
closed = true ;
50
- List <Integer > counts = new ArrayList <>();
54
+ setPushLevel (getLevel ());
55
+ StringBuffer buffer = new StringBuffer ();
56
+ java .util .Formatter fmt = new java .util .Formatter (buffer );
51
57
for (LevelHandler handler : handlers ) {
52
58
int count = handler .pushSection ();
59
+ super .push ();
53
60
if (count >= 0 ) {
54
- counts . add ( count );
61
+ fmt . format ( " %1$s : %2$,5d" , handler . getLevel (). getName (), count );
55
62
}
56
63
}
57
- int size = counts .size ();
58
- String msgNbr = "WLSDPLY-21004" ;
59
- if (size == 2 ) {
60
- msgNbr = "WLSDPLY-21003" ;
61
- } else if (size == 3 ) {
62
- msgNbr = "WLSDPLY-21002" ;
63
- }
64
- // got to fix this as this isn't allowed ? check to see if it resolves the msg nbr. Is this going to be 1 arg?
65
- LOGGER .log (Level .ALL , msgNbr , (Object [])counts .toArray (new Object [size ]));
66
- LOGGER .exiting (CLASS , METHOD );
64
+
65
+ System .out .println (LINE_SEPARATION );
66
+ target .publish (getLogRecord ("WLSDPLY-21002" , buffer ));
67
67
}
68
68
69
69
@ Override
@@ -93,48 +93,41 @@ public void logEnd(boolean online) {
93
93
/**
94
94
* The WLSDeployLoggingConfig will call this method to add to the logging.properties files.
95
95
* If the logging.properties already contains the property, the property in this list will be ignored.
96
+ *
96
97
* @return properties to set in logging.properties
97
98
*/
98
99
public static Properties getHandlerProperties () {
99
- String METHOD = "getHandlerProperties" ;
100
- LOGGER .entering (CLASS , METHOD );
101
100
Properties properties = new Properties ();
102
101
properties .setProperty (LEVEL_PROPERTY , Level .INFO .getName ());
103
102
properties .setProperty (TARGET_PROPERTY , WLSDeployLoggingConsoleHandler .class .getName ());
104
- LOGGER . exiting ( CLASS , METHOD , properties );
103
+ properties . setProperty ( FORMATTER_PROPERTY , SummaryFormatter . class . getName () );
105
104
return properties ;
106
105
}
107
106
108
- private class SummaryFormatter extends Formatter {
107
+ public class SummaryFormatter extends Formatter {
109
108
public synchronized String format (LogRecord logRecord ) {
110
109
// for now, only format the message in summary - maybe add logger name or other later
111
110
return formatMessage (logRecord );
112
111
}
113
112
}
114
113
115
- private LevelHandler getLevelHandler (Level compareTo ) {
116
- LevelHandler handler ;
117
- if (getLevel ().intValue () <= compareTo .intValue ()) {
118
- handler = new LevelHandler (this , bufferSize , Level .ALL );
119
- setLevel (compareTo );
120
- setFilter (getFilter ());
121
- setFormatter (new SummaryFormatter ());
122
- } else {
123
- handler = new NoActionHandler (compareTo );
114
+ private void addLevelHandler (Level level ) {
115
+ LevelHandler handler = null ;
116
+ if (getLevel ().intValue () <= level .intValue ()) {
117
+ handler = new LevelHandler (target , bufferSize , level );
118
+ handler .setLevel (level );
119
+ handler .setFilter (getFilter ());
120
+ //handler.setFormatter(new SummaryFormatter());
121
+ handlers .add (handler );
124
122
}
125
- return handler ;
126
123
}
127
124
128
125
private class LevelHandler extends MemoryHandler {
129
126
130
127
private int totalRecords ;
131
128
132
129
LevelHandler (Handler handler , int size , Level level ) {
133
- super (handler , size , Level .ALL );
134
- setLevel (level );
135
- }
136
-
137
- LevelHandler (Level level ) {
130
+ super (handler , size , Level .OFF );
138
131
setLevel (level );
139
132
}
140
133
@@ -146,7 +139,7 @@ public synchronized void publish(LogRecord record) {
146
139
}
147
140
}
148
141
149
- public int pushSection () {
142
+ public synchronized int pushSection () {
150
143
if (isOnline ()) {
151
144
logStart ();
152
145
super .push ();
@@ -160,18 +153,23 @@ int getTotalRecords() {
160
153
}
161
154
162
155
void logStart () {
163
- LOGGER .log (Level .ALL , "WLSDPLY-2100" , getLevel ().getName ());
156
+ if (getTotalRecords () > 0 ) {
157
+ System .out .println (LINE_SEPARATION );
158
+ target .publish (getLogRecord ("WLSDPLY-21000" , getLevel ().getName ()));
159
+ System .out .println (LINE_SEPARATION );
160
+ }
164
161
}
165
162
166
163
void logEnd () {
167
- LOGGER .log (Level .ALL , "WLSDPLY-2101" , getLevel ().getName (), getTotalRecords ());
164
+ System .out .println (LINE_SEPARATION );
165
+ target .publish (getLogRecord ("WLSDPLY-21001" , getLevel ().getName (), getTotalRecords ()));
168
166
}
169
167
}
170
168
171
169
private class NoActionHandler extends LevelHandler {
172
170
173
- NoActionHandler (Level level ) {
174
- super (level );
171
+ NoActionHandler (Handler handler , int size , Level level ) {
172
+ super (handler , size , level );
175
173
}
176
174
177
175
@@ -233,4 +231,27 @@ private int getSize(String propSize) {
233
231
return handlerSize ;
234
232
}
235
233
234
+ private ConsoleHandler getConsoleHandler () {
235
+ ConsoleHandler handler = null ;
236
+ try {
237
+ handler = (ConsoleHandler ) Class .forName (WLSDeployLoggingConfig .getConsoleHandler ()).newInstance ();
238
+ } catch (ClassNotFoundException | IllegalAccessException cne ) {
239
+ System .out .println ("Class not found " + WLSDeployLoggingConfig .getConsoleHandler ());
240
+ } catch (InstantiationException ie ) {
241
+ handler = new ConsoleHandler ();
242
+ }
243
+ return handler ;
244
+ }
245
+
246
+ private LogRecord getLogRecord (String msg , Object ... params ) {
247
+ LogRecord record = new LogRecord (Level .INFO , msg );
248
+ record .setLoggerName (LOGGER .getName ());
249
+ if (params != null && params .length != 0 ) {
250
+ record .setParameters (params );
251
+ }
252
+ record .setSourceClassName (CLASS );
253
+ record .setSourceMethodName ("" );
254
+ record .setResourceBundle (LOGGER .getUnderlyingLogger ().getResourceBundle ());
255
+ return record ;
256
+ }
236
257
}
0 commit comments