Skip to content

Commit

Permalink
Fix for GRAILS-9061 Improve GrailsLog4jLoggerAdapter performance
Browse files Browse the repository at this point in the history
  • Loading branch information
lhotari committed Apr 26, 2012
1 parent b5432b2 commit 99e0db9
Showing 1 changed file with 30 additions and 38 deletions.
Expand Up @@ -37,22 +37,16 @@
*/ */
@SuppressWarnings("serial") @SuppressWarnings("serial")
public class GrailsLog4jLoggerAdapter extends MarkerIgnoringBase implements org.slf4j.Logger { public class GrailsLog4jLoggerAdapter extends MarkerIgnoringBase implements org.slf4j.Logger {

private static final long serialVersionUID = 1L;
static final String FQCN = GrailsLog4jLoggerAdapter.class.getName(); static final String FQCN = GrailsLog4jLoggerAdapter.class.getName();


private Logger log4jLogger; private final Logger log4jLogger;
@SuppressWarnings("hiding") private String name;


public GrailsLog4jLoggerAdapter(org.apache.log4j.Logger logger) { public GrailsLog4jLoggerAdapter(org.apache.log4j.Logger logger) {
this.log4jLogger = logger; this.log4jLogger = logger;
this.name = logger.getName(); this.name = logger.getName();
} }


@Override
public String getName() {
return name;
}

public boolean isTraceEnabled() { public boolean isTraceEnabled() {
return log4jLogger.isTraceEnabled(); return log4jLogger.isTraceEnabled();
} }
Expand All @@ -62,15 +56,15 @@ public void trace(String msg) {
} }


public void trace(String format, Object arg) { public void trace(String format, Object arg) {
logMessageFormat(TRACE, getMessageFormat(format, arg)); logMessageFormat(TRACE, format, arg);
} }


public void trace(String format, Object arg1, Object arg2) { public void trace(String format, Object arg1, Object arg2) {
logMessageFormat(TRACE, getMessageFormat(format, arg1, arg2)); logMessageFormat(TRACE, format, arg1, arg2);
} }


public void trace(String format, Object[] argArray) { public void trace(String format, Object[] argArray) {
logMessageFormat(TRACE, getMessageFormat(format, argArray)); logMessageFormat(TRACE, format, argArray);
} }


public void trace(String msg, Throwable t) { public void trace(String msg, Throwable t) {
Expand All @@ -82,19 +76,19 @@ public boolean isDebugEnabled() {
} }


public void debug(String msg) { public void debug(String msg) {
logMessage(DEBUG, msg); logMessage(DEBUG, msg, null);
} }


public void debug(String format, Object arg) { public void debug(String format, Object arg) {
logMessageFormat(DEBUG, getMessageFormat(format, arg)); logMessageFormat(DEBUG, format, arg);
} }


public void debug(String format, Object arg1, Object arg2) { public void debug(String format, Object arg1, Object arg2) {
logMessageFormat(DEBUG, getMessageFormat(format, arg1, arg2)); logMessageFormat(DEBUG, format, arg1, arg2);
} }


public void debug(String format, Object[] argArray) { public void debug(String format, Object[] argArray) {
logMessageFormat(DEBUG, getMessageFormat(format, argArray)); logMessageFormat(DEBUG, format, argArray);
} }


public void debug(String msg, Throwable t) { public void debug(String msg, Throwable t) {
Expand All @@ -106,19 +100,19 @@ public boolean isInfoEnabled() {
} }


public void info(String msg) { public void info(String msg) {
logMessage(INFO, msg); logMessage(INFO, msg, null);
} }


public void info(String format, Object arg) { public void info(String format, Object arg) {
logMessageFormat(INFO, getMessageFormat(format, arg)); logMessageFormat(INFO, format, arg);
} }


public void info(String format, Object arg1, Object arg2) { public void info(String format, Object arg1, Object arg2) {
logMessageFormat(INFO, getMessageFormat(format, arg1, arg2)); logMessageFormat(INFO, format, arg1, arg2);
} }


public void info(String format, Object[] argArray) { public void info(String format, Object[] argArray) {
logMessageFormat(INFO, getMessageFormat(format, argArray)); logMessageFormat(INFO, format, argArray);
} }


public void info(String msg, Throwable t) { public void info(String msg, Throwable t) {
Expand All @@ -130,19 +124,19 @@ public boolean isWarnEnabled() {
} }


public void warn(String msg) { public void warn(String msg) {
logMessage(WARN, msg); logMessage(WARN, msg, null);
} }


public void warn(String format, Object arg) { public void warn(String format, Object arg) {
logMessageFormat(WARN, getMessageFormat(format, arg)); logMessageFormat(WARN, format, arg);
} }


public void warn(String format, Object[] argArray) { public void warn(String format, Object[] argArray) {
logMessageFormat(WARN, getMessageFormat(format, argArray)); logMessageFormat(WARN, format, argArray);
} }


public void warn(String format, Object arg1, Object arg2) { public void warn(String format, Object arg1, Object arg2) {
logMessageFormat(WARN, getMessageFormat(format, arg1, arg2)); logMessageFormat(WARN, format, arg1, arg2);
} }


public void warn(String msg, Throwable t) { public void warn(String msg, Throwable t) {
Expand All @@ -154,49 +148,47 @@ public boolean isErrorEnabled() {
} }


public void error(String msg) { public void error(String msg) {
logMessage(ERROR, msg); logMessage(ERROR, msg, null);
} }


public void error(String format, Object arg) { public void error(String format, Object arg) {
logMessageFormat(ERROR, getMessageFormat(format, arg)); logMessageFormat(ERROR, format, arg);
} }


public void error(String format, Object arg1, Object arg2) { public void error(String format, Object arg1, Object arg2) {
logMessageFormat(ERROR, getMessageFormat(format, arg1, arg2)); logMessageFormat(ERROR, format, arg1, arg2);
} }


public void error(String format, Object[] argArray) { public void error(String format, Object[] argArray) {
logMessageFormat(ERROR, getMessageFormat(format, argArray)); logMessageFormat(ERROR, format, argArray);
} }


public void error(String msg, Throwable t) { public void error(String msg, Throwable t) {
logMessage(ERROR, msg, t); logMessage(ERROR, msg, t);
} }


private FormattingTuple getMessageFormat(String format, Object... args) { private final FormattingTuple getMessageFormat(final String format, final Object... args) {
FormattingTuple ft = MessageFormatter.arrayFormat(format, args); FormattingTuple ft = MessageFormatter.arrayFormat(format, args);
cleanIfException(ft.getThrowable()); cleanIfException(ft.getThrowable());
return ft; return ft;
} }


private Throwable cleanIfException(Throwable t) { private final Throwable cleanIfException(final Throwable t) {
if (t != null) { if (t != null) {
new DefaultStackTraceFilterer().filter(t, true); new DefaultStackTraceFilterer().filter(t, true);
} }
return t; return t;
} }


private void logMessageFormat(Level level, FormattingTuple ft) { private final void logMessageFormat(final Level level, final String format, final Object... args) {
log4jLogger.log(FQCN, level, ft.getMessage(), ft.getThrowable()); if(log4jLogger.isEnabledFor(level)) {
} FormattingTuple ft = getMessageFormat(format, args);

log4jLogger.log(FQCN, level, ft.getMessage(), ft.getThrowable());
private void logMessage(Level level, String msg) { }
logMessage(level, msg, null);
} }


private void logMessage(Level level, String msg, Throwable t) { private final void logMessage(final Level level, final String msg, final Throwable t) {
Throwable filteredTrace = msg.startsWith(StackTraceFilterer.FULL_STACK_TRACE_MESSAGE) ? t : cleanIfException(t); Throwable filteredTrace = (t != null && log4jLogger.isEnabledFor(level) && !("StackTrace".equals(name) || (msg != null && msg.startsWith(StackTraceFilterer.FULL_STACK_TRACE_MESSAGE)))) ? cleanIfException(t) : t;

log4jLogger.log(FQCN, level, msg, filteredTrace); log4jLogger.log(FQCN, level, msg, filteredTrace);
} }
} }

0 comments on commit 99e0db9

Please sign in to comment.