From 406a15c5bd678ef6a025546c577a840d59b3864a Mon Sep 17 00:00:00 2001 From: Shaun Walker Date: Fri, 17 Sep 2021 09:17:42 -0400 Subject: [PATCH] constrain file logger size --- .../Infrastructure/Logging/FileLogger.cs | 38 ++++++++++++------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/Oqtane.Server/Infrastructure/Logging/FileLogger.cs b/Oqtane.Server/Infrastructure/Logging/FileLogger.cs index 91f1f948..b1651581 100644 --- a/Oqtane.Server/Infrastructure/Logging/FileLogger.cs +++ b/Oqtane.Server/Infrastructure/Logging/FileLogger.cs @@ -45,6 +45,8 @@ namespace Oqtane.Infrastructure } string folder = Path.Combine(_environment.ContentRootPath, "Content", "Log"); + var filepath = Path.Combine(folder, "error.log"); + long size = 0; // ensure directory exists if (!Directory.Exists(folder)) @@ -52,26 +54,34 @@ namespace Oqtane.Infrastructure Directory.CreateDirectory(folder); } - var filepath = Path.Combine(folder, "error.log"); - - // only retain an error log for the current day as it is intended for development purposes - if (File.Exists(filepath) && File.GetLastWriteTimeUtc(filepath).Date < DateTime.UtcNow.Date) + if (File.Exists(filepath)) { - File.Delete(filepath); - } + var fileinfo = new FileInfo(filepath); + size = fileinfo.Length; - var logentry = string.Format("{0} [{1}] {2} {3}", "[" + DateTimeOffset.UtcNow.ToString("yyyy-MM-dd HH:mm:ss+00:00") + "]", logLevel.ToString(), formatter(state, exception), exception != null ? exception.StackTrace : ""); - - try - { - using (var streamWriter = new StreamWriter(filepath, true)) + // only retain an error log for the current day as it is intended for development purposes + if (fileinfo.LastWriteTimeUtc.Date < DateTime.UtcNow.Date) { - streamWriter.WriteLine(logentry); + File.Delete(filepath); } } - catch + + // do not allow the log to exceed 1 MB + if (size < 1000000) { - // error occurred + try + { + var logentry = string.Format("{0} [{1}] {2} {3}", "[" + DateTimeOffset.UtcNow.ToString("yyyy-MM-dd HH:mm:ss+00:00") + "]", logLevel.ToString(), formatter(state, exception), exception != null ? exception.StackTrace : ""); + + using (var streamWriter = new StreamWriter(filepath, true)) + { + streamWriter.WriteLine(logentry); + } + } + catch + { + // error occurred + } } } }