diff --git a/WarmlyShip/WarmlyShip/FormMapWithSetShip.cs b/WarmlyShip/WarmlyShip/FormMapWithSetShip.cs index b542f9a..6261fb6 100644 --- a/WarmlyShip/WarmlyShip/FormMapWithSetShip.cs +++ b/WarmlyShip/WarmlyShip/FormMapWithSetShip.cs @@ -1,4 +1,5 @@ -using System; +using Microsoft.Extensions.Logging; +using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; @@ -23,9 +24,12 @@ namespace WarmlyShip private readonly MapsCollection _mapsCollection; - public FormMapWithSetShip() + private readonly ILogger _logger; + + public FormMapWithSetShip(ILogger logger) { InitializeComponent(); + _logger = logger; _mapsCollection = new MapsCollection(pictureBox.Width, pictureBox.Height); comboBoxSelectorMap.Items.Clear(); foreach (var elem in _mapsDict) @@ -66,6 +70,7 @@ namespace WarmlyShip } _mapsCollection.AddMap(textBoxNewMapName.Text, _mapsDict[comboBoxSelectorMap.Text]); ReloadMaps(); + _logger.LogInformation($"Добавлена карта {textBoxNewMapName.Text}"); } private void ListBoxMaps_SelectedIndexChanged(object sender, EventArgs e) @@ -81,9 +86,9 @@ namespace WarmlyShip } if (MessageBox.Show($"Удалить карту {listBoxMaps.SelectedItem}?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { - _mapsCollection.DelMap(listBoxMaps.SelectedItem?.ToString() ?? - string.Empty); + _mapsCollection.DelMap(listBoxMaps.SelectedItem?.ToString() ?? string.Empty); ReloadMaps(); + _logger.LogInformation("Удалена карта {0}", listBoxMaps.SelectedItem?.ToString() ?? string.Empty); } } @@ -100,15 +105,24 @@ namespace WarmlyShip { return; } - - if (_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] + new DrawningObjectShip(ship) > -1) + try { - MessageBox.Show("Объект добавлен"); - pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); + if (_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] + new DrawningObjectShip(ship) > -1) + { + MessageBox.Show("Объект добавлен"); + pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); + _logger.LogInformation($"Добавлен объект: {ship} на карте: {listBoxMaps.SelectedItem}"); + } } - else + catch (StorageOverflowException ex) { - MessageBox.Show("Не удалось добавить объект"); + _logger.LogWarning($"Ошибка переполнения при добавлении объекта: {ex.Message}"); + MessageBox.Show($"Ошибка переполнения: {ex.Message}"); + } + catch (Exception ex) + { + _logger.LogWarning($"Неизвестная ошибка при добавлении объекта: {ex.Message}"); + MessageBox.Show($"Неизвестная ошибка: {ex.Message}"); } } @@ -132,16 +146,23 @@ namespace WarmlyShip if (_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] - pos != null) { MessageBox.Show("Объект удален"); - pictureBox.Image = - _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); + pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); + _logger.LogInformation($"Удален объект с позиции: [{pos}] на карте: {listBoxMaps.SelectedItem}"); } } - catch(ShipNotFoundException ex) + catch (ShipNotFoundException ex) { + _logger.LogWarning($"Ошибка при удалении объекта на позиции: {ex.Message}"); MessageBox.Show($"Ошибка удаления: {ex.Message} "); } + catch (StorageOverflowException ex) + { + _logger.LogWarning($"Ошибка при удалении объекта на позиции: {ex.Message}"); + MessageBox.Show($"Превышение размерности: {ex.Message}"); + } catch (Exception ex) { + _logger.LogWarning($"Неизвестная ошибка при удалении объекта на позиции: {ex.Message}"); MessageBox.Show($"Неизвестная ошибка: {ex.Message} "); } } @@ -153,6 +174,7 @@ namespace WarmlyShip return; } pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); + _logger.LogInformation($"Переход в хранилище: {listBoxMaps.SelectedItem}"); } private void ButtonShowOnMap_Click(object sender, EventArgs e) @@ -162,6 +184,7 @@ namespace WarmlyShip return; } pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowOnMap(); + _logger.LogInformation($"Переход на карту: {listBoxMaps.SelectedItem}"); } private void ButtonMove_Click(object sender, EventArgs e) @@ -198,10 +221,12 @@ namespace WarmlyShip try { _mapsCollection.SaveData(saveFileDialog.FileName); + _logger.LogInformation($"Карта успешно сохранена в файл: {saveFileDialog.FileName}"); MessageBox.Show("Сохранение прошло успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { + _logger.LogWarning($"Не сохранилось в файл: {saveFileDialog.FileName}"); MessageBox.Show($"Не сохранилось: {ex.Message}", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); } } @@ -214,11 +239,13 @@ namespace WarmlyShip try { _mapsCollection.LoadData(openFileDialog.FileName); + _logger.LogInformation($"Карта успешно загружена из файла: {openFileDialog.FileName}"); MessageBox.Show("Загрузка прошла успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information); ReloadMaps(); } catch (Exception ex) { + _logger.LogWarning($"Не загрузилось из файла: {openFileDialog.FileName}"); MessageBox.Show($"Не загрузилось: {ex.Message}", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); } } diff --git a/WarmlyShip/WarmlyShip/Program.cs b/WarmlyShip/WarmlyShip/Program.cs index de3a3a8..6968d22 100644 --- a/WarmlyShip/WarmlyShip/Program.cs +++ b/WarmlyShip/WarmlyShip/Program.cs @@ -1,3 +1,7 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Serilog; + namespace WarmlyShip { internal static class Program @@ -11,7 +15,26 @@ namespace WarmlyShip // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); - Application.Run(new FormMapWithSetShip()); - } - } + var services = new ServiceCollection(); + ConfigureServices(services); + using (ServiceProvider serviceProvider = + services.BuildServiceProvider()) + { + Application.Run(serviceProvider.GetRequiredService()); + } + } + + private static void ConfigureServices(ServiceCollection services) + { + services.AddSingleton(); + + var serilogLogger = new LoggerConfiguration().WriteTo.File("log.txt").CreateLogger(); + + services.AddLogging(builder => + { + builder.SetMinimumLevel(LogLevel.Information); + builder.AddSerilog(logger: serilogLogger, dispose: true); + }); + } + } } \ No newline at end of file diff --git a/WarmlyShip/WarmlyShip/WarmlyShip.csproj b/WarmlyShip/WarmlyShip/WarmlyShip.csproj index 13ee123..edbfc03 100644 --- a/WarmlyShip/WarmlyShip/WarmlyShip.csproj +++ b/WarmlyShip/WarmlyShip/WarmlyShip.csproj @@ -8,6 +8,14 @@ enable + + + + + + + + True diff --git a/WarmlyShip/WarmlyShip/nlog.config b/WarmlyShip/WarmlyShip/nlog.config new file mode 100644 index 0000000..7164133 --- /dev/null +++ b/WarmlyShip/WarmlyShip/nlog.config @@ -0,0 +1,13 @@ + + + + + + + + + + + \ No newline at end of file