Skip to content
  1. Dec 18, 2008
  2. Dec 17, 2008
  3. 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
  4. 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
  5. Dec 05, 2008
  6. Dec 04, 2008
  7. Dec 03, 2008
  8. 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
  9. Dec 01, 2008
  10. Nov 28, 2008
  11. Nov 20, 2008
    • Ceki Gulcu's avatar
      LBCLASSIC-87 · 7e74b625
      Ceki Gulcu authored
      With each call to getLogger() method, LoggerContext will now retrieve the ILoggerFactory afresh from StaticLoggerBinder. 
      This change enables context selectors of native implementations, e.g logback, to work correctly. 
      7e74b625
  12. Nov 18, 2008