1616 */
1717package org .apache .logging .log4j .jul .test ;
1818
19- import static org .hamcrest .Matchers .equalTo ;
20- import static org .hamcrest .Matchers .is ;
21- import static org .junit .Assert .assertEquals ;
22- import static org .junit .Assert .assertNotNull ;
23- import static org .junit .Assert .assertThat ;
24- import static org .junit .Assert .assertTrue ;
19+ import static org .assertj .core .api .Assertions .assertThat ;
2520
2621import java .util .logging .Level ;
2722import java .util .logging .Logger ;
23+ import org .apache .logging .log4j .core .LoggerContext ;
2824import org .apache .logging .log4j .core .test .appender .ListAppender ;
2925import org .apache .logging .log4j .jul .LogManager ;
3026import org .apache .logging .log4j .util .Strings ;
3632
3733public class CoreLoggerTest extends AbstractLoggerTest {
3834
35+ private static final Level [] LEVELS = new Level [] {
36+ Level .ALL ,
37+ Level .FINEST ,
38+ Level .FINER ,
39+ Level .FINE ,
40+ Level .CONFIG ,
41+ Level .INFO ,
42+ Level .WARNING ,
43+ Level .SEVERE ,
44+ Level .OFF
45+ };
46+
47+ private static Level getEffectiveLevel (final Logger logger ) {
48+ for (final Level level : LEVELS ) {
49+ if (logger .isLoggable (level )) {
50+ return level ;
51+ }
52+ }
53+ throw new RuntimeException ("No level is enabled." );
54+ }
55+
3956 @ BeforeClass
4057 public static void setUpClass () {
4158 System .setProperty ("java.util.logging.manager" , LogManager .class .getName ());
@@ -47,21 +64,23 @@ public static void tearDownClass() {
4764 }
4865
4966 @ Before
50- public void setUp () throws Exception {
51- LogManager .getLogManager ().reset ();
67+ public void setUp () {
68+ // Reset the logger context
69+ LoggerContext .getContext (false ).reconfigure ();
70+
5271 logger = Logger .getLogger (LOGGER_NAME );
5372 logger .setFilter (null );
54- assertThat (logger .getLevel (), equalTo (Level .FINE ) );
73+ assertThat (logger .getLevel ()). isEqualTo (Level .FINE );
5574 eventAppender = ListAppender .getListAppender ("TestAppender" );
5675 flowAppender = ListAppender .getListAppender ("FlowAppender" );
5776 stringAppender = ListAppender .getListAppender ("StringAppender" );
58- assertNotNull (eventAppender );
59- assertNotNull (flowAppender );
60- assertNotNull (stringAppender );
77+ assertThat (eventAppender ). isNotNull ( );
78+ assertThat (flowAppender ). isNotNull ( );
79+ assertThat (stringAppender ). isNotNull ( );
6180 }
6281
6382 @ After
64- public void tearDown () throws Exception {
83+ public void tearDown () {
6584 if (eventAppender != null ) {
6685 eventAppender .clear ();
6786 }
@@ -74,82 +93,57 @@ public void tearDown() throws Exception {
7493 }
7594
7695 @ Test
77- public void testRootSetLevelToNull () throws Exception {
96+ public void testRootSetLevelToNull () {
7897 final Logger rootLogger = Logger .getLogger (Strings .EMPTY );
79- assertThat (rootLogger .getLevel (), equalTo (Level .SEVERE ) );
80- assertThat (rootLogger . isLoggable (Level .SEVERE ), is ( true ) );
98+ assertThat (rootLogger .getLevel ()). isEqualTo (Level .SEVERE );
99+ assertThat (getEffectiveLevel ( rootLogger )). isEqualTo (Level .SEVERE );
81100 // null test
82101 rootLogger .setLevel (null );
83- assertThat (rootLogger .getLevel (), equalTo ( null ) );
84- assertThat (rootLogger . isLoggable (Level .SEVERE ), is ( true ) );
102+ assertThat (rootLogger .getLevel ()). isNull ( );
103+ assertThat (getEffectiveLevel ( rootLogger )). isEqualTo (Level .SEVERE );
85104 // now go back to a different one
86105 rootLogger .setLevel (Level .INFO );
87- assertThat (rootLogger .getLevel (), equalTo (Level .INFO ) );
88- assertThat (rootLogger . isLoggable (Level .FINE ), is ( false ) );
106+ assertThat (rootLogger .getLevel ()). isEqualTo (Level .INFO );
107+ assertThat (getEffectiveLevel ( rootLogger )). isEqualTo (Level .INFO );
89108 }
90109
91110 @ Test
92- public void testSetLevel () throws Exception {
93- final Logger childLogger = Logger .getLogger (LOGGER_NAME + ".Child" );
94- assertThat (childLogger .getLevel (), equalTo (Level .FINE ));
95- logger .setLevel (Level .SEVERE );
96- assertThat (childLogger .getLevel (), equalTo (Level .FINE ));
97- assertThat (logger .getLevel (), equalTo (Level .SEVERE ));
98- logger .setLevel (Level .FINER );
99- assertThat (logger .getLevel (), equalTo (Level .FINER ));
100- logger .setLevel (Level .FINE );
101- assertThat (logger .getLevel (), equalTo (Level .FINE ));
102- assertThat (childLogger .getLevel (), equalTo (Level .FINE ));
103- assertThat (childLogger .isLoggable (Level .ALL ), is (false ));
104- }
105-
106- @ Test
107- public void testSetLevelIssue2281 () {
111+ public void testSetLevel () {
108112 final Logger a = Logger .getLogger ("a" );
109113 final Logger a_b = Logger .getLogger ("a.b" );
110114 final Logger a_b_c = Logger .getLogger ("a.b.c" );
111115 // test default for this test
112- assertEquals ( Level . INFO , a .getLevel ());
113- assertEquals ( Level . INFO , a_b .getLevel ());
114- assertEquals ( Level . INFO , a_b_c .getLevel ());
116+ assertThat ( a .getLevel ()). isNull ( );
117+ assertThat ( a_b .getLevel ()). isNull ( );
118+ assertThat ( a_b_c .getLevel ()). isNull ( );
115119 // all levels
116- final Level [] levels = new Level [] {
117- Level .OFF ,
118- Level .SEVERE ,
119- Level .WARNING ,
120- Level .INFO ,
121- Level .CONFIG ,
122- Level .FINE ,
123- Level .FINER ,
124- Level .FINEST ,
125- Level .ALL
126- };
127- for (int i = 0 ; i < levels .length - 1 ; i ++) {
128- final Level level = levels [i ];
129- final Level nextLevel = levels [i + 1 ];
120+ for (final Level level : LEVELS ) {
130121 a .setLevel (level );
131- assertEquals (level , a .getLevel ());
132- assertTrue (a .isLoggable (level ) && !a .isLoggable (nextLevel ));
133- assertTrue (a_b .isLoggable (level ) && !a .isLoggable (nextLevel ));
134- assertTrue (a_b_c .isLoggable (level ) && !a .isLoggable (nextLevel ));
122+ assertThat (a .getLevel ()).isEqualTo (level );
123+ assertThat (getEffectiveLevel (a )).isEqualTo (level );
124+ assertThat (a_b .getLevel ()).isNull ();
125+ assertThat (getEffectiveLevel (a_b )).isEqualTo (level );
126+ assertThat (a_b_c .getLevel ()).isNull ();
127+ assertThat (getEffectiveLevel (a_b_c )).isEqualTo (level );
135128 }
136129 }
137130
138131 @ Test
139- public void testSetLevelToNull () throws Exception {
132+ public void testSetLevelToNull () {
140133 final Logger childLogger = Logger .getLogger (LOGGER_NAME + ".NullChild" );
141- assertThat (childLogger .getLevel (), equalTo (Level .FINE ));
142- assertThat (childLogger .isLoggable (Level .FINE ), is (true ));
134+ assertThat (childLogger .getLevel ()).isNull ();
135+ assertThat (getEffectiveLevel (childLogger )).isEqualTo (Level .FINE );
136+ // Set explicit level
143137 childLogger .setLevel (Level .SEVERE );
144- assertThat (childLogger .getLevel (), equalTo (Level .SEVERE ) );
145- assertThat (childLogger . isLoggable (Level .FINE ), is ( false ) );
146- // null test
138+ assertThat (childLogger .getLevel ()). isEqualTo (Level .SEVERE );
139+ assertThat (getEffectiveLevel ( childLogger )). isEqualTo (Level .SEVERE );
140+ // Set null level
147141 childLogger .setLevel (null );
148- assertThat (childLogger .getLevel (), equalTo ( null ) );
149- assertThat (childLogger . isLoggable (Level .FINE ), is ( true ) );
142+ assertThat (childLogger .getLevel ()). isNull ( );
143+ assertThat (getEffectiveLevel ( childLogger )). isEqualTo (Level .FINE );
150144 // now go back
151145 childLogger .setLevel (Level .SEVERE );
152- assertThat (childLogger .getLevel (), equalTo (Level .SEVERE ) );
153- assertThat (childLogger . isLoggable (Level .FINE ), is ( false ) );
146+ assertThat (childLogger .getLevel ()). isEqualTo (Level .SEVERE );
147+ assertThat (getEffectiveLevel ( childLogger )). isEqualTo (Level .SEVERE );
154148 }
155149}
0 commit comments