/*
* Copyright (C) NetStruxr, Inc. All rights reserved.
*
* This software is published under the terms of the NetStruxr
* Public Software License version 0.5, a copy of which has been
* included with this distribution in the LICENSE.NPL file. */
package er.extensions.logging;
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.spi.LoggingEvent;
import er.extensions.appserver.ERXSession;
import er.extensions.foundation.ERXThreadStorage;
/**
* Appends all logging in this thread to thread storage if ERXSession.session()
* is set. In case of an exception (or whenever you want to), you can call
* <code>ERXThreadStorageAppender.messages()</code> to get the full log. <br>
* This is useful because you don't clutter up your log with stuff you don't
* really need most of the time, but still get full logging in case something
* bad happens.
*
* @author ak
*/
public class ERXThreadStorageAppender extends AppenderSkeleton {
@Override
public void append(LoggingEvent event) {
if (ERXSession.session() != null) {
StringBuffer buf = buffer();
//buf.append(getLayout().format(event));
}
}
protected static StringBuffer buffer() {
StringBuffer buf = (StringBuffer) ERXThreadStorage.valueForKey("ERXThreadStorageAppender.buffer");
if(buf == null) {
buf = new StringBuffer();
ERXThreadStorage.takeValueForKey(buf, "ERXThreadStorageAppender.buffer");
}
return buf;
}
public void close() {
// nothing
}
public static String message() {
return buffer().toString();
}
public boolean requiresLayout() {
return true;
}
}