From 25963b2c388fa7e83316dc30a81b5c6ae1261929 Mon Sep 17 00:00:00 2001 From: Kentin BRONGNIART Date: Wed, 5 Feb 2025 15:37:15 +0100 Subject: [PATCH] =?UTF-8?q?Finition=20des=20logs=20(fonction=20cr=C3=A9?= =?UTF-8?q?=C3=A9=20a=20rajouter=20sur=20tous=20les=20bouton=20pour=20la?= =?UTF-8?q?=20cr=C3=A9ation=20des=20logs=20/=20logs=20enregister=20et=20af?= =?UTF-8?q?ficher=20dans=20la=20page=20logs)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WF-WebAdmin/Model/LoggerSaveStub.cs | 91 ++++++------------- WF-WebAdmin/WF-WebAdmin/Model/Logs.cs | 14 +++ .../WF-WebAdmin/Pages/DeleteUser.razor.cs | 6 +- WF-WebAdmin/WF-WebAdmin/Pages/LogsPage.razor | 34 +++++++ .../WF-WebAdmin/Pages/LogsPage.razor.cs | 21 +++++ .../WF-WebAdmin/Service/ILogsService.cs | 17 ++++ .../WF-WebAdmin/Service/LogsServiceStub.cs | 67 ++++++++++++++ .../WF-WebAdmin/wwwroot/fake_data_logs.json | 18 ++++ 8 files changed, 203 insertions(+), 65 deletions(-) create mode 100644 WF-WebAdmin/WF-WebAdmin/Model/Logs.cs create mode 100644 WF-WebAdmin/WF-WebAdmin/Pages/LogsPage.razor create mode 100644 WF-WebAdmin/WF-WebAdmin/Pages/LogsPage.razor.cs create mode 100644 WF-WebAdmin/WF-WebAdmin/Service/ILogsService.cs create mode 100644 WF-WebAdmin/WF-WebAdmin/Service/LogsServiceStub.cs create mode 100644 WF-WebAdmin/WF-WebAdmin/wwwroot/fake_data_logs.json diff --git a/WF-WebAdmin/WF-WebAdmin/Model/LoggerSaveStub.cs b/WF-WebAdmin/WF-WebAdmin/Model/LoggerSaveStub.cs index 28ec514..0d71a7f 100644 --- a/WF-WebAdmin/WF-WebAdmin/Model/LoggerSaveStub.cs +++ b/WF-WebAdmin/WF-WebAdmin/Model/LoggerSaveStub.cs @@ -1,70 +1,39 @@ -using Microsoft.Extensions.Logging; -using System.Xml.Linq; -using static WF_WebAdmin.Model.LoggerSaveStub.CustomLoggerConfiguration; +using Microsoft.AspNetCore.Components; +using Microsoft.Extensions.Configuration.UserSecrets; +using Microsoft.Extensions.Logging; +using Microsoft.VisualBasic; +using System.Diagnostics; +using WF_WebAdmin.Pages; +using WF_WebAdmin.Service; namespace WF_WebAdmin.Model { - - public sealed class LoggerSaveStub : ILogger + public static partial class LoggerSaveStub { - internal class CustomLoggerConfiguration - { - public int EventId { get; set; } - - public Dictionary LogLevels { get; set; } = - new() - { - [LogLevel.Information] = LogFormat.Short, - [LogLevel.Warning] = LogFormat.Short, - [LogLevel.Error] = LogFormat.Long - }; - - public enum LogFormat - { - Short, - Long - } - } - - - private readonly string name; - private readonly Func getCurrentConfig; - - - public IDisposable BeginScope(TState state) => default!; - - public bool IsEnabled(LogLevel logLevel) => - getCurrentConfig().LogLevels.ContainsKey(logLevel); - - public void Log( - LogLevel logLevel, - EventId eventId, - TState state, - Exception? exception, - Func formatter) + public static void Log(ILogger logs,LogLevel logLevel,string message) { - if (!IsEnabled(logLevel)) - { - return; - } - CustomLoggerConfiguration config = getCurrentConfig(); + ILogsService logsService = new LogsServiceStub(); + logsService.addLogs( new Logs( logLevel , message ) ); - if (config.EventId == 0 || config.EventId == eventId.Id) - { - switch (config.LogLevels[logLevel]) - { - case LogFormat.Short: - Console.WriteLine($"{name}: {formatter(state, exception)}"); - break; - case LogFormat.Long: - Console.WriteLine($"[{eventId.Id,2}: {logLevel,-12}] {name} - {formatter(state, exception)}"); - break; - default: - // No-op - break; - } - } + logs.Log(logLevel, message ); } } -} \ No newline at end of file +} + +/* + * [Inject] + * public ILogger< Class > Logger { get; set; } + * + * LoggerSaveStub.Log(Logger,LogLevel. level , message ); + * + * + * LogLevel: + * Trace = 0, + * Debug = 1, + * Information = 2, + * Warning = 3, + * Error = 4, + * Critical = 5, + * None = 6, +*/ \ No newline at end of file diff --git a/WF-WebAdmin/WF-WebAdmin/Model/Logs.cs b/WF-WebAdmin/WF-WebAdmin/Model/Logs.cs new file mode 100644 index 0000000..bc03208 --- /dev/null +++ b/WF-WebAdmin/WF-WebAdmin/Model/Logs.cs @@ -0,0 +1,14 @@ +namespace WF_WebAdmin.Model +{ + public class Logs + { + public LogLevel LogLevel { get; set; } + + public string Message { get; set; } + + public Logs(LogLevel logLevel , string message) { + this.LogLevel=logLevel; + this.Message=message; + } + } +} diff --git a/WF-WebAdmin/WF-WebAdmin/Pages/DeleteUser.razor.cs b/WF-WebAdmin/WF-WebAdmin/Pages/DeleteUser.razor.cs index f377d66..a2c46da 100644 --- a/WF-WebAdmin/WF-WebAdmin/Pages/DeleteUser.razor.cs +++ b/WF-WebAdmin/WF-WebAdmin/Pages/DeleteUser.razor.cs @@ -10,8 +10,6 @@ namespace WF_WebAdmin.Pages [Inject] public ILogger Logger { get; set; } - public LoggerSaveStub logger { get; set; } - private List users; @@ -36,8 +34,8 @@ namespace WF_WebAdmin.Pages // ------- Popup remove user ------- private void ShowConfirmation(User user) { - Logger.LogInformation( "Demande de suprétion de l'utilisateur : { Name }",user.Name); - //logger.LogInformation( "Demande de suprétion de l'utilisateur : { Name }",user.Name); + LoggerSaveStub.Log(Logger,LogLevel.Information, $"Demande de supretion de l utilisateur : { user.Name }"); + userToDelete = user; showPopupDelete = true; } diff --git a/WF-WebAdmin/WF-WebAdmin/Pages/LogsPage.razor b/WF-WebAdmin/WF-WebAdmin/Pages/LogsPage.razor new file mode 100644 index 0000000..4799da4 --- /dev/null +++ b/WF-WebAdmin/WF-WebAdmin/Pages/LogsPage.razor @@ -0,0 +1,34 @@ +@page "/logs" + +

Logs

+ + +@if (logs is null) +{ +

Aucun Logs

+} +@* else if (quotes.Count == 0) +{ +

Aucune citation en attente de validation.

+} *@ +else +{ +

Citations en attente de validation :

+ + + + + + + + + @foreach (var log in logs) + { + + + + + } + +
LogLevel :Message :
@log.LogLevel@log.Message
+} \ No newline at end of file diff --git a/WF-WebAdmin/WF-WebAdmin/Pages/LogsPage.razor.cs b/WF-WebAdmin/WF-WebAdmin/Pages/LogsPage.razor.cs new file mode 100644 index 0000000..559df24 --- /dev/null +++ b/WF-WebAdmin/WF-WebAdmin/Pages/LogsPage.razor.cs @@ -0,0 +1,21 @@ +using Microsoft.AspNetCore.Components; +using WF_WebAdmin.Model; + +namespace WF_WebAdmin.Pages +{ + public partial class LogsPage + { + private Logs[] logs; + + [Inject] + public HttpClient Http { get; set; } + + [Inject] + public NavigationManager NavigationManager { get; set; } + + protected override async Task OnInitializedAsync() + { + logs = await Http.GetFromJsonAsync($"{NavigationManager.BaseUri}fake_data_logs.json"); + } + } +} \ No newline at end of file diff --git a/WF-WebAdmin/WF-WebAdmin/Service/ILogsService.cs b/WF-WebAdmin/WF-WebAdmin/Service/ILogsService.cs new file mode 100644 index 0000000..5c5a5d8 --- /dev/null +++ b/WF-WebAdmin/WF-WebAdmin/Service/ILogsService.cs @@ -0,0 +1,17 @@ +using WF_WebAdmin.Model; + +namespace WF_WebAdmin.Service +{ + public interface ILogsService + { + public Task removeLogs(Logs logs); + + public Task> getAllLogs(); + + public Task> getSomeLogs(int nb, int page); + + public Task addLogs(Logs logs); + + public Task getNbLogs(); + } +} diff --git a/WF-WebAdmin/WF-WebAdmin/Service/LogsServiceStub.cs b/WF-WebAdmin/WF-WebAdmin/Service/LogsServiceStub.cs new file mode 100644 index 0000000..d933ed0 --- /dev/null +++ b/WF-WebAdmin/WF-WebAdmin/Service/LogsServiceStub.cs @@ -0,0 +1,67 @@ +using Microsoft.AspNetCore.Mvc.RazorPages; +using System.Text.Json; +using WF_WebAdmin.Model; + +namespace WF_WebAdmin.Service +{ + public class LogsServiceStub : ILogsService + { + private readonly string _jsonFilePath = Path.Combine(Environment.CurrentDirectory, "wwwroot", "fake_data_logs.json"); + + public async Task saveLogsJson(List logs) + { + var json = JsonSerializer.Serialize(logs, new JsonSerializerOptions { WriteIndented = true }); + await File.WriteAllTextAsync(_jsonFilePath, json); + } + + + public async Task addLogs(Logs logs) + { + var data = await getAllLogs(); + + data.Add(logs); + await saveLogsJson(data); + } + + + public async Task> getAllLogs() + { + if (!File.Exists(_jsonFilePath)) + { + Console.Out.WriteLine($"{_jsonFilePath} not found"); + return new List(); + } + + var json = await File.ReadAllTextAsync(_jsonFilePath); + return JsonSerializer.Deserialize>(json) ?? new List(); + + } + + public async Task getNbLogs() + { + throw new NotImplementedException(); + } + + public async Task> getSomeLogs(int nb, int page) + { + var logs = await getAllLogs(); + if ((page - 1) * nb + nb > logs.Count()) + { + return logs.GetRange(logs.Count() - nb, nb); + } + return logs.GetRange((page - 1) * nb, nb); + + } + + public async Task removeLogs(Logs logs) + { + var data = await getAllLogs(); + var l = data.FirstOrDefault(p => p.Message ==logs.Message && p.LogLevel==logs.LogLevel); + if (l != null) + { + data.Remove(l); + await saveLogsJson(data); + } + } + } +} diff --git a/WF-WebAdmin/WF-WebAdmin/wwwroot/fake_data_logs.json b/WF-WebAdmin/WF-WebAdmin/wwwroot/fake_data_logs.json new file mode 100644 index 0000000..10aad98 --- /dev/null +++ b/WF-WebAdmin/WF-WebAdmin/wwwroot/fake_data_logs.json @@ -0,0 +1,18 @@ +[ + { + "LogLevel": 1, + "Message": "Logs de test" + }, + { + "LogLevel": 2, + "Message": "Demande de supretion de l utilisateur : admin" + }, + { + "LogLevel": 2, + "Message": "Demande de supretion de l utilisateur : testeur" + }, + { + "LogLevel": 2, + "Message": "Demande de supretion de l utilisateur : dev" + } +] \ No newline at end of file