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
outputLock
Fields inherited from class org.jboss.logmanager.ExtHandler
handlers, handlersUpdater
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
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) Set the log level.void
setBufferSize
(String size) Set buffer size-void
setTriggerLevel
(String level) Set trigger 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.handlers.WriterHandler
flush, safeClose
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
-
Constructor Details
-
BackTraceFileHandler
public BackTraceFileHandler()Constructor.
-
-
Method Details
-
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
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
-