From 1a2f836bdf9c63db196ef31003e9df2f1adf98fe Mon Sep 17 00:00:00 2001 From: Danil Kargin Date: Sun, 27 Nov 2022 22:50:06 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=BE=D0=B3=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AirFighter/AirFighter/AirFighter.csproj | 21 +++++++++++++ .../AirFighter/FormMapWithSetAirFighters.cs | 27 ++++++++++++++-- AirFighter/AirFighter/Program.cs | 31 ++++++++++++++++++- AirFighter/AirFighter/serilogconfig.json | 16 ++++++++++ 4 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 AirFighter/AirFighter/serilogconfig.json diff --git a/AirFighter/AirFighter/AirFighter.csproj b/AirFighter/AirFighter/AirFighter.csproj index 13ee123..6578c4c 100644 --- a/AirFighter/AirFighter/AirFighter.csproj +++ b/AirFighter/AirFighter/AirFighter.csproj @@ -8,6 +8,27 @@ enable + + + + + + + Always + + + + + + + + + + + + + + True diff --git a/AirFighter/AirFighter/FormMapWithSetAirFighters.cs b/AirFighter/AirFighter/FormMapWithSetAirFighters.cs index 20b5593..7ffd860 100644 --- a/AirFighter/AirFighter/FormMapWithSetAirFighters.cs +++ b/AirFighter/AirFighter/FormMapWithSetAirFighters.cs @@ -1,4 +1,5 @@ -using System; +using Microsoft.Extensions.Logging; +using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; @@ -26,10 +27,15 @@ namespace AirFighter /// private readonly MapsCollection _mapsCollection; /// + /// Логер + /// + private readonly ILogger _logger; + /// /// Конструктор - public FormMapWithSetAirFighters() + public FormMapWithSetAirFighters(ILogger logger) { InitializeComponent(); + _logger = logger; _mapsCollection = new MapsCollection(pictureBox.Width, pictureBox.Height); comboBoxSelectorMap.Items.Clear(); foreach (var elem in _mapsDict) @@ -74,19 +80,23 @@ namespace AirFighter { MessageBox.Show("Объект добавлен"); pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); + _logger.LogInformation($"Добавлен объект {airFighter}"); } else { MessageBox.Show("Не удалось добавить объект"); + _logger.LogInformation($"Не удалось добавить объект {airFighter}"); } } catch (StorageOverflowException ex) { MessageBox.Show($"Ошибка добавления: {ex.Message}"); + _logger.LogWarning($"Ошибка переполнения хранилища: {ex.Message}"); } catch (Exception ex) { MessageBox.Show($"Неизвестная ошибка: {ex.Message}"); + _logger.LogWarning($"Неизвестная ошибка: {ex.Message}"); } } } @@ -126,22 +136,27 @@ namespace AirFighter int pos = Convert.ToInt32(maskedTextBoxPosition.Text); try { - if ((_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] - pos) != null) + var deletedObject = (_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] - pos); + if (deletedObject != null) { MessageBox.Show("Объект удален"); pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); + _logger.LogInformation($"Удаление объекта {deletedObject}"); } else { MessageBox.Show("Не удалось удалить объект"); + _logger.LogInformation($"Не удалось удалить объект {deletedObject}"); } }catch(AirFighterNotFoundException ex) { MessageBox.Show($"Ошибка удаления: {ex.Message}"); + _logger.LogWarning($"Ошибка, объект не найден: {ex.Message}"); } catch(Exception ex) { MessageBox.Show($"Неизвестная ошибка: {ex.Message}"); + _logger.LogWarning($"Неизвестная ошибка: {ex.Message}"); } } /// @@ -222,6 +237,7 @@ namespace AirFighter } _mapsCollection.AddMap(textBoxNewMapName.Text, _mapsDict[comboBoxSelectorMap.Text]); + _logger.LogInformation($"Добавлена карта: {textBoxNewMapName.Text}"); ReloadMaps(); } /// @@ -248,6 +264,7 @@ namespace AirFighter { _mapsCollection.DelMap(listBoxMaps.SelectedItem?.ToString() ?? string.Empty); ReloadMaps(); + _logger.LogInformation($"Удалена карта {listBoxMaps.SelectedItem}"); } } /// @@ -263,11 +280,13 @@ namespace AirFighter _mapsCollection.SaveData(saveFileDialog.FileName); MessageBox.Show("Сохранение прошло успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information); + _logger.LogInformation($"Сохранение в файл {saveFileDialog.FileName} прошло успешно"); } catch(Exception ex) { MessageBox.Show($"Не сохранилось: {ex.Message}", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); + _logger.LogWarning($"Не удалось сохранить в файл. Ошибка: {ex.Message}"); } } } @@ -285,12 +304,14 @@ namespace AirFighter _mapsCollection.LoadData(openFileDialog.FileName); MessageBox.Show("Загрузка прошла успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information); + _logger.LogInformation($"Загрузка из файла {openFileDialog.FileName} прошла успешна"); ReloadMaps(); } catch(Exception ex) { MessageBox.Show($"Загрузка не удалась: {ex.Message}", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); + _logger.LogWarning($"Не удалось загрузить из файла. Ошибка: {ex.Message}"); } } } diff --git a/AirFighter/AirFighter/Program.cs b/AirFighter/AirFighter/Program.cs index f61e6a6..e83da85 100644 --- a/AirFighter/AirFighter/Program.cs +++ b/AirFighter/AirFighter/Program.cs @@ -1,3 +1,8 @@ +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Serilog; + namespace AirFighter { internal static class Program @@ -11,7 +16,31 @@ namespace AirFighter // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); - Application.Run(new FormMapWithSetAirFighters()); + var services = new ServiceCollection(); + ConfigureServices(services); + using (ServiceProvider serviceProvider = services.BuildServiceProvider()) + { + Application.Run(serviceProvider.GetRequiredService()); + } } + private static void ConfigureServices(ServiceCollection services) + { + services.AddSingleton() + .AddLogging(option => + { + var configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile(path: "serilogConfig.json", optional: false, reloadOnChange: true) + .Build(); + + var logger = new LoggerConfiguration() + .ReadFrom.Configuration(configuration) + .CreateLogger(); + + option.SetMinimumLevel(LogLevel.Information); + option.AddSerilog(logger); + }); + } + } } \ No newline at end of file diff --git a/AirFighter/AirFighter/serilogconfig.json b/AirFighter/AirFighter/serilogconfig.json new file mode 100644 index 0000000..8bf6872 --- /dev/null +++ b/AirFighter/AirFighter/serilogconfig.json @@ -0,0 +1,16 @@ +{ + "Serilog": { + "Using": [ "Serilog.Sinks.File" ], + "MinimumLevel": "Information", + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "Logs/log_.log", + "rollingInterval": "Day", + "outputTemplate": "[{Timestamp:HH:mm:ss.fff}]{Level:u4}: {Message:lj}{NewLine}{Exception}" + } + } + ] + } +}