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:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user