diff --git a/2repository/23.1/community-23.1.0/resources/log4j.properties b/2repository/23.1/community-23.1.0/resources/log4j.properties new file mode 100644 index 00000000..b4f41ff0 --- /dev/null +++ b/2repository/23.1/community-23.1.0/resources/log4j.properties @@ -0,0 +1,9 @@ +appenders = console +appender.console.type = Console +appender.console.name = STDOUT +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{ISO8601} [%t] %-5p %c - %m%n + +rootLogger.level = WARN +rootLogger.appenderRefs = console +rootLogger.appenderRef.console.ref = STDOUT \ No newline at end of file diff --git a/2repository/23.1/enterprise-23.1.0/resources/log4j.properties b/2repository/23.1/enterprise-23.1.0/resources/log4j.properties new file mode 100644 index 00000000..b4f41ff0 --- /dev/null +++ b/2repository/23.1/enterprise-23.1.0/resources/log4j.properties @@ -0,0 +1,9 @@ +appenders = console +appender.console.type = Console +appender.console.name = STDOUT +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{ISO8601} [%t] %-5p %c - %m%n + +rootLogger.level = WARN +rootLogger.appenderRefs = console +rootLogger.appenderRef.console.ref = STDOUT \ No newline at end of file diff --git a/2repository/23.2/community-23.2.0/resources/log4j.properties b/2repository/23.2/community-23.2.0/resources/log4j.properties new file mode 100644 index 00000000..b4f41ff0 --- /dev/null +++ b/2repository/23.2/community-23.2.0/resources/log4j.properties @@ -0,0 +1,9 @@ +appenders = console +appender.console.type = Console +appender.console.name = STDOUT +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{ISO8601} [%t] %-5p %c - %m%n + +rootLogger.level = WARN +rootLogger.appenderRefs = console +rootLogger.appenderRef.console.ref = STDOUT \ No newline at end of file diff --git a/2repository/23.2/enterprise-23.2.0/resources/log4j.properties b/2repository/23.2/enterprise-23.2.0/resources/log4j.properties new file mode 100644 index 00000000..b4f41ff0 --- /dev/null +++ b/2repository/23.2/enterprise-23.2.0/resources/log4j.properties @@ -0,0 +1,9 @@ +appenders = console +appender.console.type = Console +appender.console.name = STDOUT +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{ISO8601} [%t] %-5p %c - %m%n + +rootLogger.level = WARN +rootLogger.appenderRefs = console +rootLogger.appenderRef.console.ref = STDOUT \ No newline at end of file diff --git a/2repository/23.3/community-23.3.0/resources/log4j.properties b/2repository/23.3/community-23.3.0/resources/log4j.properties new file mode 100644 index 00000000..b4f41ff0 --- /dev/null +++ b/2repository/23.3/community-23.3.0/resources/log4j.properties @@ -0,0 +1,9 @@ +appenders = console +appender.console.type = Console +appender.console.name = STDOUT +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{ISO8601} [%t] %-5p %c - %m%n + +rootLogger.level = WARN +rootLogger.appenderRefs = console +rootLogger.appenderRef.console.ref = STDOUT \ No newline at end of file diff --git a/2repository/23.3/enterprise-23.3.0/resources/log4j.properties b/2repository/23.3/enterprise-23.3.0/resources/log4j.properties new file mode 100644 index 00000000..b4f41ff0 --- /dev/null +++ b/2repository/23.3/enterprise-23.3.0/resources/log4j.properties @@ -0,0 +1,9 @@ +appenders = console +appender.console.type = Console +appender.console.name = STDOUT +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{ISO8601} [%t] %-5p %c - %m%n + +rootLogger.level = WARN +rootLogger.appenderRefs = console +rootLogger.appenderRef.console.ref = STDOUT \ No newline at end of file diff --git a/2repository/23.4/community-23.4.0/resources/log4j.properties b/2repository/23.4/community-23.4.0/resources/log4j.properties new file mode 100644 index 00000000..b4f41ff0 --- /dev/null +++ b/2repository/23.4/community-23.4.0/resources/log4j.properties @@ -0,0 +1,9 @@ +appenders = console +appender.console.type = Console +appender.console.name = STDOUT +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{ISO8601} [%t] %-5p %c - %m%n + +rootLogger.level = WARN +rootLogger.appenderRefs = console +rootLogger.appenderRef.console.ref = STDOUT \ No newline at end of file diff --git a/2repository/23.4/enterprise-23.4.0/resources/log4j.properties b/2repository/23.4/enterprise-23.4.0/resources/log4j.properties new file mode 100644 index 00000000..b4f41ff0 --- /dev/null +++ b/2repository/23.4/enterprise-23.4.0/resources/log4j.properties @@ -0,0 +1,9 @@ +appenders = console +appender.console.type = Console +appender.console.name = STDOUT +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{ISO8601} [%t] %-5p %c - %m%n + +rootLogger.level = WARN +rootLogger.appenderRefs = console +rootLogger.appenderRef.console.ref = STDOUT \ No newline at end of file diff --git a/2repository/25.1/community-25.1.0/resources/log4j.properties b/2repository/25.1/community-25.1.0/resources/log4j.properties new file mode 100644 index 00000000..b4f41ff0 --- /dev/null +++ b/2repository/25.1/community-25.1.0/resources/log4j.properties @@ -0,0 +1,9 @@ +appenders = console +appender.console.type = Console +appender.console.name = STDOUT +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{ISO8601} [%t] %-5p %c - %m%n + +rootLogger.level = WARN +rootLogger.appenderRefs = console +rootLogger.appenderRef.console.ref = STDOUT \ No newline at end of file diff --git a/2repository/25.1/enterprise-25.1.0/resources/log4j.properties b/2repository/25.1/enterprise-25.1.0/resources/log4j.properties new file mode 100644 index 00000000..b4f41ff0 --- /dev/null +++ b/2repository/25.1/enterprise-25.1.0/resources/log4j.properties @@ -0,0 +1,9 @@ +appenders = console +appender.console.type = Console +appender.console.name = STDOUT +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{ISO8601} [%t] %-5p %c - %m%n + +rootLogger.level = WARN +rootLogger.appenderRefs = console +rootLogger.appenderRef.console.ref = STDOUT \ No newline at end of file diff --git a/2repository/7.0/community-7.0.0/resources/log4j.properties b/2repository/7.0/community-7.0.0/resources/log4j.properties new file mode 100644 index 00000000..c82e012f --- /dev/null +++ b/2repository/7.0/community-7.0.0/resources/log4j.properties @@ -0,0 +1,4 @@ +log4j.rootLogger = WARN, CONSOLE +log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender +log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern = %d{ISO8601} [%t] %-5p %c - %m%n diff --git a/2repository/7.0/enterprise-7.0.1/resources/log4j.properties b/2repository/7.0/enterprise-7.0.1/resources/log4j.properties new file mode 100644 index 00000000..c82e012f --- /dev/null +++ b/2repository/7.0/enterprise-7.0.1/resources/log4j.properties @@ -0,0 +1,4 @@ +log4j.rootLogger = WARN, CONSOLE +log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender +log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern = %d{ISO8601} [%t] %-5p %c - %m%n diff --git a/2repository/7.1/community-7.1.1/resources/log4j.properties b/2repository/7.1/community-7.1.1/resources/log4j.properties new file mode 100644 index 00000000..c82e012f --- /dev/null +++ b/2repository/7.1/community-7.1.1/resources/log4j.properties @@ -0,0 +1,4 @@ +log4j.rootLogger = WARN, CONSOLE +log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender +log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern = %d{ISO8601} [%t] %-5p %c - %m%n diff --git a/2repository/7.1/enterprise-7.1.0/resources/log4j.properties b/2repository/7.1/enterprise-7.1.0/resources/log4j.properties new file mode 100644 index 00000000..c82e012f --- /dev/null +++ b/2repository/7.1/enterprise-7.1.0/resources/log4j.properties @@ -0,0 +1,4 @@ +log4j.rootLogger = WARN, CONSOLE +log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender +log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern = %d{ISO8601} [%t] %-5p %c - %m%n diff --git a/2repository/7.2/community-7.2.0/resources/log4j.properties b/2repository/7.2/community-7.2.0/resources/log4j.properties new file mode 100644 index 00000000..c82e012f --- /dev/null +++ b/2repository/7.2/community-7.2.0/resources/log4j.properties @@ -0,0 +1,4 @@ +log4j.rootLogger = WARN, CONSOLE +log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender +log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern = %d{ISO8601} [%t] %-5p %c - %m%n diff --git a/2repository/7.2/enterprise-7.2.0/resources/log4j.properties b/2repository/7.2/enterprise-7.2.0/resources/log4j.properties new file mode 100644 index 00000000..c82e012f --- /dev/null +++ b/2repository/7.2/enterprise-7.2.0/resources/log4j.properties @@ -0,0 +1,4 @@ +log4j.rootLogger = WARN, CONSOLE +log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender +log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern = %d{ISO8601} [%t] %-5p %c - %m%n diff --git a/2repository/7.3/community-7.3.0/resources/log4j.properties b/2repository/7.3/community-7.3.0/resources/log4j.properties new file mode 100644 index 00000000..c82e012f --- /dev/null +++ b/2repository/7.3/community-7.3.0/resources/log4j.properties @@ -0,0 +1,4 @@ +log4j.rootLogger = WARN, CONSOLE +log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender +log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern = %d{ISO8601} [%t] %-5p %c - %m%n diff --git a/2repository/7.3/enterprise-7.3.0/resources/log4j.properties b/2repository/7.3/enterprise-7.3.0/resources/log4j.properties new file mode 100644 index 00000000..c82e012f --- /dev/null +++ b/2repository/7.3/enterprise-7.3.0/resources/log4j.properties @@ -0,0 +1,4 @@ +log4j.rootLogger = WARN, CONSOLE +log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender +log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern = %d{ISO8601} [%t] %-5p %c - %m%n diff --git a/2repository/7.4/community-7.4.0/resources/log4j.properties b/2repository/7.4/community-7.4.0/resources/log4j.properties new file mode 100644 index 00000000..b4f41ff0 --- /dev/null +++ b/2repository/7.4/community-7.4.0/resources/log4j.properties @@ -0,0 +1,9 @@ +appenders = console +appender.console.type = Console +appender.console.name = STDOUT +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{ISO8601} [%t] %-5p %c - %m%n + +rootLogger.level = WARN +rootLogger.appenderRefs = console +rootLogger.appenderRef.console.ref = STDOUT \ No newline at end of file diff --git a/2repository/7.4/enterprise-7.4.0/resources/log4j.properties b/2repository/7.4/enterprise-7.4.0/resources/log4j.properties new file mode 100644 index 00000000..b4f41ff0 --- /dev/null +++ b/2repository/7.4/enterprise-7.4.0/resources/log4j.properties @@ -0,0 +1,9 @@ +appenders = console +appender.console.type = Console +appender.console.name = STDOUT +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{ISO8601} [%t] %-5p %c - %m%n + +rootLogger.level = WARN +rootLogger.appenderRefs = console +rootLogger.appenderRef.console.ref = STDOUT \ No newline at end of file diff --git a/2repository/build.gradle b/2repository/build.gradle index 0d4e48fd..d0955acf 100644 --- a/2repository/build.gradle +++ b/2repository/build.gradle @@ -55,6 +55,14 @@ subprojects { environmentVariable('ALFRESCO_FLAVOR', "${project.alfresco.flavor}") environmentVariable('ALFRESCO_VERSION', "${project.alfresco.version.major}.${project.alfresco.version.minor}.${project.alfresco.version.rev}") + + if (project.alfresco.version.major == 7 && project.alfresco.version.minor <= 3) { + environmentVariable('LOG4J_VERSION', '1') + } else { + environmentVariable('LOG4J_VERSION', '2') + } + + smartCopy(file("${project.projectDir}/resources/log4j.properties"), "/log4j.properties.base") } createDockerFile.dependsOn(parentImage) diff --git a/2repository/src/integrationTest/java/eu/xenit/docker/alfresco/test/LoggingTests.java b/2repository/src/integrationTest/java/eu/xenit/docker/alfresco/test/LoggingTests.java index 2683799d..64359323 100644 --- a/2repository/src/integrationTest/java/eu/xenit/docker/alfresco/test/LoggingTests.java +++ b/2repository/src/integrationTest/java/eu/xenit/docker/alfresco/test/LoggingTests.java @@ -1,6 +1,8 @@ package eu.xenit.docker.alfresco.test; import java.io.IOException; +import java.time.Duration; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -63,15 +65,17 @@ private boolean validateApplicationJsonLog(Stream jsonNodes) { .allMatch(logLine -> REQ_APPLICATION_LOGGING_FIELDS.stream().allMatch(logLine::has)); } - private void setupAlfrescoTestContainer(GenericContainer alfContainer, boolean jsonLogging) { - alfContainer - .withExposedPorts(8080) - .withEnv(Map.of( + private void setupAlfrescoTestContainer(GenericContainer alfContainer, boolean jsonLogging, Map env) { + Map baseEnv = new HashMap<>(Map.of( "ACCESS_LOGGING", "false", "GLOBAL_legacy.transform.service.enabled", "false", "GLOBAL_local.transform.service.enabled", "false", "JSON_LOGGING", String.valueOf(jsonLogging) - )); + )); + baseEnv.putAll(env); + alfContainer + .withExposedPorts(8080) + .withEnv(baseEnv); } private static DockerImageName getAlfrescoImageName() { @@ -89,10 +93,16 @@ private boolean isJsonLogs(String logs) { } + private boolean containsSpringDebugLog(String logs) { + return logs.lines().anyMatch(line -> { + return line.contains("DEBUG org.springframework"); + }); + } + @Test public void testNonJsonLogging() { try (GenericContainer alfContainer = new GenericContainer<>(getAlfrescoImageName())) { - setupAlfrescoTestContainer(alfContainer, false); + setupAlfrescoTestContainer(alfContainer, false, Map.of()); alfContainer.start(); // Let the logs accumulate @@ -107,7 +117,7 @@ public void testNonJsonLogging() { @Test public void testJsonLogging() { try (GenericContainer alfContainer = new GenericContainer<>(getAlfrescoImageName())) { - setupAlfrescoTestContainer(alfContainer, true); + setupAlfrescoTestContainer(alfContainer, true, Map.of()); alfContainer.start(); // Let the logs accumulate @@ -121,4 +131,21 @@ public void testJsonLogging() { Assert.assertTrue(validateApplicationJsonLog(jsonNodes)); } } + + @Test + public void testLogLevelConfiguration() { + try (GenericContainer alfContainer = new GenericContainer<>(getAlfrescoImageName())) { + // Start container with debug Spring + setupAlfrescoTestContainer(alfContainer, false, Map.of("LOG_LEVEL_org_springframework", "debug")); + alfContainer.start(); + + // Accumulate some logs (make sure we get enough to catch some Spring logs) + Awaitility.await().timeout(Duration.ofMinutes(1)).until(() -> alfContainer.getLogs().lines().count() > 50); + + String logs = alfContainer.getLogs(); + + // Now find log entries from Spring marked as Debug + Assert.assertTrue(containsSpringDebugLog(logs)); + } + } } diff --git a/2share/23.1/community-23.1.0/resources/log4j.properties b/2share/23.1/community-23.1.0/resources/log4j.properties new file mode 100644 index 00000000..b4f41ff0 --- /dev/null +++ b/2share/23.1/community-23.1.0/resources/log4j.properties @@ -0,0 +1,9 @@ +appenders = console +appender.console.type = Console +appender.console.name = STDOUT +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{ISO8601} [%t] %-5p %c - %m%n + +rootLogger.level = WARN +rootLogger.appenderRefs = console +rootLogger.appenderRef.console.ref = STDOUT \ No newline at end of file diff --git a/2share/23.2/community-23.2.0/resources/log4j.properties b/2share/23.2/community-23.2.0/resources/log4j.properties new file mode 100644 index 00000000..b4f41ff0 --- /dev/null +++ b/2share/23.2/community-23.2.0/resources/log4j.properties @@ -0,0 +1,9 @@ +appenders = console +appender.console.type = Console +appender.console.name = STDOUT +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{ISO8601} [%t] %-5p %c - %m%n + +rootLogger.level = WARN +rootLogger.appenderRefs = console +rootLogger.appenderRef.console.ref = STDOUT \ No newline at end of file diff --git a/2share/23.3/community-23.3.0/resources/log4j.properties b/2share/23.3/community-23.3.0/resources/log4j.properties new file mode 100644 index 00000000..b4f41ff0 --- /dev/null +++ b/2share/23.3/community-23.3.0/resources/log4j.properties @@ -0,0 +1,9 @@ +appenders = console +appender.console.type = Console +appender.console.name = STDOUT +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{ISO8601} [%t] %-5p %c - %m%n + +rootLogger.level = WARN +rootLogger.appenderRefs = console +rootLogger.appenderRef.console.ref = STDOUT \ No newline at end of file diff --git a/2share/23.4/community-23.4.0/resources/log4j.properties b/2share/23.4/community-23.4.0/resources/log4j.properties new file mode 100644 index 00000000..b4f41ff0 --- /dev/null +++ b/2share/23.4/community-23.4.0/resources/log4j.properties @@ -0,0 +1,9 @@ +appenders = console +appender.console.type = Console +appender.console.name = STDOUT +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{ISO8601} [%t] %-5p %c - %m%n + +rootLogger.level = WARN +rootLogger.appenderRefs = console +rootLogger.appenderRef.console.ref = STDOUT \ No newline at end of file diff --git a/2share/25.1/community-25.1.0/resources/log4j.properties b/2share/25.1/community-25.1.0/resources/log4j.properties new file mode 100644 index 00000000..b4f41ff0 --- /dev/null +++ b/2share/25.1/community-25.1.0/resources/log4j.properties @@ -0,0 +1,9 @@ +appenders = console +appender.console.type = Console +appender.console.name = STDOUT +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{ISO8601} [%t] %-5p %c - %m%n + +rootLogger.level = WARN +rootLogger.appenderRefs = console +rootLogger.appenderRef.console.ref = STDOUT \ No newline at end of file diff --git a/2share/7.0/community-7.0.1/resources/log4j.properties b/2share/7.0/community-7.0.1/resources/log4j.properties new file mode 100644 index 00000000..c82e012f --- /dev/null +++ b/2share/7.0/community-7.0.1/resources/log4j.properties @@ -0,0 +1,4 @@ +log4j.rootLogger = WARN, CONSOLE +log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender +log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern = %d{ISO8601} [%t] %-5p %c - %m%n diff --git a/2share/7.1/community-7.1.0/resources/log4j.properties b/2share/7.1/community-7.1.0/resources/log4j.properties new file mode 100644 index 00000000..c82e012f --- /dev/null +++ b/2share/7.1/community-7.1.0/resources/log4j.properties @@ -0,0 +1,4 @@ +log4j.rootLogger = WARN, CONSOLE +log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender +log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern = %d{ISO8601} [%t] %-5p %c - %m%n diff --git a/2share/7.2/community-7.2.1/resources/log4j.properties b/2share/7.2/community-7.2.1/resources/log4j.properties new file mode 100644 index 00000000..c82e012f --- /dev/null +++ b/2share/7.2/community-7.2.1/resources/log4j.properties @@ -0,0 +1,4 @@ +log4j.rootLogger = WARN, CONSOLE +log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender +log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern = %d{ISO8601} [%t] %-5p %c - %m%n diff --git a/2share/7.3/community-7.3.0/resources/log4j.properties b/2share/7.3/community-7.3.0/resources/log4j.properties new file mode 100644 index 00000000..c82e012f --- /dev/null +++ b/2share/7.3/community-7.3.0/resources/log4j.properties @@ -0,0 +1,4 @@ +log4j.rootLogger = WARN, CONSOLE +log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender +log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern = %d{ISO8601} [%t] %-5p %c - %m%n diff --git a/2share/7.4/community-7.4.0/resources/log4j.properties b/2share/7.4/community-7.4.0/resources/log4j.properties new file mode 100644 index 00000000..b4f41ff0 --- /dev/null +++ b/2share/7.4/community-7.4.0/resources/log4j.properties @@ -0,0 +1,9 @@ +appenders = console +appender.console.type = Console +appender.console.name = STDOUT +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{ISO8601} [%t] %-5p %c - %m%n + +rootLogger.level = WARN +rootLogger.appenderRefs = console +rootLogger.appenderRef.console.ref = STDOUT \ No newline at end of file diff --git a/2share/build.gradle b/2share/build.gradle index f7398c2f..9ce44957 100644 --- a/2share/build.gradle +++ b/2share/build.gradle @@ -22,6 +22,14 @@ subprojects { createDockerFile { environmentVariable('SHARE_FLAVOR', "${project.share.flavor}") environmentVariable('SHARE_VERSION', "${project.share.version.major}.${project.share.version.minor}.${project.share.version.rev}") + + if (project.share.version.major == 7 && project.share.version.minor <= 3) { + environmentVariable('LOG4J_VERSION', '1') + } else { + environmentVariable('LOG4J_VERSION', '2') + } + + smartCopy(file("${project.projectDir}/resources/log4j.properties"), "/log4j.properties.base") } createDockerFile.dependsOn(parentImage) diff --git a/README.md b/README.md index edba2342..87b3c3e7 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,7 @@ in the following tables, are the values that are used when the environment varia | JMX_ENABLED | false | -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.rmi.port=5000 -Dcom.sun.management.jmxremote.port=5000 -Djava.rmi.server.hostname=$JMX_RMI_HOST | | JMX_RMI_HOST | 0.0.0.0 | | | JAVA_OPTS_\=\ | \ | \ | +| LOG_LEVEL_\=\ | | Sets the log level for org.package.name to the provided value | | JSON_LOGGING | false | When true, all logs will be in JSON. | | ACCESS_LOGGING | false | When true, access logs will be printed. These logs are always in JSON format | | EXIT_ON_FAILURE | true | When true, the Java process will exit when the application deployed in Tomcat fails to start. Can be turned of for debugging purposes. | diff --git a/tomcat-base/src/shared/main/bash/entrypoint/docker-entrypoint.d/80-java-opts.sh b/tomcat-base/src/shared/main/bash/entrypoint/docker-entrypoint.d/80-java-opts.sh index 6256a294..6d87d0c9 100755 --- a/tomcat-base/src/shared/main/bash/entrypoint/docker-entrypoint.d/80-java-opts.sh +++ b/tomcat-base/src/shared/main/bash/entrypoint/docker-entrypoint.d/80-java-opts.sh @@ -34,7 +34,7 @@ fi IFS=$'\n' for I in $(env); do if [[ $I == JAVA_OPTS_* ]]; then - echo '{ "timestamp" : '"$(date '+%s')"' ,"severity" : "INFO", "type" : "application","component" : "docker-entrypoint" ,"fullMessage" : "' "-- collecting $I" '"}' + echo '{ "timestamp" : '"$(date '+%s')"' ,"severity" : "INFO", "type" : "entrypoint","component" : "docker-entrypoint" ,"fullMessage" : "' "-- collecting $I" '"}' VALUE=$(echo $I | cut -d '=' -f 2-) JAVA_OPTS="$JAVA_OPTS $VALUE" fi @@ -43,4 +43,4 @@ done # Trim leading/trailing whitespace export JAVA_OPTS=$(echo $JAVA_OPTS | xargs echo) -echo '{ "timestamp" : '"$(date '+%s')"' ,"severity" : "INFO", "type" : "application","component" : "docker-entrypoint" ,"fullMessage" : "' "Result: JAVA_OPTS=${JAVA_OPTS}" '"}' \ No newline at end of file +echo '{ "timestamp" : '"$(date '+%s')"' ,"severity" : "INFO", "type" : "entrypoint","component" : "docker-entrypoint" ,"fullMessage" : "' "Result: JAVA_OPTS=${JAVA_OPTS}" '"}' \ No newline at end of file diff --git a/tomcat-base/src/shared/main/bash/entrypoint/docker-entrypoint.d/89-check-validity.sh b/tomcat-base/src/shared/main/bash/entrypoint/docker-entrypoint.d/89-check-validity.sh index 6bcaa298..2af4c67f 100755 --- a/tomcat-base/src/shared/main/bash/entrypoint/docker-entrypoint.d/89-check-validity.sh +++ b/tomcat-base/src/shared/main/bash/entrypoint/docker-entrypoint.d/89-check-validity.sh @@ -2,11 +2,11 @@ currentDate=$(date +%s) if [ -z "${BUILD_DATE}" ]; then - echo '{ "timestamp" : '"$(date -d @$currentDate +"%s")"' ,"severity" : "WARN", "type" : "application","component" : "docker-entrypoint" ,"fullMessage" : "Unable to determine image age: BUILD_DATE is not set"}' + echo '{ "timestamp" : '"$(date -d @$currentDate +"%s")"' ,"severity" : "WARN", "type" : "entrypoint","component" : "docker-entrypoint" ,"fullMessage" : "Unable to determine image age: BUILD_DATE is not set"}' else printf -v buildDate "%.0f\n" "$BUILD_DATE" timeelapsed=$(expr ${currentDate} - ${buildDate}) if [ $timeelapsed -ge 2592000 ]; then # 30 days - echo '{ "timestamp" : '"$(date -d @$currentDate +"%s")"' ,"severity" : "WARN", "type" : "application","component" : "docker-entrypoint" , "fullMessage" : "This is an old image: BUILD_DATE='"$(date -d @$BUILD_DATE +"%Y-%m-%d %H:%M:%S")"' and currentDate='"$(date -d @$currentDate +"%Y-%m-%d %H:%M:%S")"'"}' + echo '{ "timestamp" : '"$(date -d @$currentDate +"%s")"' ,"severity" : "WARN", "type" : "entrypoint","component" : "docker-entrypoint" , "fullMessage" : "This is an old image: BUILD_DATE='"$(date -d @$BUILD_DATE +"%Y-%m-%d %H:%M:%S")"' and currentDate='"$(date -d @$currentDate +"%Y-%m-%d %H:%M:%S")"'"}' fi fi diff --git a/tomcat-base/src/shared/main/bash/entrypoint/docker-entrypoint.d/90-logging-env-vars.sh b/tomcat-base/src/shared/main/bash/entrypoint/docker-entrypoint.d/90-logging-env-vars.sh new file mode 100755 index 00000000..856e3028 --- /dev/null +++ b/tomcat-base/src/shared/main/bash/entrypoint/docker-entrypoint.d/90-logging-env-vars.sh @@ -0,0 +1,87 @@ +#!/bin/bash +set -e + +# This script generates a complete log4j configuration file based on +# LOG_LEVEL_ environment variables and tells the Java process to use it. + +function log() { + echo '{ "timestamp" : '"$(date '+%s')"' ,"severity" : "INFO", "type" : "entrypoint","component" : "docker-entrypoint" ,"fullMessage" : "'"$1"'"}' +} + +if [ "$LOG4J_VERSION" = "1" ]; then + FNAME="log4j.properties" +else + FNAME="log4j2.properties" +fi + +LOG_BASE_FILE="/log4j.properties.base" +LOG_CONFIG_FILE="/usr/local/tomcat/webapps/alfresco/WEB-INF/classes/${FNAME}" + +log "Generating log config at: ${LOG_CONFIG_FILE}" +log "Using Log4j Version: ${LOG4J_VERSION}" + +# Start with the base file +cp "${LOG_BASE_FILE}" "${LOG_CONFIG_FILE}" + +# Now generate logger configs from env variables +# We need to pre-process for log4j2's 'loggers = name1,name2' syntax +logger_list="" +logger_configs="" + +for var in $(env); do + if echo "$var" | grep -q "^LOG_LEVEL_"; then + var_name=$(echo "$var" | cut -d= -f1) + var_value=$(echo "$var" | cut -d= -f2) + + # Convert LOG_LEVEL_org_alfresco -> org.alfresco + logger_name=$(echo "$var_name" | sed 's/LOG_LEVEL_//' | sed 's/_/./g') + + if [ -n "$logger_name" ] && [ -n "$var_value" ]; then + log "Applying log level: ${logger_name}=${var_value}" + + if [ "$LOG4J_VERSION" = "1" ]; then + # Log4j 1.x syntax + logger_configs="${logger_configs}log4j.logger.${logger_name}=${var_value}\n" + else + # Log4j 2.x syntax + logger_list="${logger_list}${logger_name}," + # Add the logger definition + logger_configs="${logger_configs}logger.${logger_name}.name = ${logger_name}\n" + logger_configs="${logger_configs}logger.${logger_name}.level = ${var_value}\n" + fi + fi + fi +done + +# Add default appender and root configuration +# TODO: Specify a base configuration file somewhere in the project instead and use that + +if [ "$LOG4J_VERSION" = "1" ]; then + # --- Log4j 1.x Config --- + + # Add the custom loggers + echo -e "\n# Custom Log Levels" >> "${LOG_CONFIG_FILE}" + echo -e "${logger_configs}" >> "${LOG_CONFIG_FILE}" + + # Tell Java to use this file + JAVA_OPTS="$JAVA_OPTS -Dlog4j.configuration=file://${LOG_CONFIG_FILE}" +else + # --- Log4j 2.x Config --- + + # Add the custom loggers + echo -e "\n# Custom Log Levels" >> "${LOG_CONFIG_FILE}" + if [ -n "$logger_list" ]; then + # Add the 'loggers = name1,name2' list (stripping last comma) + echo "loggers = ${logger_list%,}" >> "${LOG_CONFIG_FILE}" + # Add the logger definitions + echo -e "${logger_configs}" >> "${LOG_CONFIG_FILE}" + fi + + # Tell Java to use this file + JAVA_OPTS="$JAVA_OPTS -Dlog4j.configurationFile=${LOG_CONFIG_FILE}" +fi + +# Export new Java options with updated log config +export JAVA_OPTS + +log "Log configuration complete. JAVA_OPTS updated." \ No newline at end of file diff --git a/tomcat-base/src/shared/main/bash/entrypoint/docker-entrypoint.sh b/tomcat-base/src/shared/main/bash/entrypoint/docker-entrypoint.sh index 9987d564..d6a0aa8b 100755 --- a/tomcat-base/src/shared/main/bash/entrypoint/docker-entrypoint.sh +++ b/tomcat-base/src/shared/main/bash/entrypoint/docker-entrypoint.sh @@ -5,12 +5,12 @@ DIR=/docker-entrypoint.d if [[ -d "$DIR" ]] then for SCRIPT in ${DIR}/*; do - echo '{ "timestamp" : '"$(date '+%s')"' ,"severity" : "INFO", "type" : "application","component" : "docker-entrypoint" ,"fullMessage" : "> Executing'"${SCRIPT}"'"}' + echo '{ "timestamp" : '"$(date '+%s')"' ,"severity" : "INFO", "type" : "entrypoint","component" : "docker-entrypoint" ,"fullMessage" : "> Executing'"${SCRIPT}"'"}' . "$SCRIPT" done fi -echo '{ "timestamp" : '"$(date '+%s')"' ,"severity" : "INFO", "type" : "application","component" : "docker-entrypoint" ,"fullMessage" : "'"> Starting CMD: $@"'"}' -echo '{ "timestamp" : '"$(date '+%s')"' ,"severity" : "INFO", "type" : "application","component" : "docker-entrypoint" ,"fullMessage" : "> exec '"$(eval eval echo $@)"'"}' +echo '{ "timestamp" : '"$(date '+%s')"' ,"severity" : "INFO", "type" : "entrypoint","component" : "docker-entrypoint" ,"fullMessage" : "'"> Starting CMD: $@"'"}' +echo '{ "timestamp" : '"$(date '+%s')"' ,"severity" : "INFO", "type" : "entrypoint","component" : "docker-entrypoint" ,"fullMessage" : "> exec '"$(eval eval echo $@)"'"}' # first 'eval' expands variables (like $JAVA_OPTS) in $@ # second 'eval' flattens arguments, so that $JAVA_OPTS expanded into is not seen as a single argument (DOCKER-136) # which enables us to use exec-form with $JAVA_OPTS support: