Skip to content
Snippets Groups Projects
Commit c4235c41 authored by Fabrice Bosshard's avatar Fabrice Bosshard
Browse files

Merge branch '26_Logging' into 'master'

POC Logger

See merge request !7
parents 17b3055c f6232c13
No related branches found
No related tags found
1 merge request!7POC Logger
Pipeline #2475 passed with stages
in 32 minutes and 58 seconds
using StudiApp.Models; using MetroLog.Maui;
using StudiApp.Views;
using StudiApp.Models;
using StudiApp.Repository; using StudiApp.Repository;
namespace StudiApp; namespace StudiApp;
......
using Microsoft.Extensions.Logging; using MetroLog.MicrosoftExtensions;
using MetroLog.Operators;
using StudiApp.Models; using StudiApp.Models;
using StudiApp.Repository; using StudiApp.Repository;
using StudiApp.Services;
using StudiApp.ViewModels; using StudiApp.ViewModels;
using StudiApp.Views; using StudiApp.Views;
using Syncfusion.Maui.Core.Hosting; using Syncfusion.Maui.Core.Hosting;
...@@ -24,18 +24,31 @@ public static class MauiProgram ...@@ -24,18 +24,31 @@ public static class MauiProgram
.RegisterAppServices() .RegisterAppServices()
.RegisterViewModels() .RegisterViewModels()
.RegisterViews() .RegisterViews()
.RegisterDatabase(); .RegisterDatabase()
.RegisterLogger();
#if DEBUG
builder.Logging.AddDebug();
#endif
return builder.Build(); return builder.Build();
} }
private static void RegisterLogger(this MauiAppBuilder mauiAppBuilder)
{
mauiAppBuilder.Logging.AddTraceLogger(_ => { });
mauiAppBuilder.Logging.AddStreamingFileLogger(options =>
{
const string loggingFolder = "Logs";
var path = Path.Combine(FileSystem.AppDataDirectory, loggingFolder);
options.RetainDays = 60;
options.FolderPath = path;
});
mauiAppBuilder.Services.AddSingleton(LogOperatorRetriever.Instance);
}
public static MauiAppBuilder RegisterAppServices(this MauiAppBuilder mauiAppBuilder) public static MauiAppBuilder RegisterAppServices(this MauiAppBuilder mauiAppBuilder)
{ {
mauiAppBuilder.Services.AddSingleton<ILoggerService, LoggerService>();
return mauiAppBuilder; return mauiAppBuilder;
} }
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StudiApp.Services
{
internal interface ILoggerService
{
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StudiApp.Services
{
internal class LoggerService : ILoggerService
{
}
}
...@@ -39,8 +39,16 @@ ...@@ -39,8 +39,16 @@
<!-- Raw Assets (also remove the "Resources\Raw" prefix) --> <!-- Raw Assets (also remove the "Resources\Raw" prefix) -->
<MauiAsset Include="Resources\Raw\**" LogicalName="%(RecursiveDir)%(Filename)%(Extension)" /> <MauiAsset Include="Resources\Raw\**" LogicalName="%(RecursiveDir)%(Filename)%(Extension)" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Compile Remove="Services\Logs\**" />
<EmbeddedResource Remove="Services\Logs\**" />
<MauiCss Remove="Services\Logs\**" />
<MauiXaml Remove="Services\Logs\**" />
<None Remove="Services\Logs\**" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.1.0" /> <PackageReference Include="CommunityToolkit.Mvvm" Version="8.1.0" />
<PackageReference Include="MetroLog.Maui" Version="2.1.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="7.0.0" /> <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="7.0.0" />
<PackageReference Include="Syncfusion.Maui.Scheduler" Version="21.1.37" /> <PackageReference Include="Syncfusion.Maui.Scheduler" Version="21.1.37" />
<PackageReference Include="sqlite-net-pcl" Version="1.8.116" /> <PackageReference Include="sqlite-net-pcl" Version="1.8.116" />
...@@ -49,6 +57,7 @@ ...@@ -49,6 +57,7 @@
<PackageReference Include="SQLitePCLRaw.bundle_green" Version="2.1.4" /> <PackageReference Include="SQLitePCLRaw.bundle_green" Version="2.1.4" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="Services\" />
<Folder Include="Views\CoursesEditFragments" /> <Folder Include="Views\CoursesEditFragments" />
<Folder Include="Views\CoursesOverviewFragments" /> <Folder Include="Views\CoursesOverviewFragments" />
<Folder Include="Views\DashboardFragments" /> <Folder Include="Views\DashboardFragments" />
......
using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Input;
using Microsoft.Extensions.Logging;
namespace StudiApp.ViewModels namespace StudiApp.ViewModels
{ {
[QueryProperty("Text", "Text")] [QueryProperty("Text", "Text")]
public partial class CoursesEditViewModel : ObservableObject public partial class CoursesEditViewModel : ObservableObject
{ {
private readonly ILogger _logger;
[ObservableProperty] [ObservableProperty]
private string _text; private string _text;
public CoursesEditViewModel(ILogger<CoursesEditViewModel> logger)
{
_logger = logger;
}
[RelayCommandAttribute] [RelayCommandAttribute]
async Task GoBack() async Task GoBack()
{ {
_logger.LogInformation($"Go Back From {nameof(CoursesEditViewModel)}");
//Go to last on stack with ".." //Go to last on stack with ".."
await Shell.Current.GoToAsync(".."); await Shell.Current.GoToAsync("..");
} }
......
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Input;
using Microsoft.Extensions.Logging;
using StudiApp.Views; using StudiApp.Views;
namespace StudiApp.ViewModels namespace StudiApp.ViewModels
...@@ -16,8 +17,11 @@ namespace StudiApp.ViewModels ...@@ -16,8 +17,11 @@ namespace StudiApp.ViewModels
[ObservableProperty] [ObservableProperty]
private string _text = "Click me!"; private string _text = "Click me!";
public DashboardViewModel() private readonly ILogger _logger;
public DashboardViewModel(ILogger<DashboardViewModel> logger)
{ {
_logger = logger;
_items = new ObservableCollection<string>(); _items = new ObservableCollection<string>();
} }
...@@ -31,6 +35,8 @@ namespace StudiApp.ViewModels ...@@ -31,6 +35,8 @@ namespace StudiApp.ViewModels
Items.Add(Text); Items.Add(Text);
_logger.LogInformation($"Clicked Counter {Count} times.");
SemanticScreenReader.Announce(Text); SemanticScreenReader.Announce(Text);
} }
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment