33import ch .qos .logback .classic .spi .ILoggingEvent ;
44import ch .qos .logback .classic .spi .LoggingEvent ;
55import io .avaje .json .simple .SimpleMapper ;
6+ import io .avaje .logback .encoder .abbreviator .TrimPackageAbbreviator ;
67import org .junit .jupiter .api .Test ;
78import ch .qos .logback .classic .Logger ;
89import org .slf4j .LoggerFactory ;
1415
1516class JsonEncoderTest {
1617
17- @ Test
18- void encode () {
19- String fqcn = "org.example.Foo" ;
18+ private final String fqcn = "org.example.Foo" ;
19+
20+ private ILoggingEvent createLogEvent () {
21+ return createLogEvent (null );
22+ }
23+
24+ private ILoggingEvent createLogEvent (Throwable throwable ) {
2025 Logger logger = (Logger )LoggerFactory .getLogger (fqcn );
26+ return new LoggingEvent (fqcn , logger , INFO , "Hi" , throwable , null );
27+ }
2128
22- ILoggingEvent event = new LoggingEvent (fqcn , logger , INFO , "Hi" , null , null );
29+ @ Test
30+ void encode () {
31+ ILoggingEvent event = createLogEvent ();
2332
2433 JsonEncoder encoder = new JsonEncoder ();
2534 encoder .start ();
@@ -28,10 +37,74 @@ void encode() {
2837 SimpleMapper simpleMapper = SimpleMapper .builder ().build ();
2938 Map <String , Object > asMap = simpleMapper .map ().fromJson (bytes );
3039
31- assertThat ((String )asMap .get ("@timestamp" )).isNotNull ();
40+ assertThat ((String )asMap .get ("component" )).isNull ();
41+ assertThat ((String )asMap .get ("env" )).isNull ();
42+ assertThat ((String )asMap .get ("timestamp" )).isNotNull ();
43+ assertThat ((String )asMap .get ("message" )).isEqualTo ("Hi" );
44+ assertThat ((String )asMap .get ("level" )).isEqualTo ("INFO" );
45+ assertThat ((String )asMap .get ("thread" )).isEqualTo ("main" );
46+ assertThat ((String )asMap .get ("logger" )).isEqualTo ("org.example.Foo" );
47+ }
48+
49+ @ Test
50+ void encode_component () {
51+ JsonEncoder encoder = new JsonEncoder ();
52+ encoder .setComponent ("my-component" );
53+ encoder .setEnvironment ("dev" );
54+ encoder .start ();
55+
56+ byte [] bytes = encoder .encode (createLogEvent ());
57+
58+ SimpleMapper simpleMapper = SimpleMapper .builder ().build ();
59+ Map <String , Object > asMap = simpleMapper .map ().fromJson (bytes );
60+
61+ assertThat ((String )asMap .get ("component" )).isEqualTo ("my-component" );
62+ assertThat ((String )asMap .get ("env" )).isEqualTo ("dev" );
63+ assertThat ((String )asMap .get ("timestamp" )).isNotNull ();
3264 assertThat ((String )asMap .get ("message" )).isEqualTo ("Hi" );
3365 assertThat ((String )asMap .get ("level" )).isEqualTo ("INFO" );
3466 assertThat ((String )asMap .get ("thread" )).isEqualTo ("main" );
3567 assertThat ((String )asMap .get ("logger" )).isEqualTo ("org.example.Foo" );
3668 }
69+
70+ @ Test
71+ void throwable_usingDefault () {
72+ JsonEncoder encoder = new JsonEncoder ();
73+ encoder .start ();
74+
75+ byte [] bytes = encoder .encode (createLogEvent (createThrowable ()));
76+ SimpleMapper simpleMapper = SimpleMapper .builder ().build ();
77+ Map <String , Object > asMap = simpleMapper .map ().fromJson (bytes );
78+
79+ assertThat ((String )asMap .get ("exception" )).startsWith ("java.lang.NullPointerException: " );
80+ }
81+
82+ @ Test
83+ void throwable_usingConverter () {
84+ final TrimPackageAbbreviator trimPackages = new TrimPackageAbbreviator ();
85+ trimPackages .setTargetLength (10 );
86+
87+ final ShortenedThrowableConverter converter = new ShortenedThrowableConverter ();
88+ converter .setMaxDepthPerThrowable (3 );
89+ converter .setClassNameAbbreviator (trimPackages );
90+
91+ JsonEncoder encoder = new JsonEncoder ();
92+ encoder .setThrowableConverter (converter );
93+ encoder .start ();
94+
95+ byte [] bytes = encoder .encode (createLogEvent (createThrowable ()));
96+ SimpleMapper simpleMapper = SimpleMapper .builder ().build ();
97+ Map <String , Object > asMap = simpleMapper .map ().fromJson (bytes );
98+
99+ assertThat ((String )asMap .get ("exception" )).startsWith ("j.l.NullPointerException: " );
100+ }
101+
102+ Throwable createThrowable () {
103+ try {
104+ System .getProperty ("doNotExist" ).toUpperCase ();
105+ return null ;
106+ } catch (Throwable e ) {
107+ return e ;
108+ }
109+ }
37110}
0 commit comments