Package org.jboss.logmanager
Class ExtHandler
- java.lang.Object
-
- java.util.logging.Handler
-
- org.jboss.logmanager.ExtHandler
-
- All Implemented Interfaces:
Closeable,Flushable,AutoCloseable,FlushableCloseable,Protectable
- Direct Known Subclasses:
AsyncHandler,NullHandler,QueueHandler,SyslogHandler,WriterHandler
public abstract class ExtHandler extends Handler implements FlushableCloseable, Protectable
An extended logger handler. Use this class as a base class for log handlers which requireExtLogRecordinstances.
-
-
Field Summary
Fields Modifier and Type Field Description protected Handler[]handlersThe sub-handlers for this handler.protected static org.jboss.logmanager.AtomicArray<ExtHandler,Handler>handlersUpdaterThe atomic updater for thehandlersfield.
-
Constructor Summary
Constructors Modifier Constructor Description protectedExtHandler()Construct a new instance.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidaddHandler(Handler handler)Add a sub-handler to this handler.protected static voidcheckAccess()Deprecated.protected static voidcheckAccess(ExtHandler handler)Check access.Handler[]clearHandlers()A convenience method to atomically get and clear all sub-handlers.voidclose()Close all child handlers.voiddisableAccess()Disable previous access to the object for modifications on the current thread.protected voiddoPublish(ExtLogRecord record)Do the actual work of publication; the record will have been filtered already.voidenableAccess(Object protectKey)Enable access to the object for modifications on the current thread.voidflush()Flush all child handlers.Handler[]getHandlers()Get a copy of the sub-handlers array.booleanisAutoFlush()Determine if this handler will auto-flush.booleanisEnabled()Determine if the handler is enabled.voidprotect(Object protectionKey)Protect this object from modifications.voidpublish(LogRecord record)voidpublish(ExtLogRecord record)Publish anExtLogRecord.voidremoveHandler(Handler handler)Remove a sub-handler from this handler.voidsetAutoFlush(boolean autoFlush)Change the autoflush setting for this handler.voidsetEnabled(boolean enabled)Enables or disables the handler based on the value passed in.voidsetEncoding(String encoding)voidsetErrorManager(ErrorManager em)voidsetFilter(Filter newFilter)voidsetFormatter(Formatter newFormatter)Handler[]setHandlers(Handler[] newHandlers)A convenience method to atomically get and replace the sub-handler array.voidsetLevel(Level newLevel)voidunprotect(Object protectionKey)Allows the object to be modified if theprotectionKeymatches the key used toprotectthe object.-
Methods inherited from class java.util.logging.Handler
getEncoding, getErrorManager, getFilter, getFormatter, getLevel, isLoggable, reportError
-
-
-
-
Field Detail
-
handlers
protected volatile Handler[] handlers
The sub-handlers for this handler. May only be updated using thehandlersUpdateratomic updater. The array instance should not be modified (treat as immutable).
-
handlersUpdater
protected static final org.jboss.logmanager.AtomicArray<ExtHandler,Handler> handlersUpdater
The atomic updater for thehandlersfield.
-
-
Method Detail
-
publish
public void publish(ExtLogRecord record)
Publish anExtLogRecord. The logging request was made initially to a Logger object, which initialized the LogRecord and forwarded it here. TheExtHandleris responsible for formatting the message, when and if necessary. The formatting should include localization.- Parameters:
record- the log record to publish
-
doPublish
protected void doPublish(ExtLogRecord record)
Do the actual work of publication; the record will have been filtered already. The default implementation does nothing except to flush if theautoFlushproperty is set totrue; if this behavior is to be preserved in a subclass then this method should be called after the record is physically written.- Parameters:
record- the log record to publish
-
addHandler
public void addHandler(Handler handler) throws SecurityException
Add a sub-handler to this handler. Some handler types do not utilize sub-handlers.- Parameters:
handler- the handler to add- Throws:
SecurityException- if a security manager exists and if the caller does not haveLoggingPermission(control)or the handler isprotected.
-
removeHandler
public void removeHandler(Handler handler) throws SecurityException
Remove a sub-handler from this handler. Some handler types do not utilize sub-handlers.- Parameters:
handler- the handler to remove- Throws:
SecurityException- if a security manager exists and if the caller does not haveLoggingPermission(control)or the handler isprotected.
-
getHandlers
public Handler[] getHandlers()
Get a copy of the sub-handlers array. Since the returned value is a copy, it may be freely modified.- Returns:
- a copy of the sub-handlers array
-
clearHandlers
public Handler[] clearHandlers() throws SecurityException
A convenience method to atomically get and clear all sub-handlers.- Returns:
- the old sub-handler array
- Throws:
SecurityException- if a security manager exists and if the caller does not haveLoggingPermission(control)or the handler isprotected.
-
setHandlers
public Handler[] setHandlers(Handler[] newHandlers) throws SecurityException
A convenience method to atomically get and replace the sub-handler array.- Parameters:
newHandlers- the new sub-handlers- Returns:
- the old sub-handler array
- Throws:
SecurityException- if a security manager exists and if the caller does not haveLoggingPermission(control)or the handler isprotected.
-
isAutoFlush
public boolean isAutoFlush()
Determine if this handler will auto-flush.- Returns:
trueif auto-flush is enabled
-
setAutoFlush
public void setAutoFlush(boolean autoFlush) throws SecurityExceptionChange the autoflush setting for this handler.- Parameters:
autoFlush-trueto automatically flush after each write; false otherwise- Throws:
SecurityException- if a security manager exists and if the caller does not haveLoggingPermission(control)or the handler isprotected.
-
setEnabled
public final void setEnabled(boolean enabled) throws SecurityExceptionEnables or disables the handler based on the value passed in.- Parameters:
enabled-trueto enable the handler orfalseto disable the handler.- Throws:
SecurityException- if a security manager exists and if the caller does not haveLoggingPermission(control)or the handler isprotected.
-
isEnabled
public final boolean isEnabled()
Determine if the handler is enabled.- Returns:
trueif the handler is enabled, otherwisefalse.
-
protect
public final void protect(Object protectionKey) throws SecurityException
Description copied from interface:ProtectableProtect this object from modifications.- Specified by:
protectin interfaceProtectable- Parameters:
protectionKey- the key used to protect the object.- Throws:
SecurityException- if the object is already protected.
-
unprotect
public final void unprotect(Object protectionKey) throws SecurityException
Description copied from interface:ProtectableAllows the object to be modified if theprotectionKeymatches the key used toprotectthe object.- Specified by:
unprotectin interfaceProtectable- Parameters:
protectionKey- the key used to protect the object.- Throws:
SecurityException- if the object is protected and the key doesn't match.
-
enableAccess
public final void enableAccess(Object protectKey)
Description copied from interface:ProtectableEnable access to the object for modifications on the current thread.- Specified by:
enableAccessin interfaceProtectable- Parameters:
protectKey- the key used toprotectmodifications.
-
disableAccess
public final void disableAccess()
Description copied from interface:ProtectableDisable previous access to the object for modifications on the current thread.- Specified by:
disableAccessin interfaceProtectable
-
checkAccess
@Deprecated protected static void checkAccess() throws SecurityException
Deprecated.Check access.- Throws:
SecurityException- if a security manager is installed and the caller does not have the"control" LoggingPermission
-
checkAccess
protected static void checkAccess(ExtHandler handler) throws SecurityException
Check access.- Parameters:
handler- the handler to check access on.- Throws:
SecurityException- if a security manager exists and if the caller does not haveLoggingPermission(control)or the handler isprotected.
-
flush
public void flush()
Flush all child handlers.
-
close
public void close() throws SecurityExceptionClose all child handlers.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein classHandler- Throws:
SecurityException
-
setFormatter
public void setFormatter(Formatter newFormatter) throws SecurityException
- Overrides:
setFormatterin classHandler- Throws:
SecurityException
-
setFilter
public void setFilter(Filter newFilter) throws SecurityException
- Overrides:
setFilterin classHandler- Throws:
SecurityException
-
setEncoding
public void setEncoding(String encoding) throws SecurityException, UnsupportedEncodingException
- Overrides:
setEncodingin classHandler- Throws:
SecurityExceptionUnsupportedEncodingException
-
setErrorManager
public void setErrorManager(ErrorManager em)
- Overrides:
setErrorManagerin classHandler
-
setLevel
public void setLevel(Level newLevel) throws SecurityException
- Overrides:
setLevelin classHandler- Throws:
SecurityException
-
-