mirror of
https://github.com/Ellpeck/ExtremelySimpleLogger.git
synced 2024-11-22 10:03:29 +01:00
give FileSink a maximum amount of bytes before the file is deleted automatically
This commit is contained in:
parent
ef63ac958c
commit
3092a01867
1 changed files with 7 additions and 4 deletions
|
@ -6,6 +6,7 @@ namespace ExtremelySimpleLogger {
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class FileSink : Sink {
|
public class FileSink : Sink {
|
||||||
|
|
||||||
|
private const int OneGb = 1024 * 1024 * 1024;
|
||||||
private readonly FileInfo file;
|
private readonly FileInfo file;
|
||||||
private readonly StreamWriter writer;
|
private readonly StreamWriter writer;
|
||||||
private readonly bool reopenOnWrite;
|
private readonly bool reopenOnWrite;
|
||||||
|
@ -16,8 +17,9 @@ namespace ExtremelySimpleLogger {
|
||||||
/// <param name="file">The full, or relative, path of the file to write to</param>
|
/// <param name="file">The full, or relative, path of the file to write to</param>
|
||||||
/// <param name="append">Whether new output should be appended to the old log file</param>
|
/// <param name="append">Whether new output should be appended to the old log file</param>
|
||||||
/// <param name="reopenOnWrite">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.</param>
|
/// <param name="reopenOnWrite">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.</param>
|
||||||
public FileSink(string file, bool append, bool reopenOnWrite = false) :
|
/// <param name="fileSizeLimit">If <paramref name="append"/> is true, this property determines how big the log file has to be (in bytes) before it is deleted on startup. Defaults to 1gb.</param>
|
||||||
this(new FileInfo(file), append, reopenOnWrite) {
|
public FileSink(string file, bool append, bool reopenOnWrite = false, int fileSizeLimit = OneGb) :
|
||||||
|
this(new FileInfo(file), append, reopenOnWrite, fileSizeLimit) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -26,7 +28,8 @@ namespace ExtremelySimpleLogger {
|
||||||
/// <param name="file">The full, or relative, path of the file to write to</param>
|
/// <param name="file">The full, or relative, path of the file to write to</param>
|
||||||
/// <param name="append">Whether new output should be appended to the old log file</param>
|
/// <param name="append">Whether new output should be appended to the old log file</param>
|
||||||
/// <param name="reopenOnWrite">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.</param>
|
/// <param name="reopenOnWrite">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.</param>
|
||||||
public FileSink(FileInfo file, bool append, bool reopenOnWrite = false) {
|
/// <param name="fileSizeLimit">If <paramref name="append"/> is true, this property determines how big the log file has to be (in bytes) before it is deleted on startup.</param>
|
||||||
|
public FileSink(FileInfo file, bool append, bool reopenOnWrite = false, int fileSizeLimit = OneGb) {
|
||||||
this.reopenOnWrite = reopenOnWrite;
|
this.reopenOnWrite = reopenOnWrite;
|
||||||
this.file = file;
|
this.file = file;
|
||||||
|
|
||||||
|
@ -34,7 +37,7 @@ namespace ExtremelySimpleLogger {
|
||||||
if (dir != null && !dir.Exists)
|
if (dir != null && !dir.Exists)
|
||||||
dir.Create();
|
dir.Create();
|
||||||
|
|
||||||
if (!append && file.Exists)
|
if (file.Exists && (!append || file.Length >= fileSizeLimit))
|
||||||
file.Delete();
|
file.Delete();
|
||||||
|
|
||||||
if (!reopenOnWrite) {
|
if (!reopenOnWrite) {
|
||||||
|
|
Loading…
Reference in a new issue