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 package org.ogf.graap.wsag.wsrf.bootstrap;
36
37 import java.text.MessageFormat;
38 import java.util.logging.Handler;
39 import java.util.logging.Level;
40 import java.util.logging.LogRecord;
41
42 import org.apache.log4j.Logger;
43 import org.apache.log4j.Priority;
44
45
46
47
48
49
50
51 public class WSAG4JMuseLog4jHandler extends Handler
52 {
53
54 private static final int OFF = Level.OFF.intValue();
55
56 private static final int SEVERE = Level.SEVERE.intValue();
57
58 private static final int WARNING = Level.WARNING.intValue();
59
60 private static final int INFO = Level.INFO.intValue();
61
62 private static final int CONFIG = Level.CONFIG.intValue();
63
64 private static final int FINE = Level.FINE.intValue();
65
66 private static final int FINER = Level.FINER.intValue();
67
68 private static final int FINEST = Level.FINEST.intValue();
69
70 private static final int ALL = Level.ALL.intValue();
71
72
73
74
75 public void publish( LogRecord record )
76 {
77 org.apache.log4j.Logger log4j = getLog4JLogger( record.getLoggerName() );
78 Priority priority = toLog4jLogLevel( record.getLevel() );
79 log4j.log( priority, toLog4jMessage( record ), record.getThrown() );
80 }
81
82 static Logger getLog4JLogger( String loggerName )
83 {
84 return Logger.getLogger( loggerName );
85 }
86
87
88
89
90
91
92
93
94
95 public static Logger getLogger( Class<?> clazz )
96 {
97 return getLog4JLogger( clazz.getName() );
98 }
99
100 private String toLog4jMessage( LogRecord record )
101 {
102 String message = record.getMessage();
103
104
105 try
106 {
107 Object parameters[] = record.getParameters();
108 if ( parameters != null && parameters.length != 0 )
109 {
110 message = MessageFormat.format( message, parameters );
111 }
112 }
113 catch ( Exception ex )
114 {
115
116 message = MessageFormat.format( "{0}\n{1}", new Object[] { message, ex.getMessage() } );
117 }
118
119 return message;
120 }
121
122 private org.apache.log4j.Level toLog4jLogLevel( Level level )
123 {
124
125 if ( level.intValue() == ALL )
126 {
127 return org.apache.log4j.Level.ALL;
128 }
129 if ( level.intValue() <= FINEST )
130 {
131 return org.apache.log4j.Level.TRACE;
132 }
133 if ( level.intValue() <= FINER )
134 {
135 return org.apache.log4j.Level.TRACE;
136 }
137 if ( level.intValue() <= FINE )
138 {
139 return org.apache.log4j.Level.TRACE;
140 }
141 if ( level.intValue() <= CONFIG )
142 {
143 return org.apache.log4j.Level.INFO;
144 }
145 if ( level.intValue() <= INFO )
146 {
147 return org.apache.log4j.Level.INFO;
148 }
149 if ( level.intValue() <= WARNING )
150 {
151 return org.apache.log4j.Level.WARN;
152 }
153 if ( level.intValue() <= SEVERE )
154 {
155 return org.apache.log4j.Level.ERROR;
156 }
157 if ( level.intValue() == OFF )
158 {
159 return org.apache.log4j.Level.OFF;
160 }
161 return org.apache.log4j.Level.OFF;
162 }
163
164 @Override
165 public void flush()
166 {
167
168 }
169
170 @Override
171 public void close()
172 {
173
174 }
175
176 }