diff --git a/ExtremelySimpleLogger/FileSink.cs b/ExtremelySimpleLogger/FileSink.cs
index d7105b2..8253282 100644
--- a/ExtremelySimpleLogger/FileSink.cs
+++ b/ExtremelySimpleLogger/FileSink.cs
@@ -6,6 +6,7 @@ namespace ExtremelySimpleLogger {
///
public class FileSink : Sink {
+ private const int OneGb = 1024 * 1024 * 1024;
private readonly FileInfo file;
private readonly StreamWriter writer;
private readonly bool reopenOnWrite;
@@ -16,8 +17,9 @@ namespace ExtremelySimpleLogger {
/// The full, or relative, path of the file to write to
/// Whether new output should be appended to the old log file
/// Whether this file sink should reopen the file every time it logs to it. If this is false, the file will be kept open by this sink.
- public FileSink(string file, bool append, bool reopenOnWrite = false) :
- this(new FileInfo(file), append, reopenOnWrite) {
+ /// If is true, this property determines how big the log file has to be (in bytes) before it is deleted on startup. Defaults to 1gb.
+ public FileSink(string file, bool append, bool reopenOnWrite = false, int fileSizeLimit = OneGb) :
+ this(new FileInfo(file), append, reopenOnWrite, fileSizeLimit) {
}
///
@@ -26,7 +28,8 @@ namespace ExtremelySimpleLogger {
/// The full, or relative, path of the file to write to
/// Whether new output should be appended to the old log file
/// Whether this file sink should reopen the file every time it logs to it. If this is false, the file will be kept open by this sink.
- public FileSink(FileInfo file, bool append, bool reopenOnWrite = false) {
+ /// If is true, this property determines how big the log file has to be (in bytes) before it is deleted on startup.
+ public FileSink(FileInfo file, bool append, bool reopenOnWrite = false, int fileSizeLimit = OneGb) {
this.reopenOnWrite = reopenOnWrite;
this.file = file;
@@ -34,7 +37,7 @@ namespace ExtremelySimpleLogger {
if (dir != null && !dir.Exists)
dir.Create();
- if (!append && file.Exists)
+ if (file.Exists && (!append || file.Length >= fileSizeLimit))
file.Delete();
if (!reopenOnWrite) {