Skip to content
  1. Dec 22, 2008
  2. Dec 19, 2008
  3. Dec 18, 2008
  4. Dec 17, 2008
  5. Dec 12, 2008
    • Ceki Gulcu's avatar
      · b8af298c
      Ceki Gulcu authored
      - Initial commit of HoardingAppender
      
      HoardingAppender contains other appenders which it can build
      dynamically depending on MDC values. The built appender is specified
      as part of a configuration file. Here is an example.
      
      <configuration debug="true">
        <appender name="HOARD"  class="ch.qos.logback.classic.hoard.HoardingAppender">
          <mdcKey>userid</mdcKey>
          <hoard>
            <!-- you can put any appender here -->
            <appender name="file-${userid}" class="ch.qos.logback.core.FileAppender">
              <File>${userid}.log</File>
              <Append>true</Append>
              <layout class="ch.qos.logback.classic.PatternLayout">
                <Pattern>%d [%thread] %level %logger{35} - %msg%n</Pattern>
              </layout>
            </appender>
          </hoard>
        </appender>
        <root level="DEBUG">
          <appender-ref ref="HOARD" />
        </root>
      </configuration>
      
      A new file appender will be built each according to the MDC value
      associated with the key "userid" when a logging event occurs. The
      above configuration file will ventilate logging into log files named
      after the userid. 
      
      - Added PropertyContainer interface
      - Context interface now extends PropertyContainer
      - InterpretationContext implements PropertyContainer
        It now has a field called propertiesMap which has precedence
        over values placed in the context
      - InterpretationContext.getSubstitutionProperty was renamed as
        getProperty
      - It is now possible to initialize a joran Interpreter with an initial
        (not empty) pattern
      
      This is still very much ongoing work.
        
      b8af298c
  6. Dec 10, 2008
    • Ceki Gulcu's avatar
      · 5e9af127
      Ceki Gulcu authored
      Fix LBCORE-78. 
      
      AsynchronousCompressor shuts down the executor it created, thus avoiding a memory leak.
      5e9af127
  7. Dec 05, 2008
  8. Dec 04, 2008
  9. Dec 03, 2008
  10. Dec 02, 2008
    • Ceki Gulcu's avatar
      Fixed LBCORE-67 · 1342b78b
      Ceki Gulcu authored
      I prefer
        try {
          r.lock();
          doSomething();
        } finally  {
          r.unlock();
        }
        
      instead of 
      
        r.lock();
        try {
          doSomething();  
        } finally  {
          r.unlock();
        }
      
        because I think that the lock is held for a shorter time (however small it may be).
        In case r.lock() throws an exception, we are probably screwed in both approaches.
      1342b78b
    • Ceki Gulcu's avatar
      - minor corrections · a7c42ca8
      Ceki Gulcu authored
      a7c42ca8
  11. Dec 01, 2008