23
23
import java .util .Date ;
24
24
import java .util .Map ;
25
25
26
+ import ch .qos .logback .classic .spi .CallerData ;
27
+ import ch .qos .logback .core .status .StatusChecker ;
26
28
import org .apache .log4j .MDC ;
27
29
import org .junit .After ;
28
30
import org .junit .Before ;
39
41
40
42
public class DBAppenderH2Test {
41
43
42
- LoggerContext lc ;
44
+ LoggerContext loggerContext = new LoggerContext (); ;
43
45
Logger logger ;
44
46
DBAppender appender ;
45
47
DriverManagerConnectionSource connectionSource ;
46
48
DBAppenderH2TestFixture dbAppenderH2TestFixture ;
47
49
int diff = RandomUtil .getPositiveInt ();
50
+ StatusChecker checker = new StatusChecker (loggerContext );
48
51
49
52
@ Before
50
53
public void setUp () throws SQLException {
51
54
dbAppenderH2TestFixture = new DBAppenderH2TestFixture ();
52
-
53
55
dbAppenderH2TestFixture .setUp ();
54
-
55
- lc = new LoggerContext ();
56
- lc .setName ("default" );
57
- logger = lc .getLogger ("root" );
56
+ loggerContext .setName ("default" );
57
+ logger = loggerContext .getLogger ("root" );
58
58
appender = new DBAppender ();
59
59
appender .setName ("DB" );
60
- appender .setContext (lc );
60
+ appender .setContext (loggerContext );
61
61
connectionSource = new DriverManagerConnectionSource ();
62
- connectionSource .setContext (lc );
62
+ connectionSource .setContext (loggerContext );
63
63
connectionSource .setDriverClass (DBAppenderH2TestFixture .H2_DRIVER_CLASS );
64
64
connectionSource .setUrl (dbAppenderH2TestFixture .url );
65
65
System .out .println ("cs.url=" + dbAppenderH2TestFixture .url );
@@ -75,7 +75,7 @@ public void setUp() throws SQLException {
75
75
@ After
76
76
public void tearDown () throws SQLException {
77
77
logger = null ;
78
- lc = null ;
78
+ loggerContext = null ;
79
79
appender = null ;
80
80
connectionSource = null ;
81
81
dbAppenderH2TestFixture .tearDown ();
@@ -87,7 +87,7 @@ public void testAppendLoggingEvent() throws SQLException {
87
87
88
88
appender .append (event );
89
89
90
- StatusPrinter .print (lc );
90
+ StatusPrinter .print (loggerContext );
91
91
92
92
Statement stmt = connectionSource .getConnection ().createStatement ();
93
93
ResultSet rs = null ;
@@ -150,14 +150,11 @@ public void withNullArgument() throws SQLException {
150
150
assertEquals (event .getTimeStamp (), rs .getLong (DBAppender .TIMESTMP_INDEX ));
151
151
assertEquals (event .getFormattedMessage (), rs .getString (DBAppender .FORMATTED_MESSAGE_INDEX ));
152
152
}
153
-
154
- StatusPrinter .print (lc );
155
-
156
153
}
157
154
158
155
@ Test
159
156
public void testContextInfo () throws SQLException {
160
- lc .putProperty ("testKey1" , "testValue1" );
157
+ loggerContext .putProperty ("testKey1" , "testValue1" );
161
158
MDC .put ("k" + diff , "v" + diff );
162
159
ILoggingEvent event = createLoggingEvent ();
163
160
@@ -200,14 +197,27 @@ public void testAppendMultipleEvents() throws SQLException {
200
197
stmt .close ();
201
198
}
202
199
200
+ // http://jira.qos.ch/browse/LOGBACK-805
201
+ @ Test
202
+ public void emptyCallerDataShouldBeHandledGracefully () {
203
+ LoggingEvent event = createLoggingEvent ();
204
+ event .setCallerData (new StackTraceElement [0 ]);
205
+ appender .append (event );
206
+
207
+ event .setCallerData (new StackTraceElement [] {null });
208
+ appender .append (event );
209
+
210
+ checker .assertIsErrorFree ();
211
+ }
212
+
203
213
204
- private ILoggingEvent createLoggingEvent (String msg , Object [] args ) {
214
+ private LoggingEvent createLoggingEvent (String msg , Object [] args ) {
205
215
return new LoggingEvent (this .getClass ().getName (), logger ,
206
216
Level .DEBUG , msg , new Exception ("test Ex" ), args );
207
217
}
208
218
209
219
210
- private ILoggingEvent createLoggingEvent () {
220
+ private LoggingEvent createLoggingEvent () {
211
221
return createLoggingEvent ("test message" , new Integer []{diff });
212
222
}
213
223
0 commit comments