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
An extended logger handler. Use this class as a base class for log handlers which require
ExtLogRecord
instances.-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate boolean
private static final Permission
private static final ErrorManager
private boolean
private final ThreadLocal<Boolean>
protected Handler[]
The sub-handlers for this handler.protected static final AtomicArray<ExtHandler,
Handler> The atomic updater for thehandlers
field.private Object
private static final AtomicReferenceFieldUpdater<ExtHandler,
Object> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate static SecurityException
void
addHandler
(Handler handler) Add a sub-handler to this handler.protected static void
Deprecated.protected static void
checkAccess
(ExtHandler handler) Check access.Handler[]
A convenience method to atomically get and clear all sub-handlers.void
close()
Close all child handlers.final void
Disable previous access to the object for modifications on the current thread.protected void
doPublish
(ExtLogRecord record) Do the actual work of publication; the record will have been filtered already.final void
enableAccess
(Object protectKey) Enable access to the object for modifications on the current thread.void
flush()
Flush all child handlers.Handler[]
Get a copy of the sub-handlers array.boolean
Determine if this handler will auto-flush.final boolean
Determine if the handler is enabled.final void
Protect this object from modifications.void
void
publish
(ExtLogRecord record) Publish anExtLogRecord
.void
removeHandler
(Handler handler) Remove a sub-handler from this handler.void
setAutoFlush
(boolean autoFlush) Change the autoflush setting for this handler.final void
setEnabled
(boolean enabled) Enables or disables the handler based on the value passed in.void
setEncoding
(String encoding) void
void
void
setFormatter
(Formatter newFormatter) Handler[]
setHandlers
(Handler[] newHandlers) A convenience method to atomically get and replace the sub-handler array.void
final void
Allows the object to be modified if theprotectionKey
matches the key used toprotect
the object.Methods inherited from class java.util.logging.Handler
getEncoding, getErrorManager, getFilter, getFormatter, getLevel, isLoggable, reportError
-
Field Details
-
CONTROL_PERMISSION
-
autoFlush
private volatile boolean autoFlush -
enabled
private volatile boolean enabled -
DEFAULT_ERROR_MANAGER
-
protectKey
-
granted
-
protectKeyUpdater
-
handlers
The sub-handlers for this handler. May only be updated using thehandlersUpdater
atomic updater. The array instance should not be modified (treat as immutable). -
handlersUpdater
The atomic updater for thehandlers
field.
-
-
Constructor Details
-
ExtHandler
protected ExtHandler()Construct a new instance.
-
-
Method Details
-
publish
-
publish
Publish anExtLogRecord
. The logging request was made initially to a Logger object, which initialized the LogRecord and forwarded it here. TheExtHandler
is responsible for formatting the message, when and if necessary. The formatting should include localization.- Parameters:
record
- the log record to publish
-
doPublish
Do the actual work of publication; the record will have been filtered already. The default implementation does nothing except to flush if theautoFlush
property 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
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
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
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
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
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:
true
if auto-flush is enabled
-
setAutoFlush
Change the autoflush setting for this handler.- Parameters:
autoFlush
-true
to 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
Enables or disables the handler based on the value passed in.- Parameters:
enabled
-true
to enable the handler orfalse
to 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:
true
if the handler is enabled, otherwisefalse
.
-
protect
Description copied from interface:Protectable
Protect this object from modifications.- Specified by:
protect
in interfaceProtectable
- Parameters:
protectionKey
- the key used to protect the object.- Throws:
SecurityException
- if the object is already protected.
-
unprotect
Description copied from interface:Protectable
Allows the object to be modified if theprotectionKey
matches the key used toprotect
the object.- Specified by:
unprotect
in interfaceProtectable
- Parameters:
protectionKey
- the key used to protect the object.- Throws:
SecurityException
- if the object is protected and the key doesn't match.
-
enableAccess
Description copied from interface:Protectable
Enable access to the object for modifications on the current thread.- Specified by:
enableAccess
in interfaceProtectable
- Parameters:
protectKey
- the key used toprotect
modifications.
-
disableAccess
public final void disableAccess()Description copied from interface:Protectable
Disable previous access to the object for modifications on the current thread.- Specified by:
disableAccess
in interfaceProtectable
-
accessDenied
-
checkAccess
Deprecated.Check access.- Throws:
SecurityException
- if a security manager is installed and the caller does not have the"control" LoggingPermission
-
checkAccess
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
Close all child handlers.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in classHandler
- Throws:
SecurityException
-
setFormatter
- Overrides:
setFormatter
in classHandler
- Throws:
SecurityException
-
setFilter
- Overrides:
setFilter
in classHandler
- Throws:
SecurityException
-
setEncoding
- Overrides:
setEncoding
in classHandler
- Throws:
SecurityException
UnsupportedEncodingException
-
setErrorManager
- Overrides:
setErrorManager
in classHandler
-
setLevel
- Overrides:
setLevel
in classHandler
- Throws:
SecurityException
-
checkAccess(ExtHandler)