diff --git a/PIbd-22_Kalyshev_Y_V_MotorBoat_Base/FormMapWithSetBoats.cs b/PIbd-22_Kalyshev_Y_V_MotorBoat_Base/FormMapWithSetBoats.cs index f8fa592..67bf16b 100644 --- a/PIbd-22_Kalyshev_Y_V_MotorBoat_Base/FormMapWithSetBoats.cs +++ b/PIbd-22_Kalyshev_Y_V_MotorBoat_Base/FormMapWithSetBoats.cs @@ -1,4 +1,5 @@ -using System.Windows.Forms; +using Microsoft.Extensions.Logging; +using System.Windows.Forms; using static System.Windows.Forms.DataFormats; namespace PIbd_22_Kalyshev_Y_V_MotorBoat_Base @@ -18,11 +19,16 @@ namespace PIbd_22_Kalyshev_Y_V_MotorBoat_Base /// private readonly MapsCollection _mapsCollection; /// + /// Логер + /// + private readonly ILogger _logger; + /// /// Конструктор /// - public FormMapWithSetBoats() + public FormMapWithSetBoats(ILogger logger) { InitializeComponent(); + _logger = logger; _mapsCollection = new MapsCollection(pictureBox.Width, pictureBox.Height); comboBoxSelectorMap.Items.Clear(); foreach (var elem in _mapsDict) @@ -68,6 +74,7 @@ namespace PIbd_22_Kalyshev_Y_V_MotorBoat_Base } _mapsCollection.AddMap(textBoxNewMapName.Text, _mapsDict[comboBoxSelectorMap.Text]); ReloadMaps(); + _logger.LogInformation($"Добавлена карта {textBoxNewMapName.Text}"); } /// /// Выбор карты @@ -94,6 +101,7 @@ namespace PIbd_22_Kalyshev_Y_V_MotorBoat_Base _mapsCollection.DelMap(listBoxMaps.SelectedItem?.ToString() ?? string.Empty); ReloadMaps(); } + _logger.LogInformation($"Удалена карта {listBoxMaps.SelectedItem}"); } /// /// @@ -106,6 +114,7 @@ namespace PIbd_22_Kalyshev_Y_V_MotorBoat_Base var formBoatConfig = new FormBoatConfig(); formBoatConfig.AddEvent(AddBoat); formBoatConfig.Show(); + _logger.LogInformation($"Удалена карта {listBoxMaps.SelectedItem}"); } private void AddBoat(DrawningBoat drawingBoats) { @@ -120,18 +129,22 @@ namespace PIbd_22_Kalyshev_Y_V_MotorBoat_Base { MessageBox.Show("Объект добавлен"); pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); + _logger.LogInformation($"В карту {_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty]} добавлен объект {boat.GetInfo()}"); } else { MessageBox.Show("Невозможно добавить объект"); + _logger.LogInformation($"Невозможно добавить объект {boat.GetInfo()} в карту {_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty]}"); } } catch (StorageOverflowException ex) { MessageBox.Show($"Ошибка добавления: {ex.Message}"); + _logger.LogWarning($"Ошибка добавления: {ex.Message}"); } catch (Exception ex) { MessageBox.Show($"Неизвестная ошибка: {ex.Message}"); + _logger.LogWarning($"Неизвестная ошибка: {ex.Message}"); } } @@ -157,21 +170,26 @@ namespace PIbd_22_Kalyshev_Y_V_MotorBoat_Base int pos = Convert.ToInt32(maskedTextBoxPosition.Text); try { - if (_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] - pos != null) + IDrawningObject boat = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] - pos; + if (boat != null) { MessageBox.Show("Объект удален"); pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); + _logger.LogInformation($"Из карты {_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty]} удален объект {boat.GetInfo()}"); } else { MessageBox.Show("Не удалось удалить объект"); + _logger.LogInformation($"Невозможно удалить объект {boat.GetInfo()} в карту {_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty]}"); } } catch (BoatNotFoundException ex) { MessageBox.Show($"Ошибка удаления: {ex.Message}"); + _logger.LogWarning($"Ошибка удаления: {ex.Message}"); } catch (Exception ex) { MessageBox.Show($"Неизвестная ошибка: {ex.Message}"); + _logger.LogWarning($"Неизвестная ошибка: {ex.Message}"); } } /// @@ -245,9 +263,11 @@ namespace PIbd_22_Kalyshev_Y_V_MotorBoat_Base { _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}"); } } } @@ -265,9 +285,11 @@ namespace PIbd_22_Kalyshev_Y_V_MotorBoat_Base _mapsCollection.LoadData(openFileDialog.FileName); ReloadMaps(); MessageBox.Show("Загрузка прошла успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information); + _logger.LogInformation($"Загружен файл {openFileDialog.FileName}"); } catch (Exception ex) { MessageBox.Show("Не загрузилось", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); + _logger.LogWarning($"Не загрузилось: {ex.Message}"); } } } diff --git a/PIbd-22_Kalyshev_Y_V_MotorBoat_Base/PIbd-22_Kalyshev_Y_V_MotorBoat_Base.csproj b/PIbd-22_Kalyshev_Y_V_MotorBoat_Base/PIbd-22_Kalyshev_Y_V_MotorBoat_Base.csproj index b53c66d..4a22195 100644 --- a/PIbd-22_Kalyshev_Y_V_MotorBoat_Base/PIbd-22_Kalyshev_Y_V_MotorBoat_Base.csproj +++ b/PIbd-22_Kalyshev_Y_V_MotorBoat_Base/PIbd-22_Kalyshev_Y_V_MotorBoat_Base.csproj @@ -9,4 +9,21 @@ enable + + + + + + + Always + + + + + + + + + + \ No newline at end of file diff --git a/PIbd-22_Kalyshev_Y_V_MotorBoat_Base/Program.cs b/PIbd-22_Kalyshev_Y_V_MotorBoat_Base/Program.cs index 1ab4654..bb3e731 100644 --- a/PIbd-22_Kalyshev_Y_V_MotorBoat_Base/Program.cs +++ b/PIbd-22_Kalyshev_Y_V_MotorBoat_Base/Program.cs @@ -1,3 +1,8 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using NLog.Extensions.Logging; +using System.ServiceProcess; + namespace PIbd_22_Kalyshev_Y_V_MotorBoat_Base { internal static class Program @@ -11,7 +16,20 @@ namespace PIbd_22_Kalyshev_Y_V_MotorBoat_Base // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); - Application.Run(new FormMapWithSetBoats()); + 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 => + { + option.SetMinimumLevel(LogLevel.Information); + option.AddNLog("nlog.config"); + }); } } } \ No newline at end of file diff --git a/PIbd-22_Kalyshev_Y_V_MotorBoat_Base/nlog.config b/PIbd-22_Kalyshev_Y_V_MotorBoat_Base/nlog.config new file mode 100644 index 0000000..6d5e25e --- /dev/null +++ b/PIbd-22_Kalyshev_Y_V_MotorBoat_Base/nlog.config @@ -0,0 +1,13 @@ + + + + + + + + + + + \ No newline at end of file