public Object getValue()

in src/main/java/org/apache/log4j/spi/LoggingEventFieldResolver.java [209:265]


  public Object getValue(final String fieldName,
                         final ChainsawLoggingEvent event) {
    String upperField = fieldName.toUpperCase(Locale.US);
    if (LOGGER_FIELD.equals(upperField)) {
      return event.m_logger;
    } else if (LEVEL_FIELD.equals(upperField)) {
      return event.m_level;
    } else if (MSG_FIELD.equals(upperField)) {
      return event.m_message;
    } else if (NDC_FIELD.equals(upperField)) {
      String ndcValue = event.m_ndc;
      return ((ndcValue == null) ? EMPTY_STRING : ndcValue);
    } else if (EXCEPTION_FIELD.equals(upperField)) {
//        String[] throwableRep = event.getThrowableStrRep();
//        if (throwableRep == null) {
//            return EMPTY_STRING;
//        } else {
//            return getExceptionMessage(throwableRep);
//        }
        return "";
    } else if (TIMESTAMP_FIELD.equals(upperField)) {
      return event.m_timestamp;
    } else if (THREAD_FIELD.equals(upperField)) {
      return event.m_threadName;
    } else if (upperField.startsWith(PROP_FIELD)) {
      //note: need to use actual fieldname since case matters
        String realFieldName = fieldName.substring(5);
        String property = event.getProperty(realFieldName);
        if( property != null && property.length() >= 1 ){
            return property;
        }

        // We did not get the property in a case-sensitive manner - check for
        // case-insensitive
        for( Map.Entry<String,String> entry : event.getProperties().entrySet() ){
            if( entry.getKey().equalsIgnoreCase( realFieldName ) ){
                return entry.getValue();
            }
        }
        
        return EMPTY_STRING;
    } else {
        org.apache.log4j.chainsaw.logevents.LocationInfo info = event.m_locationInfo;
        if (CLASS_FIELD.equals(upperField)) {
            return ((info == null) ? EMPTY_STRING : info.className);
        } else if (FILE_FIELD.equals(upperField)) {
            return ((info == null) ? EMPTY_STRING : info.fileName);
        } else if (LINE_FIELD.equals(upperField)) {
            return ((info == null) ? EMPTY_STRING : info.lineNumber);
        } else if (METHOD_FIELD.equals(upperField)) {
            return ((info == null) ? EMPTY_STRING : info.methodName);
        }
    }

    //there wasn't a match, so throw a runtime exception
    throw new IllegalArgumentException("Unsupported field name: " + fieldName);
  }