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}