示例#1
0
        public SszLogger(
            string name,
            SszLoggerOptions options)
        {
            (_name, Options) = (name, options);

            _logFileTextWriter = new LogFileTextWriter(options);

            _timer = new Timer(OnTimerCallback, null, 1000, 1000);
        }
示例#2
0
        /// <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
                    {
                    }
                }
            }
        }
示例#3
0
 public SszLoggerProvider(SszLoggerOptions options) =>