File tree 2 files changed +17
-2
lines changed
src/Serilog.Sinks.File/Sinks/File
2 files changed +17
-2
lines changed Original file line number Diff line number Diff line change @@ -35,5 +35,19 @@ public abstract class FileLifecycleHooks
35
35
/// <param name="encoding">The encoding to use when reading/writing to the stream.</param>
36
36
/// <returns>The <see cref="Stream"/> Serilog should use when writing events to the log file.</returns>
37
37
public virtual Stream OnFileOpened ( Stream underlyingStream , Encoding encoding ) => underlyingStream ;
38
+
39
+ /// <summary>
40
+ /// Method called on log files that were marked as obsolete (old) and by default would be deleted.
41
+ /// This can be used to move old logs to archive location or send to backup server
42
+ /// </summary>
43
+ /// <remarks>
44
+ /// Executing long synchronous operation may affect responsiveness of application
45
+ /// </remarks>
46
+ /// <param name="fullPath">Log file full path</param>
47
+ /// <returns>
48
+ /// Return if Serilog should delete file.
49
+ /// Warning: returning false and keeping file in same place will result in calling this method again in next scan for obsolete files
50
+ /// </returns>
51
+ public virtual bool OnFileRemoving ( string fullPath ) => true ;
38
52
}
39
53
}
Original file line number Diff line number Diff line change @@ -199,11 +199,12 @@ void ApplyRetentionPolicy(string currentFilePath)
199
199
var fullPath = Path . Combine ( _roller . LogFileDirectory , obsolete ) ;
200
200
try
201
201
{
202
- System . IO . File . Delete ( fullPath ) ;
202
+ if ( _hooks == null || _hooks . OnFileRemoving ( fullPath ) )
203
+ System . IO . File . Delete ( fullPath ) ;
203
204
}
204
205
catch ( Exception ex )
205
206
{
206
- SelfLog . WriteLine ( "Error {0} while removing obsolete log file {1}" , ex , fullPath ) ;
207
+ SelfLog . WriteLine ( "Error {0} while processing obsolete log file {1}" , ex , fullPath ) ;
207
208
}
208
209
}
209
210
}
You can’t perform that action at this time.
0 commit comments