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 classRollingFileManager.AsyncActionPerforms actions asynchronously.private static classRollingFileManager.EmptyQueueprivate static classRollingFileManager.FactoryDataFactory data.private static classRollingFileManager.RollingFileManagerFactoryFactory to create a RollingFileManager.-
Nested classes/interfaces inherited from class org.apache.logging.log4j.core.appender.AbstractManager
AbstractManager.AbstractFactoryData
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.concurrent.ExecutorServiceasyncExecutorprivate booleandirectWriteprivate static java.nio.file.attribute.FileTimeEPOCHprivate static RollingFileManager.RollingFileManagerFactoryfactoryprivate java.lang.StringfileNameprivate booleaninitializedprivate longinitialTimeprivate static intMAX_TRIESprivate static intMIN_DURATIONprivate PatternProcessorpatternProcessorprivate static java.util.concurrent.atomic.AtomicReferenceFieldUpdater<RollingFileManager,PatternProcessor>patternProcessorUpdaterprivate booleanrenameEmptyFilesprivate java.util.concurrent.CopyOnWriteArrayList<RolloverListener>rolloverListenersprivate RolloverStrategyrolloverStrategyprivate static java.util.concurrent.atomic.AtomicReferenceFieldUpdater<RollingFileManager,RolloverStrategy>rolloverStrategyUpdaterprivate java.util.concurrent.Semaphoresemaphoreprotected longsizeprivate Log4jThreadFactorythreadFactoryprivate TriggeringPolicytriggeringPolicyprivate 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 protectedRollingFileManager(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.protectedRollingFileManager(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.protectedRollingFileManager(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.protectedRollingFileManager(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 voidaddRolloverListener(RolloverListener listener)Add a RolloverListener.voidcheckRollover(LogEvent event)Determines if a rollover should occur.protected voidcreateFileAfterRollover()protected voidcreateParentDir(java.io.File file)FileExtensiongetFileExtension()static RollingFileManagergetFileManager(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.StringgetFileName()Returns the name of the File being managed.longgetFileSize()Returns the current size of the file.longgetFileTime()Returns the time the file was created.PatternProcessorgetPatternProcessor()Returns the pattern processor.RolloverStrategygetRolloverStrategy()Returns the rollover strategy.(package private) java.util.concurrent.SemaphoregetSemaphore()Package-private access for tests only.<T extends TriggeringPolicy>
TgetTriggeringPolicy()Returns the triggering policy.private static longinitialFileTime(java.io.File file)voidinitialize()booleanisDirectWrite()booleanisRenameEmptyFiles()booleanreleaseSub(long timeout, java.util.concurrent.TimeUnit timeUnit)Default hook to write footer during close.voidremoveRolloverListener(RolloverListener listener)Remove a RolloverListener.voidrollover()voidrollover(java.util.Date prevFileTime, java.util.Date prevRollTime)private booleanrollover(RolloverStrategy strategy)voidsetPatternProcessor(PatternProcessor patternProcessor)voidsetRenameEmptyFiles(boolean renameEmptyFiles)voidsetRolloverStrategy(RolloverStrategy rolloverStrategy)voidsetTriggeringPolicy(TriggeringPolicy triggeringPolicy)voidupdateData(java.lang.Object data)Updates the RollingFileManager's data during a reconfiguration.protected voidwrite(byte[] bytes, int offset, int length, boolean immediateFlush)Some output streams synchronize writes while others do not.protected voidwriteToDestination(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 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
-
rolloverListeners
private final java.util.concurrent.CopyOnWriteArrayList<RolloverListener> rolloverListeners
-
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.
-
addRolloverListener
public void addRolloverListener(RolloverListener listener)
Add a RolloverListener.- Parameters:
listener- The RolloverListener.
-
removeRolloverListener
public void removeRolloverListener(RolloverListener listener)
Remove a RolloverListener.- Parameters:
listener- The RolloverListener.
-
getFileName
public java.lang.String getFileName()
Returns the name of the File being managed.- Overrides:
getFileNamein classFileManager- Returns:
- The name of the File being managed.
-
createParentDir
protected void createParentDir(java.io.File file)
- Overrides:
createParentDirin classFileManager
-
isDirectWrite
public boolean isDirectWrite()
-
getFileExtension
public FileExtension getFileExtension()
-
write
protected void write(byte[] bytes, int offset, int length, boolean immediateFlush)Description copied from class:OutputStreamManagerSome output streams synchronize writes while others do not. Synchronizing here insures that log events won't be intertwined.- Overrides:
writein 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:FileManagerOverridesOutputStreamManager.writeToDestination(byte[], int, int)to add support for file locking.- Overrides:
writeToDestinationin 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:OutputStreamManagerDefault hook to write footer during close.- Overrides:
releaseSubin 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
-
getSemaphore
java.util.concurrent.Semaphore getSemaphore()
Package-private access for tests only.- Returns:
- The semaphore that controls access to the rollover operation.
-
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:
updateDatain classAbstractManager- Parameters:
data- The data to update.
-
initialFileTime
private static long initialFileTime(java.io.File file)
-
-