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

@ -15,6 +15,7 @@ namespace Mystify
new MainInstaller(), new MainInstaller(),
new AudioInstaller(), new AudioInstaller(),
new DriverInstaller(), new DriverInstaller(),
new LoggingInstaller(),
new MidiInstaller(), new MidiInstaller(),
new NotifyIconInstaller()); 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