Class RollingFileManager
java.lang.Object
org.apache.logging.log4j.core.appender.AbstractManager
org.apache.logging.log4j.core.appender.OutputStreamManager
org.apache.logging.log4j.core.appender.FileManager
org.apache.logging.log4j.core.appender.rolling.RollingFileManager
- All Implemented Interfaces:
AutoCloseable
,ByteBufferDestination
- Direct Known Subclasses:
RollingRandomAccessFileManager
The Rolling File Manager.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static class
Performs actions asynchronously.private static class
private static class
Factory data.private static class
Factory to create a RollingFileManager.Nested classes/interfaces inherited from class org.apache.logging.log4j.core.appender.AbstractManager
AbstractManager.AbstractFactoryData
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ExecutorService
private final boolean
private static final FileTime
private static RollingFileManager.RollingFileManagerFactory
private String
private boolean
private long
private static final int
private static final int
private PatternProcessor
private static final AtomicReferenceFieldUpdater<RollingFileManager,
PatternProcessor> private boolean
private final CopyOnWriteArrayList<RolloverListener>
private RolloverStrategy
private static final AtomicReferenceFieldUpdater<RollingFileManager,
RolloverStrategy> private final Semaphore
protected long
private final Log4jThreadFactory
private TriggeringPolicy
private static final AtomicReferenceFieldUpdater<RollingFileManager,
TriggeringPolicy> Fields inherited from class org.apache.logging.log4j.core.appender.OutputStreamManager
byteBuffer, layout
Fields inherited from class org.apache.logging.log4j.core.appender.AbstractManager
count, LOGGER
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
RollingFileManager
(String fileName, String pattern, OutputStream os, boolean append, long size, long initialTime, TriggeringPolicy triggeringPolicy, RolloverStrategy rolloverStrategy, String advertiseURI, Layout<? extends Serializable> layout, boolean writeHeader, ByteBuffer buffer) Deprecated.protected
RollingFileManager
(String fileName, String pattern, OutputStream os, boolean append, long size, long initialTime, TriggeringPolicy triggeringPolicy, RolloverStrategy rolloverStrategy, String advertiseURI, Layout<? extends Serializable> layout, int bufferSize, boolean writeHeader) Deprecated.protected
RollingFileManager
(LoggerContext loggerContext, String fileName, String pattern, OutputStream os, boolean append, boolean createOnDemand, long size, long initialTime, TriggeringPolicy triggeringPolicy, RolloverStrategy rolloverStrategy, String advertiseURI, Layout<? extends Serializable> layout, boolean writeHeader, ByteBuffer buffer) Deprecated.protected
RollingFileManager
(LoggerContext loggerContext, String fileName, String pattern, OutputStream os, boolean append, boolean createOnDemand, long size, long initialTime, TriggeringPolicy triggeringPolicy, RolloverStrategy rolloverStrategy, String advertiseURI, Layout<? extends Serializable> layout, String filePermissions, String fileOwner, String fileGroup, boolean writeHeader, ByteBuffer buffer) -
Method Summary
Modifier and TypeMethodDescriptionvoid
addRolloverListener
(RolloverListener listener) Add a RolloverListener.void
checkRollover
(LogEvent event) Determines if a rollover should occur.protected void
protected void
createParentDir
(File file) static RollingFileManager
getFileManager
(String fileName, String pattern, boolean append, boolean bufferedIO, TriggeringPolicy policy, RolloverStrategy strategy, String advertiseURI, Layout<? extends Serializable> layout, int bufferSize, boolean immediateFlush, boolean createOnDemand, String filePermissions, String fileOwner, String fileGroup, Configuration configuration) Returns a RollingFileManager.Returns the name of the File being managed.long
Returns the current size of the file.long
Returns the time the file was created.Returns the pattern processor.Returns the rollover strategy.(package private) Semaphore
Package-private access for tests only.<T extends TriggeringPolicy>
TReturns the triggering policy.private static long
initialFileTime
(File file) void
boolean
boolean
boolean
releaseSub
(long timeout, TimeUnit timeUnit) Default hook to write footer during close.void
removeRolloverListener
(RolloverListener listener) Remove a RolloverListener.void
rollover()
void
private boolean
rollover
(RolloverStrategy strategy) void
setPatternProcessor
(PatternProcessor patternProcessor) void
setRenameEmptyFiles
(boolean renameEmptyFiles) void
setRolloverStrategy
(RolloverStrategy rolloverStrategy) void
setTriggeringPolicy
(TriggeringPolicy triggeringPolicy) void
updateData
(Object data) Updates the RollingFileManager's data during a reconfiguration.protected void
write
(byte[] bytes, int offset, int length, boolean immediateFlush) Some output streams synchronize writes while others do not.protected void
writeToDestination
(byte[] bytes, int offset, int length) OverridesOutputStreamManager.writeToDestination(byte[], int, int)
to add support for file locking.Methods inherited from class org.apache.logging.log4j.core.appender.FileManager
createOutputStream, defineAttributeView, getBufferSize, getContentFormat, getFileGroup, getFileManager, getFileOwner, getFilePermissions, isAppend, isAttributeViewEnabled, isCreateOnDemand, isLocking
Methods inherited from class org.apache.logging.log4j.core.appender.OutputStreamManager
closeOutputStream, drain, flush, flushBuffer, flushDestination, getByteBuffer, getManager, getOutputStream, hasOutputStream, isOpen, setOutputStream, skipFooter, write, write, write, writeBytes, writeBytes, writeFooter, writeHeader
Methods inherited from class org.apache.logging.log4j.core.appender.AbstractManager
close, getCount, getLoggerContext, getManager, getName, getStrSubstitutor, hasManager, log, logDebug, logError, logger, logWarn, narrow, release, stop
-
Field Details
-
factory
-
MAX_TRIES
private static final int MAX_TRIES- See Also:
-
MIN_DURATION
private static final int MIN_DURATION- See Also:
-
EPOCH
-
size
protected long size -
initialTime
private long initialTime -
patternProcessor
-
semaphore
-
threadFactory
-
triggeringPolicy
-
rolloverStrategy
-
renameEmptyFiles
private volatile boolean renameEmptyFiles -
initialized
private volatile boolean initialized -
fileName
-
directWrite
private final boolean directWrite -
rolloverListeners
-
asyncExecutor
-
triggeringPolicyUpdater
private static final AtomicReferenceFieldUpdater<RollingFileManager,TriggeringPolicy> triggeringPolicyUpdater -
rolloverStrategyUpdater
private static final AtomicReferenceFieldUpdater<RollingFileManager,RolloverStrategy> rolloverStrategyUpdater -
patternProcessorUpdater
private static final AtomicReferenceFieldUpdater<RollingFileManager,PatternProcessor> patternProcessorUpdater
-
-
Constructor Details
-
RollingFileManager
@Deprecated protected RollingFileManager(String fileName, String pattern, OutputStream os, boolean append, long size, long initialTime, TriggeringPolicy triggeringPolicy, RolloverStrategy rolloverStrategy, String advertiseURI, Layout<? extends Serializable> layout, int bufferSize, boolean writeHeader) Deprecated. -
RollingFileManager
@Deprecated protected RollingFileManager(String fileName, String pattern, OutputStream os, boolean append, long size, long initialTime, TriggeringPolicy triggeringPolicy, RolloverStrategy rolloverStrategy, String advertiseURI, Layout<? extends Serializable> layout, boolean writeHeader, ByteBuffer buffer) Deprecated. -
RollingFileManager
@Deprecated protected RollingFileManager(LoggerContext loggerContext, String fileName, String pattern, OutputStream os, boolean append, boolean createOnDemand, long size, long initialTime, TriggeringPolicy triggeringPolicy, RolloverStrategy rolloverStrategy, String advertiseURI, Layout<? extends Serializable> layout, boolean writeHeader, ByteBuffer buffer) Deprecated. -
RollingFileManager
protected RollingFileManager(LoggerContext loggerContext, String fileName, String pattern, OutputStream os, boolean append, boolean createOnDemand, long size, long initialTime, TriggeringPolicy triggeringPolicy, RolloverStrategy rolloverStrategy, String advertiseURI, Layout<? extends Serializable> layout, String filePermissions, String fileOwner, String fileGroup, boolean writeHeader, ByteBuffer buffer) - Since:
- 2.9
-
-
Method Details
-
initialize
public void initialize() -
getFileManager
public static RollingFileManager getFileManager(String fileName, String pattern, boolean append, boolean bufferedIO, TriggeringPolicy policy, RolloverStrategy strategy, String advertiseURI, Layout<? extends Serializable> layout, int bufferSize, boolean immediateFlush, boolean createOnDemand, String filePermissions, String fileOwner, String fileGroup, Configuration configuration) Returns a RollingFileManager.- Parameters:
fileName
- The file name.pattern
- The pattern for rolling file.append
- true if the file should be appended to.bufferedIO
- true if data should be buffered.policy
- The TriggeringPolicy.strategy
- The RolloverStrategy.advertiseURI
- the URI to use when advertising the filelayout
- The Layout.bufferSize
- buffer size to use if bufferedIO is trueimmediateFlush
- flush on every write or notcreateOnDemand
- true if you want to lazy-create the file (a.k.a. on-demand.)filePermissions
- File permissionsfileOwner
- File ownerfileGroup
- File groupconfiguration
- The configuration.- Returns:
- A RollingFileManager.
-
addRolloverListener
Add a RolloverListener.- Parameters:
listener
- The RolloverListener.
-
removeRolloverListener
Remove a RolloverListener.- Parameters:
listener
- The RolloverListener.
-
getFileName
Returns the name of the File being managed.- Overrides:
getFileName
in classFileManager
- Returns:
- The name of the File being managed.
-
createParentDir
- Overrides:
createParentDir
in classFileManager
-
isDirectWrite
public boolean isDirectWrite() -
getFileExtension
-
write
protected void write(byte[] bytes, int offset, int length, boolean immediateFlush) Description copied from class:OutputStreamManager
Some output streams synchronize writes while others do not. Synchronizing here insures that log events won't be intertwined.- Overrides:
write
in classFileManager
- Parameters:
bytes
- The serialized Log event.offset
- The offset into the byte array.length
- The number of bytes to write.immediateFlush
- flushes immediately after writing.
-
writeToDestination
protected void writeToDestination(byte[] bytes, int offset, int length) Description copied from class:FileManager
OverridesOutputStreamManager.writeToDestination(byte[], int, int)
to add support for file locking.- Overrides:
writeToDestination
in classFileManager
- Parameters:
bytes
- the array containing dataoffset
- from where to writelength
- how many bytes to write
-
isRenameEmptyFiles
public boolean isRenameEmptyFiles() -
setRenameEmptyFiles
public void setRenameEmptyFiles(boolean renameEmptyFiles) -
getFileSize
public long getFileSize()Returns the current size of the file.- Returns:
- The size of the file in bytes.
-
getFileTime
public long getFileTime()Returns the time the file was created.- Returns:
- The time the file was created.
-
checkRollover
Determines if a rollover should occur.- Parameters:
event
- The LogEvent.
-
releaseSub
Description copied from class:OutputStreamManager
Default hook to write footer during close.- Overrides:
releaseSub
in classOutputStreamManager
- Parameters:
timeout
- timeouttimeUnit
- timeout time unit- Returns:
- true if all resources were closed normally, false otherwise.
-
rollover
-
rollover
public void rollover() -
createFileAfterRollover
- Throws:
IOException
-
getPatternProcessor
Returns the pattern processor.- Returns:
- The PatternProcessor.
-
setTriggeringPolicy
-
setRolloverStrategy
-
setPatternProcessor
-
getTriggeringPolicy
Returns the triggering policy.- Type Parameters:
T
- TriggeringPolicy type- Returns:
- The TriggeringPolicy
-
getSemaphore
Semaphore getSemaphore()Package-private access for tests only.- Returns:
- The semaphore that controls access to the rollover operation.
-
getRolloverStrategy
Returns the rollover strategy.- Returns:
- The RolloverStrategy
-
rollover
-
updateData
Updates the RollingFileManager's data during a reconfiguration. This method should be considered private. It is not thread safe and calling it outside of a reconfiguration may lead to errors. This method may be made protected in a future release.- Overrides:
updateData
in classAbstractManager
- Parameters:
data
- The data to update.
-
initialFileTime
-