Package de.stefanfrings.utils
Class BackTraceFileHandler
java.lang.Object
java.util.logging.Handler
org.jboss.logmanager.ExtHandler
org.jboss.logmanager.handlers.WriterHandler
org.jboss.logmanager.handlers.OutputStreamHandler
org.jboss.logmanager.handlers.FileHandler
org.jboss.logmanager.handlers.PeriodicRotatingFileHandler
de.stefanfrings.utils.BackTraceFileHandler
- All Implemented Interfaces:
Closeable,Flushable,AutoCloseable,org.jboss.logmanager.handlers.FlushableCloseable,org.jboss.logmanager.Protectable
public class BackTraceFileHandler
extends org.jboss.logmanager.handlers.PeriodicRotatingFileHandler
For Jboss/Wildfly: Write debug messages only when an error occurs.
This handler holds back debug messages in a buffer and writes them only to the file when an error occurs.
You should clear the buffer at the beginning or end of each HTTP request, to ensure that the buffer does not contain old stuff when processing the next HTTP request.
You have to put the utilities.jar file into the Wildfly folder modules/de/stefanfrings/utils/main together with a modules.xml file:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.3" name="de.stefanfrings.utils">
<resources>
<resource-root path="utilities.jar"/>
</resources>
<dependencies>
<module name="org.jboss.logmanager"/>
</dependencies>
</module>
Example of the required settings in standalone.xml:
<!-- Write log messages >= INFO to server.log, without exceptions -->
<periodic-rotating-file-handler name="serverLog" autoflush="false">
<level name="INFO"/>
<formatter>
<pattern-formatter pattern="%-5p %date{YYYY-MM-DD HH:mm:ss.SSS} %X{requestID} [%t] %-50c{50} %s%n"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="server.log"/>
<suffix value=".yyyy-MM-dd"/>
<append value="true"/>
</periodic-rotating-file-handler>
<!-- Write buffered log messages to debug.log when a warning or error occurs -->
<custom-handler name="debugLog" class="de.stefanfrings.utils.BackTraceFileHandler" module="de.stefanfrings.utils">
<formatter>
<pattern-formatter pattern="%-5p %date{YYYY-MM-DD HH:mm:ss.SSS} %X{requestID} [%t] %-50c{50} %s%e%n"/>
</formatter>
<properties>
<property name="fileName" value="${jboss.server.log.dir}/debug.log"/>
<property name="suffix" value=".yyyy-MM-dd"/>
<property name="bufferSize" value="100"/>
<property name="allowedLevel" value="OFF"/>
<property name="triggerLevel" value="WARN"/>
</properties>
</custom-handler>
<!-- Log level for specific classes or packages -->
<logger category="de.stefanfrings">
<level name="DEBUG"/>
</logger>
<!-- Default log level and output -->
<root-logger>
<level name="INFO"/>
<handlers>
<handler name="debugLog"/>
<handler name="serverLog"/>
</handlers>
</root-logger>
- Author:
- Stefan Frings, http://stefanfrings.de/javautils
-
Nested Class Summary
Nested classes/interfaces inherited from class org.jboss.logmanager.handlers.PeriodicRotatingFileHandler
org.jboss.logmanager.handlers.PeriodicRotatingFileHandler.Period -
Field Summary
Fields inherited from class org.jboss.logmanager.handlers.WriterHandler
outputLockFields inherited from class org.jboss.logmanager.ExtHandler
handlers, handlersUpdater -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic voidClear the buffer of the current thread.voidclose()Close this handler, release buffer memory.protected voiddoPublish(org.jboss.logmanager.ExtLogRecord record) voidsetAllowedLevel(String level) Set the log level.voidsetBufferSize(String size) Set buffer size-voidsetTriggerLevel(String level) Set trigger level.Methods inherited from class org.jboss.logmanager.handlers.PeriodicRotatingFileHandler
getNextSuffix, getTimeZone, preWrite, setFile, setSuffix, setTimeZoneMethods inherited from class org.jboss.logmanager.handlers.FileHandler
getFile, setAppend, setFileNameMethods inherited from class org.jboss.logmanager.handlers.OutputStreamHandler
getEncoding, setEncoding, setOutputStream, setWriterMethods inherited from class org.jboss.logmanager.handlers.WriterHandler
flush, safeCloseMethods inherited from class org.jboss.logmanager.ExtHandler
addHandler, checkAccess, checkAccess, clearHandlers, disableAccess, enableAccess, getHandlers, isAutoFlush, isEnabled, protect, publish, publish, removeHandler, setAutoFlush, setEnabled, setErrorManager, setFilter, setFormatter, setHandlers, setLevel, unprotectMethods inherited from class java.util.logging.Handler
getErrorManager, getFilter, getFormatter, getLevel, isLoggable, reportError
-
Constructor Details
-
BackTraceFileHandler
public BackTraceFileHandler()Constructor.
-
-
Method Details
-
close
public void close()Close this handler, release buffer memory.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Overrides:
closein classorg.jboss.logmanager.handlers.WriterHandler
-
clearBuffer
public static void clearBuffer()Clear the buffer of the current thread. -
doPublish
protected void doPublish(org.jboss.logmanager.ExtLogRecord record) - Overrides:
doPublishin classorg.jboss.logmanager.handlers.WriterHandler
-
setAllowedLevel
Set the log level.- Parameters:
level- Log messages to output immediately: TRACE, DEBUG, INFO, WARN, ERROR or OFF
-
setTriggerLevel
Set trigger level.- Parameters:
level- Log messages that trigger output of buffered messages: WARN or ERROR
-
setBufferSize
Set buffer size-- Parameters:
size- Maximum number of buffered messages for each thread
-