public abstract class ExtHandler extends Handler implements FlushableCloseable, Protectable
ExtLogRecord
instances.Modifier and Type | Field and Description |
---|---|
protected Handler[] |
handlers
The sub-handlers for this handler.
|
protected static org.jboss.logmanager.AtomicArray<ExtHandler,Handler> |
handlersUpdater
The atomic updater for the
handlers field. |
Modifier | Constructor and Description |
---|---|
protected |
ExtHandler()
Construct a new instance.
|
Modifier and Type | Method and Description |
---|---|
void |
addHandler(Handler handler)
Add a sub-handler to this handler.
|
protected static void |
checkAccess()
Deprecated.
|
protected static void |
checkAccess(ExtHandler handler)
Check access.
|
Handler[] |
clearHandlers()
A convenience method to atomically get and clear all sub-handlers.
|
void |
close()
Close all child handlers.
|
void |
disableAccess()
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.
|
void |
enableAccess(Object protectKey)
Enable access to the object for modifications on the current thread.
|
void |
flush()
Flush all child handlers.
|
Handler[] |
getHandlers()
Get a copy of the sub-handlers array.
|
boolean |
isAutoFlush()
Determine if this handler will auto-flush.
|
boolean |
isCallerCalculationRequired()
Indicates whether or not the formatter associated with this handler or a formatter
from a child handler requires the caller to be calculated.
|
boolean |
isCloseChildren()
Indicates whether or not children handlers should be closed when this handler is closed.
|
boolean |
isEnabled()
Determine if the handler is enabled.
|
void |
protect(Object protectionKey)
Protect this object from modifications.
|
void |
publish(ExtLogRecord record)
Publish an
ExtLogRecord . |
void |
publish(LogRecord record) |
void |
removeHandler(Handler handler)
Remove a sub-handler from this handler.
|
void |
setAutoFlush(boolean autoFlush)
Change the autoflush setting for this handler.
|
void |
setCloseChildren(boolean closeChildren)
Sets whether or not children handlers should be closed when this handler is closed.
|
void |
setEnabled(boolean enabled)
Enables or disables the handler based on the value passed in.
|
void |
setEncoding(String encoding) |
void |
setErrorManager(ErrorManager em) |
void |
setFilter(Filter newFilter) |
void |
setFormatter(Formatter newFormatter) |
Handler[] |
setHandlers(Handler[] newHandlers)
A convenience method to atomically get and replace the sub-handler array.
|
void |
setLevel(Level newLevel) |
void |
unprotect(Object protectionKey)
Allows the object to be modified if the
protectionKey matches the key used to protect the object. |
getEncoding, getErrorManager, getFilter, getFormatter, getLevel, isLoggable, reportError
protected volatile Handler[] handlers
handlersUpdater
atomic updater. The array
instance should not be modified (treat as immutable).protected static final org.jboss.logmanager.AtomicArray<ExtHandler,Handler> handlersUpdater
handlers
field.public void publish(ExtLogRecord record)
ExtLogRecord
.
The logging request was made initially to a Logger object, which initialized the LogRecord and forwarded it here.
The ExtHandler
is responsible for formatting the message, when and if necessary. The formatting should
include localization.record
- the log record to publishprotected void doPublish(ExtLogRecord record)
autoFlush
property is set to true
; if this behavior is to be
preserved in a subclass then this method should be called after the record is physically written.record
- the log record to publishpublic void addHandler(Handler handler) throws SecurityException
handler
- the handler to addSecurityException
- if a security manager exists and if the caller does not have LoggingPermission(control)
or the handler is protected
.public void removeHandler(Handler handler) throws SecurityException
handler
- the handler to removeSecurityException
- if a security manager exists and if the caller does not have LoggingPermission(control)
or the handler is protected
.public Handler[] getHandlers()
public Handler[] clearHandlers() throws SecurityException
SecurityException
- if a security manager exists and if the caller does not have LoggingPermission(control)
or the handler is protected
.public Handler[] setHandlers(Handler[] newHandlers) throws SecurityException
newHandlers
- the new sub-handlersSecurityException
- if a security manager exists and if the caller does not have LoggingPermission(control)
or the handler is protected
.public boolean isAutoFlush()
true
if auto-flush is enabledpublic void setAutoFlush(boolean autoFlush) throws SecurityException
autoFlush
- true
to automatically flush after each write; false otherwiseSecurityException
- if a security manager exists and if the caller does not have LoggingPermission(control)
or the handler is protected
.public final void setEnabled(boolean enabled) throws SecurityException
enabled
- true
to enable the handler or false
to disable the handler.SecurityException
- if a security manager exists and if the caller does not have LoggingPermission(control)
or the handler is protected
.public final boolean isEnabled()
true
if the handler is enabled, otherwise false
.public boolean isCloseChildren()
true
if the children handlers should be closed when this handler is closed, false
if
children handlers should not be closed when this handler is closedpublic void setCloseChildren(boolean closeChildren)
closeChildren
- true
if all children handlers should be closed when this handler is closed,
false
if children handlers will not be closed when this handler
is closedpublic final void protect(Object protectionKey) throws SecurityException
Protectable
protect
in interface Protectable
protectionKey
- the key used to protect the object.SecurityException
- if the object is already protected.public final void unprotect(Object protectionKey) throws SecurityException
Protectable
protectionKey
matches the key used to protect
the object.unprotect
in interface Protectable
protectionKey
- the key used to protect the object.SecurityException
- if the object is protected and the key doesn't match.public final void enableAccess(Object protectKey)
Protectable
enableAccess
in interface Protectable
protectKey
- the key used to protect
modifications.public final void disableAccess()
Protectable
disableAccess
in interface Protectable
@Deprecated protected static void checkAccess() throws SecurityException
checkAccess(ExtHandler)
SecurityException
- if a security manager is installed and the caller does not have the "control" LoggingPermission
protected static void checkAccess(ExtHandler handler) throws SecurityException
handler
- the handler to check access on.SecurityException
- if a security manager exists and if the caller does not have LoggingPermission(control)
or the handler is protected
.public void flush()
public void close() throws SecurityException
close
in interface Closeable
close
in interface AutoCloseable
close
in class Handler
SecurityException
public void setFormatter(Formatter newFormatter) throws SecurityException
setFormatter
in class Handler
SecurityException
public void setFilter(Filter newFilter) throws SecurityException
setFilter
in class Handler
SecurityException
public void setEncoding(String encoding) throws SecurityException, UnsupportedEncodingException
setEncoding
in class Handler
SecurityException
UnsupportedEncodingException
public void setErrorManager(ErrorManager em)
setErrorManager
in class Handler
public void setLevel(Level newLevel) throws SecurityException
setLevel
in class Handler
SecurityException
public boolean isCallerCalculationRequired()
Calculating the caller on a log record can be an expensive operation. Some handlers
may be required to copy some data from the log record, but may not need the caller information. If the
formatter is a ExtFormatter
the
ExtFormatter.isCallerCalculationRequired()
is used to determine if calculation of the caller is
required.
true
if the caller should be calculated, otherwise false
if it can be skippedLogRecord.getSourceClassName()
,
ExtLogRecord.getSourceFileName()
,
ExtLogRecord.getSourceLineNumber()
,
LogRecord.getSourceMethodName()
Copyright © 2019 JBoss by Red Hat. All rights reserved.