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);
}