Loggerrework (#45)

* test some refactoring for cachedplayer

* rework logging

* fix saving of log level

---------

Co-authored-by: rootdarkarchon <root.darkarchon@outlook.com>
This commit is contained in:
rootdarkarchon
2023-02-18 15:23:38 +01:00
committed by GitHub
parent 7f36e80e2a
commit 2ae5d42e4d
49 changed files with 676 additions and 691 deletions

View File

@@ -1,6 +1,7 @@
using MareSynchronos.Managers;
using MareSynchronos.MareConfiguration;
using MareSynchronos.Utils;
using Microsoft.Extensions.Logging;
using System.Collections.Concurrent;
using System.Globalization;
using System.Text;
@@ -11,6 +12,7 @@ public class FileCacheManager : IDisposable
{
private const string _penumbraPrefix = "{penumbra}";
private const string _cachePrefix = "{cache}";
private readonly ILogger<FileCacheManager> _logger;
private readonly IpcManager _ipcManager;
private readonly MareConfigService _configService;
private readonly string _csvPath;
@@ -19,8 +21,9 @@ public class FileCacheManager : IDisposable
public const string CsvSplit = "|";
private readonly object _fileWriteLock = new();
public FileCacheManager(IpcManager ipcManager, MareConfigService configService)
public FileCacheManager(ILogger<FileCacheManager> logger, IpcManager ipcManager, MareConfigService configService)
{
_logger = logger;
_ipcManager = ipcManager;
_configService = configService;
_csvPath = Path.Combine(configService.ConfigurationDirectory, "FileCache.csv");
@@ -48,7 +51,7 @@ public class FileCacheManager : IDisposable
}
catch (Exception)
{
Logger.Warn($"Failed to initialize entry {entry}, ignoring");
_logger.LogWarning($"Failed to initialize entry {entry}, ignoring");
}
}
}
@@ -116,7 +119,7 @@ public class FileCacheManager : IDisposable
if (entry == null)
{
Logger.Debug("Found no entries for " + cleanedPath);
_logger.LogDebug("Found no entries for " + cleanedPath);
return CreateFileEntry(path);
}
@@ -127,7 +130,7 @@ public class FileCacheManager : IDisposable
public FileCacheEntity? CreateCacheEntry(string path)
{
Logger.Verbose("Creating cache entry for " + path);
_logger.LogTrace("Creating cache entry for " + path);
FileInfo fi = new(path);
if (!fi.Exists) return null;
var fullName = fi.FullName.ToLowerInvariant();
@@ -138,7 +141,7 @@ public class FileCacheManager : IDisposable
public FileCacheEntity? CreateFileEntry(string path)
{
Logger.Verbose("Creating file entry for " + path);
_logger.LogTrace("Creating file entry for " + path);
FileInfo fi = new(path);
if (!fi.Exists) return null;
var fullName = fi.FullName.ToLowerInvariant();
@@ -158,7 +161,7 @@ public class FileCacheManager : IDisposable
File.AppendAllLines(_csvPath, new[] { entity.CsvEntry });
}
var result = GetFileCacheByPath(fileInfo.FullName);
Logger.Debug("Creating file cache for " + fileInfo.FullName + " success: " + (result != null));
_logger.LogDebug("Creating file cache for " + fileInfo.FullName + " success: " + (result != null));
return result;
}
@@ -188,13 +191,13 @@ public class FileCacheManager : IDisposable
public void RemoveHash(FileCacheEntity entity)
{
Logger.Verbose("Removing " + entity.ResolvedFilepath);
_logger.LogTrace("Removing " + entity.ResolvedFilepath);
_fileCaches.Remove(entity.PrefixedFilePath, out _);
}
public void UpdateHash(FileCacheEntity fileCache)
{
Logger.Verbose("Updating hash for " + fileCache.ResolvedFilepath);
_logger.LogTrace("Updating hash for " + fileCache.ResolvedFilepath);
fileCache.Hash = Crypto.GetFileHash(fileCache.ResolvedFilepath);
fileCache.LastModifiedDateTicks = new FileInfo(fileCache.ResolvedFilepath).LastWriteTimeUtc.Ticks.ToString(CultureInfo.InvariantCulture);
_fileCaches.Remove(fileCache.PrefixedFilePath, out _);
@@ -222,7 +225,7 @@ public class FileCacheManager : IDisposable
public void Dispose()
{
Logger.Verbose($"Disposing {GetType()}");
_logger.LogTrace($"Disposing {GetType()}");
WriteOutFullCsv();
}
}

View File

@@ -2,7 +2,7 @@
using MareSynchronos.Managers;
using MareSynchronos.MareConfiguration;
using MareSynchronos.Mediator;
using MareSynchronos.Utils;
using Microsoft.Extensions.Logging;
namespace MareSynchronos.FileCache;
@@ -15,10 +15,10 @@ public class PeriodicFileScanner : MediatorSubscriberBase, IDisposable
private Task? _fileScannerTask = null;
public ConcurrentDictionary<string, int> haltScanLocks = new(StringComparer.Ordinal);
public PeriodicFileScanner(IpcManager ipcManager, MareConfigService configService, FileCacheManager fileDbManager, MareMediator mediator) : base(mediator)
public PeriodicFileScanner(ILogger<PeriodicFileScanner> logger, IpcManager ipcManager, MareConfigService configService,
FileCacheManager fileDbManager, MareMediator mediator) : base(logger, mediator)
{
Logger.Verbose("Creating " + nameof(PeriodicFileScanner));
_logger.LogTrace("Creating " + nameof(PeriodicFileScanner));
_ipcManager = ipcManager;
_configService = configService;
_fileDbManager = fileDbManager;
@@ -156,19 +156,19 @@ public class PeriodicFileScanner : MediatorSubscriberBase, IDisposable
if (string.IsNullOrEmpty(penumbraDir) || !Directory.Exists(penumbraDir))
{
penDirExists = false;
Logger.Warn("Penumbra directory is not set or does not exist.");
_logger.LogWarning("Penumbra directory is not set or does not exist.");
}
if (string.IsNullOrEmpty(_configService.Current.CacheFolder) || !Directory.Exists(_configService.Current.CacheFolder))
{
cacheDirExists = false;
Logger.Warn("Mare Cache directory is not set or does not exist.");
_logger.LogWarning("Mare Cache directory is not set or does not exist.");
}
if (!penDirExists || !cacheDirExists)
{
return;
}
Logger.Debug("Getting files from " + penumbraDir + " and " + _configService.Current.CacheFolder);
_logger.LogDebug("Getting files from " + penumbraDir + " and " + _configService.Current.CacheFolder);
string[] ext = { ".mdl", ".tex", ".mtrl", ".tmb", ".pap", ".avfx", ".atex", ".sklb", ".eid", ".phyb", ".scd", ".skp", ".shpk" };
var scannedFiles = new ConcurrentDictionary<string, bool>(Directory.EnumerateFiles(penumbraDir!, "*.*", SearchOption.AllDirectories)
@@ -204,20 +204,20 @@ public class PeriodicFileScanner : MediatorSubscriberBase, IDisposable
scannedFiles[validatedCacheResult.Item2.ResolvedFilepath] = true;
if (validatedCacheResult.Item1 == FileState.RequireUpdate)
{
Logger.Verbose("To update: " + validatedCacheResult.Item2.ResolvedFilepath);
_logger.LogTrace("To update: " + validatedCacheResult.Item2.ResolvedFilepath);
entitiesToUpdate.Add(validatedCacheResult.Item2);
}
else if (validatedCacheResult.Item1 == FileState.RequireDeletion)
{
Logger.Verbose("To delete: " + validatedCacheResult.Item2.ResolvedFilepath);
_logger.LogTrace("To delete: " + validatedCacheResult.Item2.ResolvedFilepath);
entitiesToRemove.Add(validatedCacheResult.Item2);
}
}
catch (Exception ex)
{
Logger.Warn("Failed validating " + cache.ResolvedFilepath);
Logger.Warn(ex.Message);
Logger.Warn(ex.StackTrace);
_logger.LogWarning("Failed validating " + cache.ResolvedFilepath);
_logger.LogWarning(ex.Message);
_logger.LogWarning(ex.StackTrace);
}
Interlocked.Increment(ref _currentFileProgress);
@@ -226,7 +226,7 @@ public class PeriodicFileScanner : MediatorSubscriberBase, IDisposable
if (!_ipcManager.CheckPenumbraApi())
{
Logger.Warn("Penumbra not available");
_logger.LogWarning("Penumbra not available");
return;
}
@@ -239,14 +239,14 @@ public class PeriodicFileScanner : MediatorSubscriberBase, IDisposable
}
catch (Exception ex)
{
Logger.Warn("Error during enumerating FileCaches: " + ex.Message);
_logger.LogWarning("Error during enumerating FileCaches: " + ex.Message);
}
Task.WaitAll(dbTasks);
if (!_ipcManager.CheckPenumbraApi())
{
Logger.Warn("Penumbra not available");
_logger.LogWarning("Penumbra not available");
return;
}
@@ -265,11 +265,11 @@ public class PeriodicFileScanner : MediatorSubscriberBase, IDisposable
_fileDbManager.WriteOutFullCsv();
}
Logger.Verbose("Scanner validated existing db files");
_logger.LogTrace("Scanner validated existing db files");
if (!_ipcManager.CheckPenumbraApi())
{
Logger.Warn("Penumbra not available");
_logger.LogWarning("Penumbra not available");
return;
}
@@ -288,9 +288,9 @@ public class PeriodicFileScanner : MediatorSubscriberBase, IDisposable
}
catch (Exception ex)
{
Logger.Warn("Failed adding " + c.Key);
Logger.Warn(ex.Message);
Logger.Warn(ex.StackTrace);
_logger.LogWarning("Failed adding " + c.Key);
_logger.LogWarning(ex.Message);
_logger.LogWarning(ex.StackTrace);
}
Interlocked.Increment(ref _currentFileProgress);
@@ -299,7 +299,7 @@ public class PeriodicFileScanner : MediatorSubscriberBase, IDisposable
if (!_ipcManager.CheckPenumbraApi())
{
Logger.Warn("Penumbra not available");
_logger.LogWarning("Penumbra not available");
return;
}
@@ -308,9 +308,9 @@ public class PeriodicFileScanner : MediatorSubscriberBase, IDisposable
Task.WaitAll(dbTasks);
Logger.Verbose("Scanner added new files to db");
_logger.LogTrace("Scanner added new files to db");
Logger.Debug("Scan complete");
_logger.LogDebug("Scan complete");
TotalFiles = 0;
_currentFileProgress = 0;
entitiesToRemove.Clear();
@@ -327,7 +327,7 @@ public class PeriodicFileScanner : MediatorSubscriberBase, IDisposable
public void StartScan()
{
if (!_ipcManager.Initialized || !_configService.Current.HasValidSetup()) return;
Logger.Verbose("Penumbra is active, configuration is valid, scan");
_logger.LogTrace("Penumbra is active, configuration is valid, scan");
InvokeScan(forced: true);
}
}