Integrate NLog for centralized logging, replacing Console calls across CLI tasks. Add LoggingService helper for setup and logger retrieval. Update project dependencies.

This commit is contained in:
Andre Beging
2025-12-12 09:29:31 +01:00
parent c9a56abe8b
commit 516fceb1dc
7 changed files with 102 additions and 28 deletions

View File

@@ -1,11 +1,14 @@
using System.Text.Json;
using System.Text.Json.Nodes;
using FsToolbox.Cli.Helper;
using NLog;
namespace FsToolbox.Cli.Tasks
{
public static partial class RegionTasks
{
private static readonly Logger Logger = LoggingService.GetLogger(nameof(RegionTasks));
#region Public Method GetStoresInRegionAsync
/// <summary>
@@ -25,12 +28,12 @@ namespace FsToolbox.Cli.Tasks
// handle unsuccessful response
if (!response.IsSuccessStatusCode)
{
await Console.Error.WriteLineAsync($"Region stores retrieval failed ({(int)response.StatusCode} {response.ReasonPhrase}): {responseBody}");
Logger.Error("Region stores retrieval failed ({Status} {Reason}): {Body}", (int)response.StatusCode, response.ReasonPhrase, responseBody);
return [];
}
Console.WriteLine($"Stores in region {regionId}:");
Console.WriteLine(responseBody);
Logger.Info("Stores in region {RegionId}:", regionId);
Logger.Info(responseBody);
var root = JsonNode.Parse(responseBody);
if (root == null) return [];

View File

@@ -2,11 +2,14 @@ using System.Net.Http.Json;
using System.Text.Json;
using System.Text.Json.Nodes;
using FsToolbox.Cli.Helper;
using NLog;
namespace FsToolbox.Cli.Tasks
{
public static partial class StoreTasks
{
private static readonly Logger Logger = LoggingService.GetLogger(nameof(StoreTasks));
#region Public Method GetPickupsAsync
/// <summary>
@@ -24,7 +27,7 @@ namespace FsToolbox.Cli.Tasks
var responseBody = await response.Content.ReadAsStringAsync();
// handle unsuccessful response
if (!response.IsSuccessStatusCode) await Console.Error.WriteLineAsync($"Pickup retrieval failed ({(int)response.StatusCode} {response.ReasonPhrase}): {responseBody}");
if (!response.IsSuccessStatusCode) Logger.Error("Pickup retrieval failed ({Status} {Reason}): {Body}", (int)response.StatusCode, response.ReasonPhrase, responseBody);
var root = JsonNode.Parse(responseBody);
if (root == null) return [];
@@ -60,7 +63,7 @@ namespace FsToolbox.Cli.Tasks
// handle unsuccessful response
if (!response.IsSuccessStatusCode)
{
await Console.Error.WriteLineAsync($"Store members retrieval failed ({(int)response.StatusCode} {response.ReasonPhrase}): {responseBody}");
Logger.Error("Store members retrieval failed ({Status} {Reason}): {Body}", (int)response.StatusCode, response.ReasonPhrase, responseBody);
return [];
}
@@ -103,9 +106,9 @@ namespace FsToolbox.Cli.Tasks
// handle unsuccessful response
if (!response.IsSuccessStatusCode)
await Console.Error.WriteLineAsync($"Pickup patch failed ({(int)response.StatusCode} {response.ReasonPhrase}): {responseBody}");
Logger.Error("Pickup patch failed ({Status} {Reason}): {Body}", (int)response.StatusCode, response.ReasonPhrase, responseBody);
else
Console.WriteLine($"Pickup patch succeeded {fsId} on {pickupDate}");
Logger.Info("Pickup patch succeeded {FsId} on {PickupDate}", fsId, pickupDate);
}
#endregion

View File

@@ -2,11 +2,14 @@ using System;
using System.Linq;
using System.Net.Http.Json;
using FsToolbox.Cli.Helper;
using NLog;
namespace FsToolbox.Cli.Tasks
{
public static class UserTasks
{
private static readonly Logger Logger = LoggingService.GetLogger(nameof(UserTasks));
/// <summary>
/// Performs a login request using configured credentials and optional two-factor authentication.
/// </summary>
@@ -18,19 +21,19 @@ namespace FsToolbox.Cli.Tasks
if (string.IsNullOrWhiteSpace(credentials.Email) || string.IsNullOrWhiteSpace(credentials.Password))
{
Console.WriteLine("Email and password must be configured in appsettings.json.");
Logger.Warn("Email and password must be configured in appsettings.json.");
return null;
}
string? authCode = null;
if (credentials.TwoFactorEnabled)
{
Console.Write("Enter 2FA code: ");
Logger.Info("Enter 2FA code: ");
authCode = Console.ReadLine()?.Trim();
if (string.IsNullOrWhiteSpace(authCode))
{
Console.WriteLine("A valid 2FA code is required when two-factor authentication is enabled.");
Logger.Warn("A valid 2FA code is required when two-factor authentication is enabled.");
return null;
}
}
@@ -58,7 +61,7 @@ namespace FsToolbox.Cli.Tasks
if (!response.IsSuccessStatusCode)
{
var responseBody = await response.Content.ReadAsStringAsync();
await Console.Error.WriteLineAsync($"Login failed ({(int)response.StatusCode} {response.ReasonPhrase}): {responseBody}");
Logger.Error("Login failed ({Status} {Reason}): {Body}", (int)response.StatusCode, response.ReasonPhrase, responseBody);
return null;
}
@@ -97,13 +100,13 @@ namespace FsToolbox.Cli.Tasks
if (!response.IsSuccessStatusCode)
{
var responseBody = await response.Content.ReadAsStringAsync();
await Console.Error.WriteLineAsync($"Get current user failed ({(int)response.StatusCode} {response.ReasonPhrase}): {responseBody}");
Logger.Error("Get current user failed ({Status} {Reason}): {Body}", (int)response.StatusCode, response.ReasonPhrase, responseBody);
return;
}
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine("Current User Info:");
Console.WriteLine(content);
Logger.Info("Current User Info:");
Logger.Info(content);
}
}
}