4747import com .fasterxml .jackson .core .JsonProcessingException ;
4848import org .apache .logging .log4j .LogManager ;
4949import org .apache .logging .log4j .Logger ;
50+ import org .apache .logging .log4j .ThreadContext ;
5051import org .apache .logging .log4j .junit .LoggerContextRule ;
5152import org .apache .logging .log4j .test .appender .ListAppender ;
5253import org .jruby .RubyHash ;
5354import org .jruby .runtime .builtin .IRubyObject ;
55+ import org .junit .After ;
5456import org .junit .ClassRule ;
5557import org .junit .Test ;
5658import org .logstash .ObjectMappers ;
5961import static junit .framework .TestCase .assertFalse ;
6062import static junit .framework .TestCase .assertEquals ;
6163import static junit .framework .TestCase .assertNotNull ;
62- import static org .junit .Assert .assertTrue ;
6364
6465public class CustomLogEventTests {
6566 private static final String CONFIG = "log4j2-test1.xml" ;
@@ -68,6 +69,11 @@ public class CustomLogEventTests {
6869 @ ClassRule
6970 public static LoggerContextRule CTX = new LoggerContextRule (CONFIG );
7071
72+ @ After
73+ public void tearDown () {
74+ ThreadContext .clearAll ();
75+ }
76+
7177 @ Test
7278 public void testPatternLayout () {
7379 ListAppender appender = CTX .getListAppender ("EventLogger" ).clear ();
@@ -206,4 +212,29 @@ public void testJSONLayoutWhenParamsContainsAnotherMessageField() throws JsonPro
206212 System .setProperty (STRICT_JSON_PROPERTY_NAME , prevSetting );
207213 }
208214 }
215+
216+ @ Test
217+ @ SuppressWarnings ("unchecked" )
218+ public void testJSONLayoutWithPipelineIdAndPluginIds () throws JsonProcessingException {
219+ ListAppender appender = CTX .getListAppender ("JSONEventLogger" ).clear ();
220+ Logger logger = LogManager .getLogger ("JSONEventLogger" );
221+
222+ ThreadContext .put ("pipeline.id" , "main-pipeline" );
223+ ThreadContext .put ("plugin.id" , "elasticsearch-output-xyz" );
224+ logger .debug ("Both context fields test" );
225+ ThreadContext .remove ("pipeline.id" );
226+ ThreadContext .remove ("plugin.id" );
227+
228+ List <String > messages = appender .getMessages ();
229+ assertEquals (1 , messages .size ());
230+
231+ Map <String , Object > result = ObjectMappers .JSON_MAPPER .readValue (messages .get (0 ), Map .class );
232+
233+ assertEquals ("DEBUG" , result .get ("level" ));
234+ assertEquals ("main-pipeline" , result .get ("pipeline.id" ));
235+ assertEquals ("elasticsearch-output-xyz" , result .get ("plugin.id" ));
236+
237+ Map <String , Object > logEvent = (Map <String , Object >) result .get ("logEvent" );
238+ assertEquals ("Both context fields test" , logEvent .get ("message" ));
239+ }
209240}
0 commit comments