diff --git a/jetty-centralized-logging/pom.xml b/jetty-centralized-logging/pom.xml index 9f9a87fb00f..2f79f7f379d 100644 --- a/jetty-centralized-logging/pom.xml +++ b/jetty-centralized-logging/pom.xml @@ -28,6 +28,27 @@ jetty-centralized-logging Jetty :: Centralized Logging jar + + + + org.apache.maven.plugins + maven-assembly-plugin + + + package + + single + + + + config.xml + + + + + + + org.eclipse.jetty diff --git a/jetty-centralized-logging/src/main/config/etc/centralized-logging/testing.properties b/jetty-centralized-logging/src/main/config/etc/centralized-logging/testing.properties new file mode 100644 index 00000000000..0e9f94d0c18 --- /dev/null +++ b/jetty-centralized-logging/src/main/config/etc/centralized-logging/testing.properties @@ -0,0 +1,8 @@ +root.level=INFO +root.appenders=roll + +appender.roll.class=org.eclipse.jetty.logging.impl.RollingFileAppender +appender.roll.filename=${jetty.home}/logs/central.log +appender.roll.append=true +appender.roll.retainDays=120 + diff --git a/jetty-centralized-logging/src/main/config/etc/jetty-centralized-logging.xml b/jetty-centralized-logging/src/main/config/etc/jetty-centralized-logging.xml new file mode 100644 index 00000000000..92843131dea --- /dev/null +++ b/jetty-centralized-logging/src/main/config/etc/jetty-centralized-logging.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + /etc/centralized-logging/logging.properties + + + + diff --git a/jetty-centralized-logging/src/main/java/org/eclipse/jetty/logging/PropertyExpansion.java b/jetty-centralized-logging/src/main/java/org/eclipse/jetty/logging/PropertyExpansion.java new file mode 100644 index 00000000000..44a8bfc6202 --- /dev/null +++ b/jetty-centralized-logging/src/main/java/org/eclipse/jetty/logging/PropertyExpansion.java @@ -0,0 +1,45 @@ +// ======================================================================== +// Copyright (c) Webtide LLC +// ------------------------------------------------------------------------ +// All rights reserved. This program and the accompanying materials +// are made available under the terms of the Eclipse Public License v1.0 +// and Apache License v2.0 which accompanies this distribution. +// +// The Eclipse Public License is available at +// http://www.eclipse.org/legal/epl-v10.html +// +// The Apache License v2.0 is available at +// http://www.apache.org/licenses/LICENSE-2.0.txt +// +// You may elect to redistribute this code under either of these licenses. +// ======================================================================== +package org.eclipse.jetty.logging; + +/** + * Basic System Property string expansion "${user.home}" + */ +public class PropertyExpansion +{ + public static String expand(String s) + { + int i1 = 0; + int i2 = 0; + + i1 = 0; + i2 = 0; + while (s != null) + { + i1 = s.indexOf("${",i2); + if (i1 < 0) + break; + i2 = s.indexOf("}",i1 + 2); + if (i2 < 0) + break; + String name = s.substring(i1 + 2,i2); + String property = System.getProperty(name,"${" + name + "}"); + s = s.substring(0,i1) + property + s.substring(i2 + 1); + } + + return s; + } +} diff --git a/jetty-centralized-logging/src/main/java/org/eclipse/jetty/logging/impl/RollingFileAppender.java b/jetty-centralized-logging/src/main/java/org/eclipse/jetty/logging/impl/RollingFileAppender.java index e15626e5ab7..74af571f3c6 100644 --- a/jetty-centralized-logging/src/main/java/org/eclipse/jetty/logging/impl/RollingFileAppender.java +++ b/jetty-centralized-logging/src/main/java/org/eclipse/jetty/logging/impl/RollingFileAppender.java @@ -15,10 +15,13 @@ // ======================================================================== package org.eclipse.jetty.logging.impl; +import java.io.File; +import java.io.FileNotFoundException; import java.io.IOException; import java.io.PrintStream; import java.util.TimeZone; +import org.eclipse.jetty.logging.PropertyExpansion; import org.eclipse.jetty.util.RolloverFileOutputStream; /** @@ -28,6 +31,7 @@ public class RollingFileAppender implements Appender { private RolloverFileOutputStream out; private String filename; + private File file; private boolean append = true; private int retainDays = 31; private TimeZone zone = TimeZone.getDefault(); @@ -98,9 +102,27 @@ public class RollingFileAppender implements Appender return append; } + public File getFile() + { + return file; + } + public void open() throws IOException { - out = new RolloverFileOutputStream(filename,append,retainDays,zone,dateFormat,backupFormat); + file = new File(PropertyExpansion.expand(filename)); + + File logDir = file.getParentFile(); + if (!logDir.exists()) + { + throw new FileNotFoundException("Logging directory does not exist: " + logDir); + } + + if (!logDir.isDirectory()) + { + throw new FileNotFoundException("Logging path exist, but is not a directory: " + logDir); + } + + out = new RolloverFileOutputStream(file.getAbsolutePath(),append,retainDays,zone,dateFormat,backupFormat); } public void setAppend(boolean append) diff --git a/jetty-centralized-logging/src/test/java/org/eclipse/jetty/logging/impl/ConfiguredLoggerTest.java b/jetty-centralized-logging/src/test/java/org/eclipse/jetty/logging/impl/ConfiguredLoggerTest.java index 09ac9a2edf0..3fdc9907248 100644 --- a/jetty-centralized-logging/src/test/java/org/eclipse/jetty/logging/impl/ConfiguredLoggerTest.java +++ b/jetty-centralized-logging/src/test/java/org/eclipse/jetty/logging/impl/ConfiguredLoggerTest.java @@ -127,12 +127,13 @@ public class ConfiguredLoggerTest extends TestCase File testLoggingDir = new File(MavenTestingUtils.getTargetTestingDir(this),"logs"); testLoggingDir.mkdirs(); - File logFile = new File(testLoggingDir,"rolling.log"); + + System.setProperty("test.dir",testLoggingDir.getAbsolutePath()); props.setProperty("root.level","DEBUG"); props.setProperty("root.appenders","roll"); props.setProperty("appender.roll.class",RollingFileAppender.class.getName()); - props.setProperty("appender.roll.filename",logFile.getAbsolutePath()); + props.setProperty("appender.roll.filename","${test.dir}/rolling.log"); props.setProperty("appender.roll.append","true"); props.setProperty("appender.roll.retainDays","120"); props.setProperty("appender.roll.zone","GMT"); @@ -144,8 +145,10 @@ public class ConfiguredLoggerTest extends TestCase assertSeverityLevel(root,Severity.DEBUG); assertAppenders(root,RollingFileAppender.class); + File logFile = new File(testLoggingDir,"rolling.log"); + RollingFileAppender actualAppender = (RollingFileAppender)root.getAppenders().get(0); - assertEquals("RollingFileAppender.filename",logFile.getAbsolutePath(),actualAppender.getFilename()); + assertEquals("RollingFileAppender.filename",logFile.getAbsolutePath(),actualAppender.getFile().getAbsolutePath()); assertEquals("RollingFileAppender.append",true,actualAppender.isAppend()); assertEquals("RollingFileAppender.retainDays",120,actualAppender.getRetainDays()); assertEquals("RollingFileAppender.zone","GMT",actualAppender.getZone().getID()); diff --git a/jetty-distribution/pom.xml b/jetty-distribution/pom.xml index 8f5c1e3e5a9..a0b375597d8 100644 --- a/jetty-distribution/pom.xml +++ b/jetty-distribution/pom.xml @@ -29,45 +29,46 @@ - org.apache.maven.plugins - maven-antrun-plugin - - - generate-resources - - run - - - - - - - - - - - - + org.apache.maven.plugins + maven-antrun-plugin + + + generate-resources + + run + + + + + + + + + + + + + - org.apache.maven.plugins - maven-remote-resources-plugin - - - generate-resources - - process - - - - org.eclipse.jetty.toolchain:jetty-artifact-remote-resources:1.0 - org.eclipse.jetty.toolchain:jetty-distribution-remote-resources:1.1 - - ${assembly.directory} - - - - + org.apache.maven.plugins + maven-remote-resources-plugin + + + generate-resources + + process + + + + org.eclipse.jetty.toolchain:jetty-artifact-remote-resources:1.0 + org.eclipse.jetty.toolchain:jetty-distribution-remote-resources:1.1 + + ${assembly.directory} + + + + maven-dependency-plugin 2.1 @@ -150,6 +151,16 @@ ** ${assembly.directory} + + org.eclipse.jetty + jetty-centralized-logging + ${project.version} + config + jar + true + ** + ${assembly.directory} + org.eclipse.jetty jetty-plus @@ -182,7 +193,7 @@ - + copy generate-resources @@ -190,7 +201,7 @@ copy - + org.eclipse.jetty jetty-util @@ -272,7 +283,7 @@ ** ${assembly.directory}/lib - + org.eclipse.jetty jetty-webapp-verifier ${project.version} @@ -281,6 +292,15 @@ ** ${assembly.directory}/lib + + org.eclipse.jetty + jetty-centralized-logging + ${project.version} + jar + true + ** + ${assembly.directory}/lib/centralized-logging + org.eclipse.jetty jetty-deploy @@ -289,7 +309,7 @@ true ** ${assembly.directory}/lib - + org.eclipse.jetty jetty-jmx @@ -298,7 +318,7 @@ true ** ${assembly.directory}/lib - + org.eclipse.jetty jetty-rewrite @@ -334,7 +354,7 @@ true ** ${assembly.directory}/lib - + org.eclipse.jetty jetty-jndi @@ -361,7 +381,7 @@ true ** ${assembly.directory}/lib - + org.eclipse.jetty jetty-continuation @@ -370,7 +390,7 @@ true ** ${assembly.directory}/lib - + org.eclipse.jetty test-jetty-webapp @@ -431,7 +451,7 @@ --> - + org.apache.maven.plugins maven-assembly-plugin @@ -455,34 +475,34 @@ org.eclipse.jetty - jetty-deploy - ${project.version} + jetty-deploy + ${project.version} org.eclipse.jetty - jetty-rewrite - ${project.version} + jetty-rewrite + ${project.version} org.eclipse.jetty - jetty-ajp - ${project.version} + jetty-ajp + ${project.version} org.eclipse.jetty - jetty-annotations - ${project.version} + jetty-annotations + ${project.version} org.eclipse.jetty - test-jetty-webapp - war - ${project.version} + test-jetty-webapp + war + ${project.version} org.eclipse.jetty - jetty-jmx - ${project.version} + jetty-jmx + ${project.version} org.eclipse.jetty @@ -491,28 +511,28 @@ org.eclipse.jetty - jetty-plus - ${project.version} + jetty-plus + ${project.version} - org.eclipse.jetty - jetty-client - ${project.version} + org.eclipse.jetty + jetty-client + ${project.version} - org.eclipse.jetty - jetty-continuation - ${project.version} + org.eclipse.jetty + jetty-continuation + ${project.version} - org.eclipse.jetty - jetty-start - ${project.version} + org.eclipse.jetty + jetty-start + ${project.version} - org.eclipse.jetty - jetty-policy - ${project.version} + org.eclipse.jetty + jetty-policy + ${project.version}