Hi, I am preparing a pull request for LOG4J2-2403 and modified an existing Unit-Test that has its configuration in YAML format. I added a second ListAppender, but this causes the Unit test to behave strangely.
It seems that, since I have two ListAppenders now, the sequence numbers are shared between the Appenders. So one of them gets the sequence number 1, 3, 5, 7, 9 and the other gets 2, 4, 6, 8, 10. Is there a way to avoid this? The seconds problem is that the sequence number is not reset between the tests. I do not know how to do this with the LoggerContextRule. The Unit-Test I have modified is SequenceNumberPatternConverterTest. Please find attached the modified Test class and its corresponding YAML-File. Any suggestions on how to solve these problems? I could create a seconds Unit test class, but I would rather use the same because they actually test exactly the same functionality, only with different patterns. Best regards Marco
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache license, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the license for the specific language governing permissions and * limitations under the license. */ package org.apache.logging.log4j.core.pattern; import java.util.List; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.junit.LoggerContextRule; import org.apache.logging.log4j.test.appender.ListAppender; import org.junit.Test; import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; import org.junit.Before; import org.junit.ClassRule; /** * */ public class SequenceNumberPatternConverterTest { @ClassRule public static LoggerContextRule ctx = new LoggerContextRule("SequenceNumberPatternConverterTest.yml"); @Before public void before() { ctx.getListAppender("List").clear(); ctx.getListAppender("Padded").clear(); } @Test public void testSequenceIncreases() throws Exception { final Logger logger = ctx.getLogger(); logger.info("Message 1"); logger.info("Message 2"); logger.info("Message 3"); logger.info("Message 4"); logger.info("Message 5"); final ListAppender app = ctx.getListAppender("List"); final List<String> messages = app.getMessages(); System.out.println("Written messages: "+messages); assertThat(messages, contains("1", "2", "3", "4", "5")); } @Test public void testPaddedSequence() throws Exception { final Logger logger = ctx.getLogger(); logger.info("Message 1"); logger.info("Message 2"); logger.info("Message 3"); logger.info("Message 4"); logger.info("Message 5"); final ListAppender app = ctx.getListAppender("Padded"); final List<String> messages = app.getMessages(); System.out.println("Written messages "+messages); assertThat(messages, contains("001", "002", "003", "004", "005")); } }
Configuration: status: OFF name: SequenceNumberPatternConverterTest Appenders: List: - name: List PatternLayout: pattern: '%sn' - name: Padded PatternLayout: pattern: '%03sn' Loggers: Root: level: INFO AppenderRef: - ref: List - ref: Padded
--------------------------------------------------------------------- To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-user-h...@logging.apache.org