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:
java.lang.AutoCloseable
,ByteBufferDestination
- Direct Known Subclasses:
RollingRandomAccessFileManager
public class RollingFileManager extends FileManager
The Rolling File Manager.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
RollingFileManager.AsyncAction
Performs actions asynchronously.private static class
RollingFileManager.EmptyQueue
private static class
RollingFileManager.FactoryData
Factory data.private static class
RollingFileManager.RollingFileManagerFactory
Factory to create a RollingFileManager.
-
Field Summary
Fields Modifier and Type Field Description private java.util.concurrent.ExecutorService
asyncExecutor
private boolean
directWrite
private static java.nio.file.attribute.FileTime
EPOCH
private static RollingFileManager.RollingFileManagerFactory
factory
private java.lang.String
fileName
private boolean
initialized
private long
initialTime
private static int
MAX_TRIES
private static int
MIN_DURATION
private PatternProcessor
patternProcessor
private static java.util.concurrent.atomic.AtomicReferenceFieldUpdater<RollingFileManager,PatternProcessor>
patternProcessorUpdater
private boolean
renameEmptyFiles
private RolloverStrategy
rolloverStrategy
private static java.util.concurrent.atomic.AtomicReferenceFieldUpdater<RollingFileManager,RolloverStrategy>
rolloverStrategyUpdater
private java.util.concurrent.Semaphore
semaphore
protected long
size
private Log4jThreadFactory
threadFactory
private TriggeringPolicy
triggeringPolicy
private static java.util.concurrent.atomic.AtomicReferenceFieldUpdater<RollingFileManager,TriggeringPolicy>
triggeringPolicyUpdater
-
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
Constructors Modifier Constructor Description protected
RollingFileManager(java.lang.String fileName, java.lang.String pattern, java.io.OutputStream os, boolean append, long size, long initialTime, TriggeringPolicy triggeringPolicy, RolloverStrategy rolloverStrategy, java.lang.String advertiseURI, Layout<? extends java.io.Serializable> layout, boolean writeHeader, java.nio.ByteBuffer buffer)
Deprecated.protected
RollingFileManager(java.lang.String fileName, java.lang.String pattern, java.io.OutputStream os, boolean append, long size, long initialTime, TriggeringPolicy triggeringPolicy, RolloverStrategy rolloverStrategy, java.lang.String advertiseURI, Layout<? extends java.io.Serializable> layout, int bufferSize, boolean writeHeader)
Deprecated.protected
RollingFileManager(LoggerContext loggerContext, java.lang.String fileName, java.lang.String pattern, java.io.OutputStream os, boolean append, boolean createOnDemand, long size, long initialTime, TriggeringPolicy triggeringPolicy, RolloverStrategy rolloverStrategy, java.lang.String advertiseURI, Layout<? extends java.io.Serializable> layout, boolean writeHeader, java.nio.ByteBuffer buffer)
Deprecated.protected
RollingFileManager(LoggerContext loggerContext, java.lang.String fileName, java.lang.String pattern, java.io.OutputStream os, boolean append, boolean createOnDemand, long size, long initialTime, TriggeringPolicy triggeringPolicy, RolloverStrategy rolloverStrategy, java.lang.String advertiseURI, Layout<? extends java.io.Serializable> layout, java.lang.String filePermissions, java.lang.String fileOwner, java.lang.String fileGroup, boolean writeHeader, java.nio.ByteBuffer buffer)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
checkRollover(LogEvent event)
Determines if a rollover should occur.protected void
createFileAfterRollover()
FileExtension
getFileExtension()
static RollingFileManager
getFileManager(java.lang.String fileName, java.lang.String pattern, boolean append, boolean bufferedIO, TriggeringPolicy policy, RolloverStrategy strategy, java.lang.String advertiseURI, Layout<? extends java.io.Serializable> layout, int bufferSize, boolean immediateFlush, boolean createOnDemand, java.lang.String filePermissions, java.lang.String fileOwner, java.lang.String fileGroup, Configuration configuration)
Returns a RollingFileManager.java.lang.String
getFileName()
Returns the name of the File being managed.long
getFileSize()
Returns the current size of the file.long
getFileTime()
Returns the time the file was created.PatternProcessor
getPatternProcessor()
Returns the pattern processor.RolloverStrategy
getRolloverStrategy()
Returns the rollover strategy.<T extends TriggeringPolicy>
TgetTriggeringPolicy()
Returns the triggering policy.private static long
initialFileTime(java.io.File file)
void
initialize()
boolean
isDirectWrite()
boolean
isRenameEmptyFiles()
boolean
releaseSub(long timeout, java.util.concurrent.TimeUnit timeUnit)
Default hook to write footer during close.void
rollover()
void
rollover(java.util.Date prevFileTime, java.util.Date prevRollTime)
private boolean
rollover(RolloverStrategy strategy)
void
setPatternProcessor(PatternProcessor patternProcessor)
void
setRenameEmptyFiles(boolean renameEmptyFiles)
void
setRolloverStrategy(RolloverStrategy rolloverStrategy)
void
setTriggeringPolicy(TriggeringPolicy triggeringPolicy)
void
updateData(java.lang.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, hasManager, log, logDebug, logError, logger, logWarn, narrow, release, stop
-
-
-
-
Field Detail
-
factory
private static RollingFileManager.RollingFileManagerFactory factory
-
MAX_TRIES
private static final int MAX_TRIES
- See Also:
- Constant Field Values
-
MIN_DURATION
private static final int MIN_DURATION
- See Also:
- Constant Field Values
-
EPOCH
private static final java.nio.file.attribute.FileTime EPOCH
-
size
protected long size
-
initialTime
private long initialTime
-
patternProcessor
private volatile PatternProcessor patternProcessor
-
semaphore
private final java.util.concurrent.Semaphore semaphore
-
threadFactory
private final Log4jThreadFactory threadFactory
-
triggeringPolicy
private volatile TriggeringPolicy triggeringPolicy
-
rolloverStrategy
private volatile RolloverStrategy rolloverStrategy
-
renameEmptyFiles
private volatile boolean renameEmptyFiles
-
initialized
private volatile boolean initialized
-
fileName
private volatile java.lang.String fileName
-
directWrite
private final boolean directWrite
-
asyncExecutor
private final java.util.concurrent.ExecutorService asyncExecutor
-
triggeringPolicyUpdater
private static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater<RollingFileManager,TriggeringPolicy> triggeringPolicyUpdater
-
rolloverStrategyUpdater
private static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater<RollingFileManager,RolloverStrategy> rolloverStrategyUpdater
-
patternProcessorUpdater
private static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater<RollingFileManager,PatternProcessor> patternProcessorUpdater
-
-
Constructor Detail
-
RollingFileManager
@Deprecated protected RollingFileManager(java.lang.String fileName, java.lang.String pattern, java.io.OutputStream os, boolean append, long size, long initialTime, TriggeringPolicy triggeringPolicy, RolloverStrategy rolloverStrategy, java.lang.String advertiseURI, Layout<? extends java.io.Serializable> layout, int bufferSize, boolean writeHeader)
Deprecated.
-
RollingFileManager
@Deprecated protected RollingFileManager(java.lang.String fileName, java.lang.String pattern, java.io.OutputStream os, boolean append, long size, long initialTime, TriggeringPolicy triggeringPolicy, RolloverStrategy rolloverStrategy, java.lang.String advertiseURI, Layout<? extends java.io.Serializable> layout, boolean writeHeader, java.nio.ByteBuffer buffer)
Deprecated.
-
RollingFileManager
@Deprecated protected RollingFileManager(LoggerContext loggerContext, java.lang.String fileName, java.lang.String pattern, java.io.OutputStream os, boolean append, boolean createOnDemand, long size, long initialTime, TriggeringPolicy triggeringPolicy, RolloverStrategy rolloverStrategy, java.lang.String advertiseURI, Layout<? extends java.io.Serializable> layout, boolean writeHeader, java.nio.ByteBuffer buffer)
Deprecated.
-
RollingFileManager
protected RollingFileManager(LoggerContext loggerContext, java.lang.String fileName, java.lang.String pattern, java.io.OutputStream os, boolean append, boolean createOnDemand, long size, long initialTime, TriggeringPolicy triggeringPolicy, RolloverStrategy rolloverStrategy, java.lang.String advertiseURI, Layout<? extends java.io.Serializable> layout, java.lang.String filePermissions, java.lang.String fileOwner, java.lang.String fileGroup, boolean writeHeader, java.nio.ByteBuffer buffer)
- Since:
- 2.9
-
-
Method Detail
-
initialize
public void initialize()
-
getFileManager
public static RollingFileManager getFileManager(java.lang.String fileName, java.lang.String pattern, boolean append, boolean bufferedIO, TriggeringPolicy policy, RolloverStrategy strategy, java.lang.String advertiseURI, Layout<? extends java.io.Serializable> layout, int bufferSize, boolean immediateFlush, boolean createOnDemand, java.lang.String filePermissions, java.lang.String fileOwner, java.lang.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.
-
getFileName
public java.lang.String getFileName()
Returns the name of the File being managed.- Overrides:
getFileName
in classFileManager
- Returns:
- The name of the File being managed.
-
isDirectWrite
public boolean isDirectWrite()
-
getFileExtension
public FileExtension 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
public void checkRollover(LogEvent event)
Determines if a rollover should occur.- Parameters:
event
- The LogEvent.
-
releaseSub
public boolean releaseSub(long timeout, java.util.concurrent.TimeUnit timeUnit)
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
public void rollover(java.util.Date prevFileTime, java.util.Date prevRollTime)
-
rollover
public void rollover()
-
createFileAfterRollover
protected void createFileAfterRollover() throws java.io.IOException
- Throws:
java.io.IOException
-
getPatternProcessor
public PatternProcessor getPatternProcessor()
Returns the pattern processor.- Returns:
- The PatternProcessor.
-
setTriggeringPolicy
public void setTriggeringPolicy(TriggeringPolicy triggeringPolicy)
-
setRolloverStrategy
public void setRolloverStrategy(RolloverStrategy rolloverStrategy)
-
setPatternProcessor
public void setPatternProcessor(PatternProcessor patternProcessor)
-
getTriggeringPolicy
public <T extends TriggeringPolicy> T getTriggeringPolicy()
Returns the triggering policy.- Type Parameters:
T
- TriggeringPolicy type- Returns:
- The TriggeringPolicy
-
getRolloverStrategy
public RolloverStrategy getRolloverStrategy()
Returns the rollover strategy.- Returns:
- The RolloverStrategy
-
rollover
private boolean rollover(RolloverStrategy strategy)
-
updateData
public void updateData(java.lang.Object data)
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
private static long initialFileTime(java.io.File file)
-
-