- fix: logger blocking some files
This commit is contained in:
@@ -11,6 +11,7 @@ using Nebula.Launcher.MessageBox;
|
||||
using Nebula.Launcher.ViewModels.ContentView;
|
||||
using Nebula.Launcher.Views;
|
||||
using Nebula.Shared;
|
||||
using Nebula.Shared.Services;
|
||||
|
||||
namespace Nebula.Launcher;
|
||||
|
||||
@@ -57,6 +58,7 @@ public class App : Application
|
||||
}
|
||||
else
|
||||
{
|
||||
DebugService.DoFileLog = true;
|
||||
var services = new ServiceCollection();
|
||||
services.AddAvaloniaServices();
|
||||
services.AddServices();
|
||||
|
||||
@@ -216,7 +216,7 @@ public partial class ServerEntryModelView : ViewModelBase
|
||||
|
||||
if (Process is null) return;
|
||||
|
||||
_processLogger = DebugService.GetLogger(buildInfo.BuildInfo.Build.Hash);
|
||||
_processLogger = DebugService.GetLogger($"PROCESS_{Process.Id}");
|
||||
|
||||
Process.EnableRaisingEvents = true;
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Nebula.Shared;
|
||||
using Nebula.Shared.Services;
|
||||
|
||||
namespace Nebula.Runner;
|
||||
|
||||
@@ -9,7 +10,7 @@ public static class Program
|
||||
{
|
||||
var services = new ServiceCollection();
|
||||
services.AddServices();
|
||||
|
||||
|
||||
var serviceProvider = services.BuildServiceProvider();
|
||||
var task = serviceProvider.GetService<App>()!.Run(args);
|
||||
task.Wait();
|
||||
|
||||
@@ -8,11 +8,17 @@ namespace Nebula.Shared.Services;
|
||||
[ServiceRegister]
|
||||
public class DebugService : IDisposable
|
||||
{
|
||||
public static bool DoFileLog;
|
||||
private ServiceLogger Root {get; set;}
|
||||
|
||||
private readonly string _path =
|
||||
Path.Combine(FileService.RootPath, "log", Assembly.GetEntryAssembly()?.GetName().Name ?? "App");
|
||||
|
||||
public DebugService()
|
||||
{
|
||||
Root = new ServiceLogger("Root");
|
||||
ClearLog();
|
||||
Root = new ServiceLogger("Root",_path);
|
||||
Root.GetLogger("DebugService").Log("Initializing debug service " + (DoFileLog ? "with file logging" : "without file logging"));
|
||||
}
|
||||
|
||||
public ILogger GetLogger(string loggerName)
|
||||
@@ -29,6 +35,22 @@ public class DebugService : IDisposable
|
||||
{
|
||||
Root.Dispose();
|
||||
}
|
||||
|
||||
private void ClearLog()
|
||||
{
|
||||
if(!Directory.Exists(_path))
|
||||
return;
|
||||
var di = new DirectoryInfo(_path);
|
||||
|
||||
foreach (var file in di.GetFiles())
|
||||
{
|
||||
file.Delete();
|
||||
}
|
||||
foreach (var dir in di.GetDirectories())
|
||||
{
|
||||
dir.Delete(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public enum LoggerCategory
|
||||
@@ -40,12 +62,15 @@ public enum LoggerCategory
|
||||
|
||||
internal class ServiceLogger : ILogger
|
||||
{
|
||||
private readonly string _directory;
|
||||
public ServiceLogger? Root { get; private set; }
|
||||
public ServiceLogger(string category)
|
||||
public ServiceLogger(string category, string directory)
|
||||
{
|
||||
_directory = directory;
|
||||
Category = category;
|
||||
|
||||
var directory = Path.Combine(FileService.RootPath,"log", Assembly.GetEntryAssembly()?.GetName().Name ?? "App");
|
||||
if (!DebugService.DoFileLog) return;
|
||||
|
||||
if(!Directory.Exists(directory)) Directory.CreateDirectory(directory);
|
||||
|
||||
_fileStream = File.Open(Path.Combine(directory,$"{Category}.log"), FileMode.Create, FileAccess.Write, FileShare.Read);
|
||||
@@ -64,7 +89,7 @@ internal class ServiceLogger : ILogger
|
||||
if (Childs.TryGetValue(category, out var logger))
|
||||
return logger;
|
||||
|
||||
logger = new ServiceLogger(category);
|
||||
logger = new ServiceLogger(category, _directory);
|
||||
logger.Root = this;
|
||||
Childs.Add(category, logger);
|
||||
return logger;
|
||||
@@ -72,8 +97,10 @@ internal class ServiceLogger : ILogger
|
||||
|
||||
public void Log(LoggerCategory loggerCategory, string message)
|
||||
{
|
||||
var output =
|
||||
$"[{DateTime.Now.ToUniversalTime():yyyy-MM-dd HH:mm:ss}][{Enum.GetName(loggerCategory)}][{Category}]: {message}";
|
||||
var output = DebugService.DoFileLog
|
||||
? $"[{DateTime.Now.ToUniversalTime():yyyy-MM-dd HH:mm:ss}][{Enum.GetName(loggerCategory)}][{Category}]: {message}"
|
||||
: message;
|
||||
|
||||
Console.WriteLine(output);
|
||||
|
||||
LogToFile(output);
|
||||
@@ -81,6 +108,7 @@ internal class ServiceLogger : ILogger
|
||||
|
||||
private void LogToFile(string output)
|
||||
{
|
||||
if(!DebugService.DoFileLog) return;
|
||||
Root?.LogToFile(output);
|
||||
_streamWriter.WriteLine(output);
|
||||
_streamWriter.Flush();
|
||||
@@ -88,8 +116,10 @@ internal class ServiceLogger : ILogger
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_fileStream.Dispose();
|
||||
if (!DebugService.DoFileLog) return;
|
||||
|
||||
_streamWriter.Dispose();
|
||||
_fileStream.Dispose();
|
||||
foreach (var (_, child) in Childs)
|
||||
{
|
||||
child.Dispose();
|
||||
|
||||
@@ -9,9 +9,11 @@
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AHttpClient_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FUsers_003FCinka_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003Fc439425da351c75ac7d966a1cc8324b51a9c471865af79d2f2f3fcb65e392_003FHttpClient_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AHttpContent_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FUsers_003FCinka_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F9657cc383c70851dc2bdcf91eff27f21196844abfe552fc9c3243ff36974cd_003FHttpContent_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AHttpResponseMessage_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FUsers_003FCinka_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F4cfeb8b377bc81e1fbb5f7d7a02492cb6ac23e88c8c9d7155944f0716f3d4b_003FHttpResponseMessage_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIDisposable_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FUsers_003FCinka_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fa6b7f037ba7b44df80b8d3aa7e58eeb2e8e938_003F98_003Fd1b23281_003FIDisposable_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AJsonSerializer_002ERead_002EString_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FUsers_003FCinka_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F27c4858128168eda568c1334d70d5241efb9461e2a3209258a04deee5d9c367_003FJsonSerializer_002ERead_002EString_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AParallel_002EForEachAsync_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FUsers_003FCinka_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003Fc1d1ed6be2d5d4de542b4af5b36e82f6d1d1a389a35a4e4f9748d137d1c651_003FParallel_002EForEachAsync_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AServiceCollectionContainerBuilderExtensions_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FUsers_003FCinka_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fa8ceca48b7b645dd875a40ee6d28725416d08_003F1b_003F6cd78dc8_003FServiceCollectionContainerBuilderExtensions_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AServiceProviderServiceExtensions_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FUsers_003FCinka_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F4f1fdec7cbfe4433a7ec3a6d1bd0e54210118_003F04_003Fe2f5322d_003FServiceProviderServiceExtensions_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AString_002EManipulation_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FUsers_003FCinka_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003Fe75a5575ba872c8ea754c015cb363850e6c661f39569712d5b74aaca67263c_003FString_002EManipulation_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AUri_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FUsers_003FCinka_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F6a1fb5a19c4883d19f63515be2d0cce5e0e9929bb30469a912a58ad2e1e6152_003FUri_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/PencilsConfiguration/ActualSeverity/@EntryValue">INFO</s:String></wpf:ResourceDictionary>
|
||||
Reference in New Issue
Block a user