Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Logback: the reliable, generic, fast and flexible logging framework. Copyright (C) 1999-2011, QOS.ch. All rights reserved. This program and the accompanying materials are dual-licensed under either the terms of the Eclipse Public License v1.0 as published by the Eclipse Foundation or (per the licensee's choosing) under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation.
 
 package ch.qos.logback.classic.pattern;
 
 import java.util.List;
 import java.util.Map;
 
This converter outputs caller data depending on depth and marker data.

Author(s):
Ceki Gulcu
 
 public class CallerDataConverter extends ClassicConverter {
 
   public static final String DEFAULT_CALLER_LINE_PREFIX = "Caller+";
 
   int depth = 5;
 
 
   final int MAX_ERROR_COUNT = 4;
   int errorCount = 0;
 
   @SuppressWarnings("unchecked")
   public void start() {
     String depthStr = getFirstOption();
     if (depthStr == null) {
       return;
     }
 
     try {
        = Integer.parseInt(depthStr);
     } catch (NumberFormatException nfe) {
       addError("Failed to parse depth option [" + depthStr + "]"nfe);
     }
 
     final List optionList = getOptionList();
 
     if (optionList != null && optionList.size() > 1) {
       final int optionListSize = optionList.size();
       for (int i = 1; i < optionListSizei++) {
         String evaluatorStr = (StringoptionList.get(i);
         Context context = getContext();
         if (context != null) {
           Map evaluatorMap = (Mapcontext
               .getObject(.);
           EventEvaluator<ILoggingEventee = (EventEvaluator<ILoggingEvent>) evaluatorMap
               .get(evaluatorStr);
           if (ee != null) {
             addEvaluator(ee);
           }
         }
       }
     }
   }
 
   private void addEvaluator(EventEvaluator<ILoggingEventee) {
     if ( == null) {
     }
     .add(ee);
   }
 
   public String convert(ILoggingEvent le) {
     StringBuilder buf = new StringBuilder();
 
     if ( != null) {
       boolean printCallerData = false;
       for (int i = 0; i < .size(); i++) {
         EventEvaluator<ILoggingEventee = .get(i);
         try {
           if (ee.evaluate(le)) {
             printCallerData = true;
             break;
           }
         } catch (EvaluationException eex) {
           ++;
           if ( < ) {
             addError("Exception thrown for evaluator named [" + ee.getName()
                + "]"eex);
          } else if ( == ) {
            ErrorStatus errorStatus = new ErrorStatus(
                "Exception thrown for evaluator named [" + ee.getName() + "].",
                thiseex);
            errorStatus.add(new ErrorStatus(
                "This was the last warning about this evaluator's errors."
                    + "We don't want the StatusManager to get flooded."this));
            addStatus(errorStatus);
          }
        }
      }
      if (!printCallerData) {
        return .;
      }
    }
    StackTraceElement[] cda = le.getCallerData();
    if (cda != null && cda.length > 0) {
      int limit =  < cda.length ?  : cda.length;
      for (int i = 0; i < limiti++) {
        buf.append(getCallerLinePrefix());
        buf.append(i);
        buf.append("\t at ");
        buf.append(cda[i]);
        buf.append(.);
      }
      return buf.toString();
    } else {
      return .;
    }
  }
  protected String getCallerLinePrefix() {
  }
New to GrepCode? Check out our FAQ X