
com.cookingfox.logging.LoggerEntry Maven / Gradle / Ivy
package com.cookingfox.logging;
import com.cookingfox.logging.api.Entry;
import java.util.Locale;
/**
* Class representing one Logger entry.
*/
public class LoggerEntry implements Entry {
//----------------------------------------------------------------------------------------------
// PROPERTIES
//----------------------------------------------------------------------------------------------
/**
* The user message to log.
*/
private final String message;
/**
* An array of arguments to include in the message.
*
* @see String#format(Locale, String, Object...)
*/
private final Object[] messageArgs;
/**
* Default caller class name, when no valid stack trace could be generated.
*/
String defaultCallerClassName;
/**
* Logger settings.
*/
Settings settings;
/**
* Caller stack trace.
*/
StackTraceElement stackTrace;
//----------------------------------------------------------------------------------------------
// CONSTRUCTOR
//----------------------------------------------------------------------------------------------
/**
* @param message The message to log.
* @param messageArgs Values that need to be included in the log message
* (through {@link String#format(String, Object...)}).
*/
public LoggerEntry(String message, Object[] messageArgs) {
this.message = message;
this.messageArgs = messageArgs;
}
//----------------------------------------------------------------------------------------------
// PUBLIC METHODS
//----------------------------------------------------------------------------------------------
@Override
public String getCaller() {
// no stack trace? use default caller class name
if (null == stackTrace) {
return defaultCallerClassName;
}
StringBuilder callerBuilder = new StringBuilder();
String callerClassName = stackTrace.getClassName();
// simple class name: extract class name (strip package)
if (settings.callerUseSimpleName && callerClassName.contains(".")) {
callerClassName = callerClassName.substring(callerClassName.lastIndexOf(".") + 1);
}
// add class name
callerBuilder.append(callerClassName);
// add method name
if (settings.callerAddMethodName) {
callerBuilder.append('#');
callerBuilder.append(stackTrace.getMethodName());
}
// add caller line number
if (settings.callerAddLineNumber) {
callerBuilder.append(':');
callerBuilder.append(stackTrace.getLineNumber());
}
return callerBuilder.toString();
}
@Override
public String getMessage() {
String logMessage = message;
// arguments have been passed: use in String format
if (messageArgs.length > 0) {
logMessage = String.format(logMessage, messageArgs);
}
return logMessage;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy