Author: ceki
Date: Fri Nov 28 23:29:14 2008
New Revision: 2038

Added:
   logback/trunk/logback-classic/src/test/input/joran/loggerLevelByProperty.xml
   logback/trunk/logback-classic/src/test/input/joran/rootLevelByProperty.xml
Modified:
   
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LevelAction.java
   
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LoggerAction.java
   
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/RootLoggerAction.java
   logback/trunk/logback-classic/src/test/input/joran/evaluatorFilter.xml
   logback/trunk/logback-classic/src/test/input/joran/ignore.xml
   logback/trunk/logback-classic/src/test/input/joran/levelFilter.xml
   logback/trunk/logback-classic/src/test/input/joran/simpleLevel.xml
   
logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java

Log:
- Added support variable substitution for the level attribute in <logger> and 
<root> elements
- relevant test cases

Modified: 
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LevelAction.java
==============================================================================
--- 
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LevelAction.java
    (original)
+++ 
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LevelAction.java
    Fri Nov 28 23:29:14 2008
@@ -42,7 +42,7 @@
 
     String loggerName = l.getName();
 
-    String levelStr = attributes.getValue(ActionConst.VALUE_ATTR);
+    String levelStr = ec.subst(attributes.getValue(ActionConst.VALUE_ATTR));
     //addInfo("Encapsulating logger name is [" + loggerName
     //    + "], level value is  [" + levelStr + "].");
 

Modified: 
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LoggerAction.java
==============================================================================
--- 
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LoggerAction.java
   (original)
+++ 
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LoggerAction.java
   Fri Nov 28 23:29:14 2008
@@ -50,7 +50,8 @@
 
     logger = loggerContext.getLogger(loggerName);
 
-    String levelStr = attributes.getValue(LEVEL_ATTRIBUTE);
+    String levelStr =  ec.subst(attributes.getValue(LEVEL_ATTRIBUTE));
+    
     if (!OptionHelper.isEmpty(levelStr)) {
       if (ActionConst.INHERITED.equalsIgnoreCase(levelStr)
           || ActionConst.NULL.equalsIgnoreCase(levelStr)) {

Modified: 
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/RootLoggerAction.java
==============================================================================
--- 
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/RootLoggerAction.java
       (original)
+++ 
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/RootLoggerAction.java
       Fri Nov 28 23:29:14 2008
@@ -1,7 +1,7 @@
 /**
- * LOGBack: the generic, reliable, fast and flexible logging framework.
+ * Logback: the generic, reliable, fast and flexible logging framework.
  * 
- * Copyright (C) 1999-2006, QOS.ch
+ * Copyright (C) 2000-2008, QOS.ch
  * 
  * This library is free software, you can redistribute it and/or modify it 
under
  * the terms of the GNU Lesser General Public License as published by the Free
@@ -30,7 +30,7 @@
     LoggerContext loggerContext = (LoggerContext) this.context;
     root = loggerContext.getLogger(LoggerContext.ROOT_NAME);
 
-    String levelStr = attributes.getValue(ActionConst.LEVEL_ATTRIBUTE);
+    String levelStr =  
ec.subst(attributes.getValue(ActionConst.LEVEL_ATTRIBUTE));
     if (!OptionHelper.isEmpty(levelStr)) {
       Level level = Level.toLevel(levelStr);
       addInfo("Setting level of ROOT logger to " + level);

Modified: logback/trunk/logback-classic/src/test/input/joran/evaluatorFilter.xml
==============================================================================
--- logback/trunk/logback-classic/src/test/input/joran/evaluatorFilter.xml      
(original)
+++ logback/trunk/logback-classic/src/test/input/joran/evaluatorFilter.xml      
Fri Nov 28 23:29:14 2008
@@ -13,8 +13,7 @@
     </filter>
   </appender>
 
-  <root>
-    <level value="debug" />
+  <root level="debug">
     <appender-ref ref="LIST" />
   </root>
 </configuration>
\ No newline at end of file

Modified: logback/trunk/logback-classic/src/test/input/joran/ignore.xml
==============================================================================
--- logback/trunk/logback-classic/src/test/input/joran/ignore.xml       
(original)
+++ logback/trunk/logback-classic/src/test/input/joran/ignore.xml       Fri Nov 
28 23:29:14 2008
@@ -12,8 +12,7 @@
     </layout>
   </appender>
   
-  <root>
-    <level value="DEBUG" />
+  <root level="DEBUG">
     <appender-ref ref="CONSOLE" />
   </root>
   

Modified: logback/trunk/logback-classic/src/test/input/joran/levelFilter.xml
==============================================================================
--- logback/trunk/logback-classic/src/test/input/joran/levelFilter.xml  
(original)
+++ logback/trunk/logback-classic/src/test/input/joran/levelFilter.xml  Fri Nov 
28 23:29:14 2008
@@ -1,7 +1,6 @@
 <configuration>
 
-  <appender name="LIST"
-            class="ch.qos.logback.core.read.ListAppender">
+  <appender name="LIST" class="ch.qos.logback.core.read.ListAppender">
 
     <filter class="ch.qos.logback.classic.filter.LevelFilter">
       <OnMatch>DENY</OnMatch>
@@ -9,8 +8,7 @@
     </filter>
   </appender>
 
-  <root>
-    <level value="debug" />
+  <root level="debug">
     <appender-ref ref="LIST" />
   </root>
 </configuration>
\ No newline at end of file

Added: 
logback/trunk/logback-classic/src/test/input/joran/loggerLevelByProperty.xml
==============================================================================
--- (empty file)
+++ 
logback/trunk/logback-classic/src/test/input/joran/loggerLevelByProperty.xml    
    Fri Nov 28 23:29:14 2008
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE configuration>
+
+<configuration debug="false">
+
+  <appender name="LIST" class="ch.qos.logback.core.read.ListAppender" />
+
+ <logger name="ch.qos.logback.classic.joran" level="${logback.level}" />
+
+  <root level="ERROR">
+    <appender-ref ref="LIST" />
+  </root>
+
+</configuration>

Added: 
logback/trunk/logback-classic/src/test/input/joran/rootLevelByProperty.xml
==============================================================================
--- (empty file)
+++ logback/trunk/logback-classic/src/test/input/joran/rootLevelByProperty.xml  
Fri Nov 28 23:29:14 2008
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE configuration>
+
+<configuration debug="false">
+
+  <appender name="LIST" class="ch.qos.logback.core.read.ListAppender" />
+
+  <root level="${logback.level}">
+  
+    <appender-ref ref="LIST" />
+  </root>
+
+</configuration>

Modified: logback/trunk/logback-classic/src/test/input/joran/simpleLevel.xml
==============================================================================
--- logback/trunk/logback-classic/src/test/input/joran/simpleLevel.xml  
(original)
+++ logback/trunk/logback-classic/src/test/input/joran/simpleLevel.xml  Fri Nov 
28 23:29:14 2008
@@ -3,17 +3,12 @@
 
 <configuration debug="false">
 
-  <appender name="LIST" class="ch.qos.logback.core.read.ListAppender"/>
-    
-     
-   <logger name="ch.qos.logback.classic.joran">
-    <level value="INFO" />
-  </logger>
+  <appender name="LIST" class="ch.qos.logback.core.read.ListAppender" />
 
-  <root>
-    <level value="DEBUG" />
+  <logger name="ch.qos.logback.classic.joran" level="INFO" />
+
+  <root level="DEBUG">
     <appender-ref ref="LIST" />
   </root>
-  
+
 </configuration>
-  
\ No newline at end of file

Modified: 
logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java
==============================================================================
--- 
logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java
 (original)
+++ 
logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java
 Fri Nov 28 23:29:14 2008
@@ -67,6 +67,36 @@
   }
 
   @Test
+  public void testRootLoggerLevelSettingBySystemProperty() throws 
JoranException {
+    String propertyName = "logback.level";
+   
+    System.setProperty(propertyName, "INFO");
+    configure(TeztConstants.TEST_DIR_PREFIX + 
"input/joran/rootLevelByProperty.xml");
+    StatusPrinter.print(loggerContext);
+    ListAppender listAppender = (ListAppender) root.getAppender("LIST");
+    assertEquals(0, listAppender.list.size());
+    String msg = "hello world";
+    logger.debug(msg);
+    assertEquals(0, listAppender.list.size());
+    System.clearProperty(propertyName);
+  }
+  
+  @Test
+  public void testLoggerLevelSettingBySystemProperty() throws JoranException {
+    String propertyName = "logback.level";
+   
+    System.setProperty(propertyName, "DEBUG");
+    configure(TeztConstants.TEST_DIR_PREFIX + 
"input/joran/loggerLevelByProperty.xml");
+    StatusPrinter.print(loggerContext);
+    ListAppender listAppender = (ListAppender) root.getAppender("LIST");
+    assertEquals(0, listAppender.list.size());
+    String msg = "hello world";
+    logger.debug(msg);
+    assertEquals(1, listAppender.list.size());
+    System.clearProperty(propertyName);
+  }
+  
+  @Test
   public void testStatusListener() throws JoranException {
     configure(TeztConstants.TEST_DIR_PREFIX + 
"input/joran/statusListener.xml");
 
_______________________________________________
logback-dev mailing list
[email protected]
http://qos.ch/mailman/listinfo/logback-dev

Reply via email to