You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2017/08/26 20:53:40 UTC
[22/50] logging-log4j2 git commit: [LOG4J2-2009] Rolling appender
managers broken on pattern/policy reconfiguration. Add and @Ignore failing
test.
[LOG4J2-2009] Rolling appender managers broken on pattern/policy
reconfiguration. Add and @Ignore failing test.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/b62e627a
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/b62e627a
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/b62e627a
Branch: refs/heads/LOG4J2-1431
Commit: b62e627a8456a624f05ff280ec117830de67a3f3
Parents: 6c2492f
Author: Gary Gregory <ga...@gmail.com>
Authored: Tue Aug 22 16:07:31 2017 -0600
Committer: Gary Gregory <ga...@gmail.com>
Committed: Tue Aug 22 16:07:31 2017 -0600
----------------------------------------------------------------------
.../RollingFileAppenderUpdateDataTest.java | 109 +++++++++++++++++++
1 file changed, 109 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/b62e627a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingFileAppenderUpdateDataTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingFileAppenderUpdateDataTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingFileAppenderUpdateDataTest.java
new file mode 100644
index 0000000..4b80e2e
--- /dev/null
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingFileAppenderUpdateDataTest.java
@@ -0,0 +1,109 @@
+/*
+ * 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.appender.rolling;
+
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.appender.ConsoleAppender;
+import org.apache.logging.log4j.core.appender.RollingFileAppender;
+import org.apache.logging.log4j.core.config.Configurator;
+import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilder;
+import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFactory;
+import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * Tests LOG4J2-2009 Rolling appender managers broken on pattern/policy reconfiguration
+ */
+public class RollingFileAppenderUpdateDataTest {
+
+ private ConfigurationBuilder<BuiltConfiguration> buildConfigA() {
+ final ConfigurationBuilder<BuiltConfiguration> builder = ConfigurationBuilderFactory.newConfigurationBuilder();
+ builder.setConfigurationName("LOG4J2-1964 demo");
+ builder.setStatusLevel(Level.ERROR);
+ // @formatter:off
+ builder.add(builder.newAppender("consoleLog", "Console")
+ .addAttribute("target", ConsoleAppender.Target.SYSTEM_ERR));
+ builder.add(builder.newAppender("fooAppender", "RollingFile")
+ .addAttribute("fileName", "foo.log")
+ .addAttribute("filePattern", "foo.log.%i")
+ .addComponent(builder.newComponent("SizeBasedTriggeringPolicy")
+ .addAttribute("size", "10MB")));
+ builder.add(builder.newRootLogger(Level.INFO)
+ .add(builder.newAppenderRef("consoleLog"))
+ .add(builder.newAppenderRef("fooAppender")));
+ // @formatter:on
+ return builder;
+ }
+
+ // rebuild config with date based rollover
+ private ConfigurationBuilder<BuiltConfiguration> buildConfigB() {
+ final ConfigurationBuilder<BuiltConfiguration> builder = ConfigurationBuilderFactory.newConfigurationBuilder();
+ builder.setConfigurationName("LOG4J2-1964 demo");
+ builder.setStatusLevel(Level.ERROR);
+ // @formatter:off
+ builder.add(builder.newAppender("consoleLog", "Console")
+ .addAttribute("target", ConsoleAppender.Target.SYSTEM_ERR));
+ builder.add(builder.newAppender("fooAppender", "RollingFile")
+ .addAttribute("fileName", "foo.log")
+ .addAttribute("filePattern", "foo.log.%d{yyyy-MM-dd-HH:mm:ss}.%i")
+ .addComponent(builder.newComponent("TimeBasedTriggeringPolicy")
+ .addAttribute("interval", 5)
+ .addAttribute("modulate", true)));
+ builder.add(builder.newRootLogger(Level.INFO)
+ .add(builder.newAppenderRef("consoleLog"))
+ .add(builder.newAppenderRef("fooAppender")));
+ // @formatter:on
+ return builder;
+ }
+
+ @Test
+ public void testClosingLoggerContext() {
+ // initial config with indexed rollover
+ try (LoggerContext loggerContext1 = Configurator.initialize(buildConfigA().build())) {
+ validateAppender(loggerContext1, "foo.log.%i");
+ }
+
+ // rebuild config with date based rollover
+ try (LoggerContext loggerContext2 = Configurator.initialize(buildConfigB().build())) {
+ validateAppender(loggerContext2, "foo.log.%d{yyyy-MM-dd-HH:mm:ss}.%i");
+ }
+ }
+
+ @Test
+ @Ignore
+ public void testNotClosingLoggerContext() {
+ // initial config with indexed rollover
+ final LoggerContext loggerContext1 = Configurator.initialize(buildConfigA().build());
+ validateAppender(loggerContext1, "foo.log.%i");
+
+ // rebuild config with date based rollover
+ final LoggerContext loggerContext2 = Configurator.initialize(buildConfigB().build());
+ validateAppender(loggerContext2, "foo.log.%d{yyyy-MM-dd-HH:mm:ss}.%i");
+ }
+
+ private void validateAppender(final LoggerContext loggerContext1, final String expectedFilePattern) {
+ final RollingFileAppender appender = loggerContext1.getConfiguration().getAppender("fooAppender");
+ Assert.assertNotNull(appender);
+ Assert.assertEquals(expectedFilePattern, appender.getFilePattern());
+ LogManager.getLogger("root").info("just to show it works.");
+ }
+}