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
-
-
Constructor Summary
Constructors Constructor Description BackTraceFileHandler()
Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static void
clearBuffer()
Clear the buffer of the current thread.void
close()
Close this handler, release buffer memory.protected void
doPublish(org.jboss.logmanager.ExtLogRecord record)
void
setAllowedLevel(String level)
void
setBufferSize(String size)
void
setTriggerLevel(String level)
-
Methods inherited from class org.jboss.logmanager.handlers.PeriodicRotatingFileHandler
getNextSuffix, getTimeZone, preWrite, setFile, setSuffix, setTimeZone
-
Methods inherited from class org.jboss.logmanager.handlers.FileHandler
getFile, setAppend, setFileName
-
Methods inherited from class org.jboss.logmanager.handlers.OutputStreamHandler
getEncoding, setEncoding, setOutputStream, setWriter
-
Methods 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, unprotect
-
Methods inherited from class java.util.logging.Handler
getErrorManager, getFilter, getFormatter, getLevel, isLoggable, reportError
-
-
-
-
Method Detail
-
close
public void close()
Close this handler, release buffer memory.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in 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:
doPublish
in classorg.jboss.logmanager.handlers.WriterHandler
-
setAllowedLevel
public void setAllowedLevel(String level)
-
setTriggerLevel
public void setTriggerLevel(String level)
-
setBufferSize
public void setBufferSize(String size)
-
-