[logback-dev] svn commit: r1157 - in logback/trunk: logback-examples/src/main/java/chapter3 logback-site/src/site/xdocTemplates/manual

noreply.seb at qos.ch noreply.seb at qos.ch
Thu Jan 4 18:48:33 CET 2007


Author: seb
Date: Thu Jan  4 18:48:33 2007
New Revision: 1157

Added:
   logback/trunk/logback-examples/src/main/java/chapter3/variableSubstitution1.xml
   logback/trunk/logback-examples/src/main/java/chapter3/variableSubstitution2.xml
   logback/trunk/logback-examples/src/main/java/chapter3/variableSubstitution3.xml
   logback/trunk/logback-examples/src/main/java/chapter3/variableSubstitution4.xml
   logback/trunk/logback-examples/src/main/java/chapter3/variables1.properties
   logback/trunk/logback-examples/src/main/java/chapter3/variables2.properties
Modified:
   logback/trunk/logback-examples/src/main/java/chapter3/restricted.xml
   logback/trunk/logback-site/src/site/xdocTemplates/manual/joran.xml

Log:
On going work on chapter 3

Modified: logback/trunk/logback-examples/src/main/java/chapter3/restricted.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter3/restricted.xml	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter3/restricted.xml	Thu Jan  4 18:48:33 2007
@@ -11,8 +11,7 @@
 		</rollingPolicy>
 		<layout class="ch.qos.logback.classic.PatternLayout">
 			<Pattern>
-				%date %level [%thread] %logger{10} [%file : %line]
-				%msg%n
+				%date %level [%thread] %logger{10} [%file : %line] %msg%n
 			</Pattern>
 		</layout>
 	</appender>

Added: logback/trunk/logback-examples/src/main/java/chapter3/variableSubstitution1.xml
==============================================================================
--- (empty file)
+++ logback/trunk/logback-examples/src/main/java/chapter3/variableSubstitution1.xml	Thu Jan  4 18:48:33 2007
@@ -0,0 +1,26 @@
+<configuration>
+
+	<substitutionProperty name="user.home.dir"
+		value="/Users/seb" />
+
+	<appender name="FILE"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${user.home.dir}/myApp.log</file>
+		<rollingPolicy
+			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<FileNamePattern>
+				myApp-%d{yyyy-MM-dd-HH}.log
+			</FileNamePattern>
+		</rollingPolicy>
+		<layout class="ch.qos.logback.classic.PatternLayout">
+			<Pattern>
+				%date %level [%thread] %logger{10} [%file : %line] %msg%n
+			</Pattern>
+		</layout>
+	</appender>
+
+	<root>
+		<level value="debug" />
+		<appender-ref ref="FILE" />
+	</root>
+</configuration>
\ No newline at end of file

Added: logback/trunk/logback-examples/src/main/java/chapter3/variableSubstitution2.xml
==============================================================================
--- (empty file)
+++ logback/trunk/logback-examples/src/main/java/chapter3/variableSubstitution2.xml	Thu Jan  4 18:48:33 2007
@@ -0,0 +1,23 @@
+<configuration>
+
+	<appender name="FILE"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${user.home.dir}/myApp.log</file>
+		<rollingPolicy
+			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<FileNamePattern>
+				myApp-%d{yyyy-MM-dd-HH}.log
+			</FileNamePattern>
+		</rollingPolicy>
+		<layout class="ch.qos.logback.classic.PatternLayout">
+			<Pattern>
+				%date %level [%thread] %logger{10} [%file : %line] %msg%n
+			</Pattern>
+		</layout>
+	</appender>
+
+	<root>
+		<level value="debug" />
+		<appender-ref ref="FILE" />
+	</root>
+</configuration>
\ No newline at end of file

Added: logback/trunk/logback-examples/src/main/java/chapter3/variableSubstitution3.xml
==============================================================================
--- (empty file)
+++ logback/trunk/logback-examples/src/main/java/chapter3/variableSubstitution3.xml	Thu Jan  4 18:48:33 2007
@@ -0,0 +1,25 @@
+<configuration>
+
+	<substitutionProperty file="variables1.properties" />
+
+	<appender name="FILE"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${user.home.dir}/myApp.log</file>
+		<rollingPolicy
+			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<FileNamePattern>
+				myApp-%d{yyyy-MM-dd-HH}.log
+			</FileNamePattern>
+		</rollingPolicy>
+		<layout class="ch.qos.logback.classic.PatternLayout">
+			<Pattern>
+				%date %level [%thread] %logger{10} [%file : %line] %msg%n
+			</Pattern>
+		</layout>
+	</appender>
+
+	<root>
+		<level value="debug" />
+		<appender-ref ref="FILE" />
+	</root>
+</configuration>
\ No newline at end of file

Added: logback/trunk/logback-examples/src/main/java/chapter3/variableSubstitution4.xml
==============================================================================
--- (empty file)
+++ logback/trunk/logback-examples/src/main/java/chapter3/variableSubstitution4.xml	Thu Jan  4 18:48:33 2007
@@ -0,0 +1,25 @@
+<configuration>
+
+	<substitutionProperty file="variables2.properties" />
+
+	<appender name="FILE"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${destination}</file>
+		<rollingPolicy
+			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<FileNamePattern>
+				myApp-%d{yyyy-MM-dd-HH}.log
+			</FileNamePattern>
+		</rollingPolicy>
+		<layout class="ch.qos.logback.classic.PatternLayout">
+			<Pattern>
+				%date %level [%thread] %logger{10} [%file : %line] %msg%n
+			</Pattern>
+		</layout>
+	</appender>
+
+	<root>
+		<level value="debug" />
+		<appender-ref ref="FILE" />
+	</root>
+</configuration>
\ No newline at end of file

Added: logback/trunk/logback-examples/src/main/java/chapter3/variables1.properties
==============================================================================
--- (empty file)
+++ logback/trunk/logback-examples/src/main/java/chapter3/variables1.properties	Thu Jan  4 18:48:33 2007
@@ -0,0 +1 @@
+user.home.dir=/Users/seb
\ No newline at end of file

Added: logback/trunk/logback-examples/src/main/java/chapter3/variables2.properties
==============================================================================
--- (empty file)
+++ logback/trunk/logback-examples/src/main/java/chapter3/variables2.properties	Thu Jan  4 18:48:33 2007
@@ -0,0 +1,3 @@
+user.home.dir=/Users/seb
+file=myApp.log
+destination=${user.home.dir}/${file}
\ No newline at end of file

Modified: logback/trunk/logback-site/src/site/xdocTemplates/manual/joran.xml
==============================================================================
--- logback/trunk/logback-site/src/site/xdocTemplates/manual/joran.xml	(original)
+++ logback/trunk/logback-site/src/site/xdocTemplates/manual/joran.xml	Thu Jan  4 18:48:33 2007
@@ -1222,37 +1222,43 @@
 substitution is similar to that of Unix shells. The string between an 
 opening <em>${</em> and closing <em>}</em> is interpreted as a key. 
 The value of the substituted variable can be defined as a system property 
-or in the configuration file itself. The value of the key 
-is first searched in the system properties, and if not found there, 
-it is then searched in the configuration file being parsed. 
+in the configuration file itself or in a separate file linked to the 
+configuration file. The value of the key 
+is first searched in configuration file or linked properties file, 
+and if not found there, it is then searched in system properties. 
 The corresponding value replaces <em>${aKey}</em> sequence. For example, 
 if <em>java.home</em> system property is set to <em>/home/xyz</em>, 
 then every occurrence of the sequence <em>${java.home}</em> will be 
 interpreted as <em>/home/xyz</em>.
 </p>
 
-<em>Example 3.12: Variable substitution (logback-examples/src/main/java/chapter3/variableSubstitution.xml)</em>
-<div class="source"><pre>&lt;configuration debug="true">
+<p>
+The first example shows a declared property at the beginning of the 
+configuration file. It is then used further down the file to specify
+the place to create the output file.
+</p>
+
+<em>Example 3.12: Simple Variable substitution (logback-examples/src/main/java/chapter3/variableSubstitution1.xml)</em>
+<div class="source"><pre>&lt;configuration>
+
+  <b>&lt;substitutionProperty name="user.home.dir" value="/Users/seb" /></b>
 
   &lt;appender name="FILE"
     class="ch.qos.logback.core.rolling.RollingFileAppender">
-    &lt;file><b>${filename}</b>&lt;/file>
-
+    <b>&lt;file>${user.home.dir}/myApp.log&lt;/file></b>
     &lt;rollingPolicy
       class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
       &lt;FileNamePattern>
-        <b>${filename}-%d{yyyy-MM-dd-HH-mm}</b>
+        myApp-%d{yyyy-MM-dd-HH}.log
       &lt;/FileNamePattern>
     &lt;/rollingPolicy>
-
     &lt;layout class="ch.qos.logback.classic.PatternLayout">
       &lt;Pattern>
-        %relative [%thread] %level %logger{20} %msg%n
+        %date %level [%thread] %logger{10} [%file : %line] %msg%n
       &lt;/Pattern>
     &lt;/layout>
   &lt;/appender>
 
-
   &lt;root>
     &lt;level value="debug" />
     &lt;appender-ref ref="FILE" />
@@ -1260,26 +1266,125 @@
 &lt;/configuration></pre></div>
 
 
+<p>
+The next example shows the use of a System property to achieve the same result. The
+property is not declared anywhere, thus logback will look for it in the System properties. 
+</p>
 
+<em>Example 3.13: System Variable substitution (logback-examples/src/main/java/chapter3/variableSubstitution2.xml)</em>
+<div class="source"><pre>&lt;configuration>
 
+  &lt;appender name="FILE"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <b>&lt;file>${user.home.dir}/myApp.log&lt;/file></b>
+    &lt;rollingPolicy
+      class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+      &lt;FileNamePattern>
+        myApp-%d{yyyy-MM-dd-HH}.log
+      &lt;/FileNamePattern>
+    &lt;/rollingPolicy>
+    &lt;layout class="ch.qos.logback.classic.PatternLayout">
+      &lt;Pattern>
+        %date %level [%thread] %logger{10} [%file : %line] %msg%n
+      &lt;/Pattern>
+    &lt;/layout>
+  &lt;/appender>
 
+  &lt;root>
+    &lt;level value="debug" />
+    &lt;appender-ref ref="FILE" />
+  &lt;/root>
+&lt;/configuration></pre></div>
 
+<p>
+When many variables are used, it is often more convenient to create
+a separate file that will contain all the variables. Here is how one can
+do such a setup.
+</p>
 
+<em>Example 3.14: Variable substitution using a separate file (logback-examples/src/main/java/chapter3/variableSubstitution3.xml)</em>
+<div class="source"><pre>&lt;configuration>
 
+  &lt;substitutionProperty file="variables1.properties" />
 
+  &lt;appender name="FILE"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <b>&lt;file>${user.home.dir}/myApp.log&lt;/file></b>
+    &lt;rollingPolicy
+      class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+      &lt;FileNamePattern>
+        myApp-%d{yyyy-MM-dd-HH}.log
+      &lt;/FileNamePattern>
+    &lt;/rollingPolicy>
+    &lt;layout class="ch.qos.logback.classic.PatternLayout">
+      &lt;Pattern>
+        %date %level [%thread] %logger{10} [%file : %line] %msg%n
+      &lt;/Pattern>
+    &lt;/layout>
+  &lt;/appender>
 
+  &lt;root>
+    &lt;level value="debug" />
+    &lt;appender-ref ref="FILE" />
+  &lt;/root>
+&lt;/configuration></pre></div>
 
+<p>
+This configuration file contains a link to another file called <em>variables.properties</em>.
+The variables contained in that other file will be read and will thus be available to the 
+logback configuration file. Here is what the <em>variable.properties</em> file looks like.
+</p>
 
+<em>Example 3.15: Variable file (logback-examples/src/main/java/chapter3/variables1.properties)</em>
+<div class="source"><pre>user.home.dir=/Users/seb</pre></div>
 
+<p>
+Nothing more is needed to declare the variable.
+</p>
 
+<p>
+Recursive subsitution is also available. If the user wants to use variables to
+specify not only the destination directory but also the file name, here is what she
+would write in her <em>variables.properties</em> file.
+</p>
 
 
+<em>Example 3.16: Recursive use of variables (logback-examples/src/main/java/chapter3/variables2.properties)</em>
+<div class="source"><pre>user.home.dir=/Users/seb
+file=myApp.log
+destination=${user.home.dir}/${file}</pre></div>
+
+<p>
+In the configuration file, only the last variable, <em>${destination}</em> will
+be used, as shown below:
+</p>
 
+<em>Example 3.17: Variable substitution using a separate file (logback-examples/src/main/java/chapter3/variableSubstitution4.xml)</em>
+<div class="source"><pre>&lt;configuration>
 
+  &lt;substitutionProperty file="variables1.properties" />
 
+  &lt;appender name="FILE"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <b>&lt;file>${destination}&lt;/file></b>
+    &lt;rollingPolicy
+      class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+      &lt;FileNamePattern>
+        myApp-%d{yyyy-MM-dd-HH}.log
+      &lt;/FileNamePattern>
+    &lt;/rollingPolicy>
+    &lt;layout class="ch.qos.logback.classic.PatternLayout">
+      &lt;Pattern>
+        %date %level [%thread] %logger{10} [%file : %line] %msg%n
+      &lt;/Pattern>
+    &lt;/layout>
+  &lt;/appender>
 
-
-
+  &lt;root>
+    &lt;level value="debug" />
+    &lt;appender-ref ref="FILE" />
+  &lt;/root>
+&lt;/configuration></pre></div>
 
 
 



More information about the logback-dev mailing list