Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (c) 2007, 2008, 2009, 2010, 2011 David Berkman
   * 
   * This file is part of the SmallMind Code Project.
   * 
   * The SmallMind Code Project is free software, you can redistribute
   * it and/or modify it under the terms of GNU Affero General Public
   * License as published by the Free Software Foundation, either version 3
   * of the License, or (at your option) any later version.
  * 
  * The SmallMind Code Project is distributed in the hope that it will
  * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  * 
  * You should have received a copy of the the GNU Affero General Public
  * License, along with The SmallMind Code Project. If not, see
  * <http://www.gnu.org/licenses/>.
  * 
  * Additional permission under the GNU Affero GPL version 3 section 7
  * ------------------------------------------------------------------
  * If you modify this Program, or any covered work, by linking or
  * combining it with other code, such other code is not for that reason
  * alone subject to any of the requirements of the GNU Affero GPL
  * version 3.
  */
 package org.smallmind.scribe.ink.log4j;
 
 
 public class Log4JLoggerAdapter implements LoggerAdapter {
 
    private Logger logger;
    private boolean autoFillLogicalContext = false;
 
    public Log4JLoggerAdapter (Logger logger) {
 
       this. = logger;
 
       logger.setAdditivity(false);
 
        = new ConcurrentLinkedQueue<Filter>();
        = new ConcurrentLinkedQueue<Enhancer>();
    }
 
    public String getName () {
 
       return .getName();
    }
 
    public boolean getAutoFillLogicalContext () {
 
       return ;
    }
 
    public void setAutoFillLogicalContext (boolean autoFillLogicalContext) {
 
       this. = autoFillLogicalContext;
    }
 
    public void addFilter (Filter filter) {
 
       .add(filter);
    }
 
    public void clearFilters () {
 
       .clear();
    }
 
    public void addAppender (Appender appender) {
 
       .addAppender(new Log4JAppenderWrapper(appender));
    }
 
    public Appender removeAppender (Appender appender) {
 
       return removeAppender(appender.getName());
    }
 
    public Appender removeAppender (String name) {
 
       org.apache.log4j.Appender appender;
 
       if ((appender = .getAppender(name)) != null) {
          .removeAppender(name);
         if (appender instanceof Log4JAppenderWrapper) {
            return ((Log4JAppenderWrapper)appender).getInnerAppender();
         }
         else {
            throw new UnsupportedOperationException("Appender can't be returned via this interface because it's Log4J native");
         }
      }
      return null;
   }
   public void clearAppenders () {
   }
   public void addEnhancer (Enhancer enhancer) {
      .add(enhancer);
   }
   public void clearEnhancers () {
      .clear();
   }
   public Level getLevel () {
      return (.getLevel() == null) ? . : Log4JLevelTranslator.getLevel(.getLevel());
   }
   public void setLevel (Level level) {
      .setLevel(Log4JLevelTranslator.getLog4JLevel(level));
   }
   public void logMessage (Discriminator discriminatorLevel levelThrowable throwableString messageObject... args) {
      Log4JRecordSubverter recordSubverter;
      LogicalContext logicalContext;
      if ((!level.equals(.)) && getLevel().noGreater(level)) {
         if ((logicalContext = willLog(discriminatorlevel)) != null) {
            recordSubverter = new Log4JRecordSubverter(discriminatorlevelnulllogicalContextthrowablemessageargs);
            enhanceRecord(recordSubverter.getRecord());
            .callAppenders(recordSubverter);
         }
      }
   }
   public void logProbe (Discriminator discriminatorLevel levelThrowable throwableProbeReport probeReport) {
      Log4JRecordSubverter recordSubverter;
      LogicalContext logicalContext;
      if ((!level.equals(.)) && getLevel().noGreater(level)) {
         if ((logicalContext = willLog(discriminatorlevel)) != null) {
            recordSubverter = new Log4JRecordSubverter(discriminatorlevelprobeReportlogicalContextthrowable, (probeReport.getTitle() == null) ? "Probe Report" : probeReport.getTitle());
            enhanceRecord(recordSubverter.getRecord());
            .callAppenders(recordSubverter);
         }
      }
   }
   public void logMessage (Discriminator discriminatorLevel levelThrowable throwableObject object) {
      Log4JRecordSubverter recordSubverter;
      LogicalContext logicalContext;
      if ((!level.equals(.)) && getLevel().noGreater(level)) {
         if ((logicalContext = willLog(discriminatorlevel)) != null) {
            recordSubverter = new Log4JRecordSubverter(discriminatorlevelnulllogicalContextthrowable, (object == null) ? null : object.toString());
            enhanceRecord(recordSubverter.getRecord());
            .callAppenders(recordSubverter);
         }
      }
   }
   private LogicalContext willLog (Discriminator discriminatorLevel level) {
      LogicalContext logicalContext;
      Record filterRecord;
      logicalContext = new DefaultLogicalContext();
      if (getAutoFillLogicalContext()) {
         logicalContext.fillIn();
      }
      if (!.isEmpty()) {
         filterRecord = new Log4JRecordSubverter(discriminatorlevelnulllogicalContextnullnull).getRecord();
         for (Filter filter : ) {
            if (!filter.willLog(filterRecord)) {
               return null;
            }
         }
      }
      return logicalContext;
   }
   private void enhanceRecord (Record record) {
      for (Enhancer enhancer : ) {
         enhancer.enhance(record);
      }
   }
New to GrepCode? Check out our FAQ X