public SszLogger( string name, SszLoggerOptions options) { (_name, Options) = (name, options); _logFileTextWriter = new LogFileTextWriter(options); _timer = new Timer(OnTimerCallback, null, 1000, 1000); }
/// <summary> /// /// </summary> /// <param name="options"></param> public LogFileTextWriter(SszLoggerOptions options) : base(null) { _options = options; _logsDirectoryFullName = Environment.ExpandEnvironmentVariables(_options.LogsDirectory); // Creates all directories and subdirectories in the specified path unless they // already exist. if (String.IsNullOrEmpty(_logsDirectoryFullName)) { _logsDirectoryFullName = Directory.GetCurrentDirectory(); } else { Directory.CreateDirectory(_logsDirectoryFullName); } if (!String.IsNullOrEmpty(_options.LogFileName)) { LogFileFullName = Path.Combine(_logsDirectoryFullName, _options.LogFileName); } else { Process currentProcess = Process.GetCurrentProcess(); string? moduleName = currentProcess.MainModule?.ModuleName; if (moduleName is null) { throw new InvalidOperationException(); } var exeFileName = new FileInfo(moduleName).Name; LogFileFullName = Path.Combine(_logsDirectoryFullName, exeFileName + @"." + currentProcess.Id + @".log"); #region DeleteOldFiles string[] files = Directory.GetFiles(_logsDirectoryFullName, exeFileName + @".*.log"); foreach (string file in files) { try { var f = new FileInfo(file); if (f.LastAccessTime < DateTime.Now.AddDays(-_options.DaysCountToStoreFiles)) { f.Delete(); } } catch { } } #endregion } if (_options.LogFileMaxSizeInBytes == 0) { var fi = new FileInfo(LogFileFullName); if (fi.Exists) { try { fi.Delete(); } catch { } } } }
public SszLoggerProvider(SszLoggerOptions options) =>