- initialize logging

master
Simon G 5 years ago
parent 9cc5abcf03
commit 5648f6a741
  1. 25
      Mystify/App.axaml.cs
  2. 1
      Mystify/Bootstrapper.cs
  3. 32
      Mystify/Installers/LoggingInstaller.cs

@ -7,6 +7,10 @@ using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;
using Lib.Logging.Factories;
using Lib.Logging.Interfaces;
using Lib.Logging.Loggers.Factories;
using Lib.Logging.Loggers.Interfaces;
using Lib.NotifyIcon;
using LightweightIocContainer.Interfaces;
using Mystify.ViewModels;
@ -18,7 +22,12 @@ namespace Mystify
public class App : Application
{
private IIocContainer? _kernel;
private ILog? _log;
private ILoggerInitializer? _loggerInitializer;
private INotifyIcon? _notifyIcon;
private MainWindow? _mainWindow;
private MainWindowViewModel? _mainWindowViewModel;
@ -31,6 +40,13 @@ namespace Mystify
Bootstrapper bootstrapper = new();
_kernel = bootstrapper.BootstrapKernel();
ILogFactory logFactory = _kernel.Resolve<ILogFactory>();
_log = logFactory.Create();
ILoggerInitializerFactory loggerInitializerFactory = _kernel.Resolve<ILoggerInitializerFactory>();
_loggerInitializer = loggerInitializerFactory.Create(_log);
_loggerInitializer.Init();
MainModel mainModel = _kernel.Resolve<MainModel>();
_mainWindow = new MainWindow();
_mainWindowViewModel = new MainWindowViewModel(mainModel, _mainWindow);
@ -68,10 +84,17 @@ namespace Mystify
_mainWindow?.Show();
}
private void OnExit(object? sender, ControlledApplicationLifetimeExitEventArgs args)
private async void OnExit(object? sender, ControlledApplicationLifetimeExitEventArgs args) //TODO: return Task?
{
_mainWindow?.Close();
_notifyIcon?.Remove();
if (_log != null)
await _log.DisposeAsync();
if (_loggerInitializer != null)
await _loggerInitializer.DisposeAsync();
_kernel?.Dispose();
}
}

@ -15,6 +15,7 @@ namespace Mystify
new MainInstaller(),
new AudioInstaller(),
new DriverInstaller(),
new LoggingInstaller(),
new MidiInstaller(),
new NotifyIconInstaller());
}

@ -0,0 +1,32 @@
// Author: Gockner, Simon
// Created: 2021-04-16
// Copyright(c) 2021 SimonG. All Rights Reserved.
using Lib.Logging;
using Lib.Logging.Factories;
using Lib.Logging.Interfaces;
using Lib.Logging.Loggers;
using Lib.Logging.Loggers.Factories;
using Lib.Logging.Loggers.Interfaces;
using LightweightIocContainer.Interfaces;
using LightweightIocContainer.Interfaces.Installers;
namespace Mystify.Installers
{
public class LoggingInstaller : IIocInstaller
{
public void Install(IIocContainer container)
{
container.Register<ILog, Log>();
container.Register<IFileLogger, FileLogger>();
container.Register<IConsoleLogger, ConsoleLogger>();
container.Register<ILoggerInitializer, LoggerInitializer>();
//factories
container.RegisterFactory<ILogFactory>();
container.RegisterFactory<IFileLoggerFactory>();
container.RegisterFactory<IConsoleLoggerFactory>();
container.RegisterFactory<ILoggerInitializerFactory>();
}
}
}
Loading…
Cancel
Save