我使用 serilog-sinks-file 包将日志复制到“.log”文件中,但它不会生成目录或文件。
我在空的 MAUI 项目中的“MauiProgram.cs”中添加了此代码:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Information()
.WriteTo.Debug()
.WriteTo.File("Logs/Test-.log")
.CreateLogger();
是否缺少任何配置?
提前谢谢您。
使用的版本:
更新:
解决了!我的问题是我没有正确管理路线。
文件系统助手应用于检索应用程序所在的目录:
FileSystem.Current.AppDataDirectory
Maui (.net9) 中不同 Serilog 接收器的工作示例:
先决条件
我已经安装了以下 nuget 软件包。
代码:
稍后我将使用我的 GitHub url 添加完整的代码示例
MauiProgram.cs
using Microsoft.Extensions.Logging;
using Serilog;
namespace MauiAppWithNet9
{
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});
#if DEBUG
builder.Logging.AddDebug();
#endif
builder.Services.AddLogging(options =>
{
options.AddSerilog(
new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Debug()
.WriteTo.Seq("http://10.16.1.202:5341/")
.WriteTo.File(Path.Combine(FileSystem.Current.AppDataDirectory,"MyApp.Log"),rollingInterval: (RollingInterval)RollingInterval.Day)
.WriteTo.Email(options: new()
{
From = "[email protected]",
To = ["[email protected]"],
Host = "smtp4dev.example.com",
Port = 2525
},
batchingOptions: new()
{
BatchSizeLimit=10,
BufferingTimeLimit=TimeSpan.FromSeconds(30)
})
.CreateLogger());
});
return builder.Build();
}
}
}
MainPage.xaml.cs
using MauiAppWithNet9.Pages;
using Microsoft.Extensions.Logging;
namespace MauiAppWithNet9
{
public partial class MainPage : ContentPage
{
int count = 0;
private readonly ILogger<MainPage> _logger;
public MainPage(ILogger<MainPage> logger)
{
InitializeComponent();
_logger = logger;
}
private void OnCounterClicked(object sender, EventArgs e)
{
count++;
if (count == 1)
CounterBtn.Text = $"Clicked {count} time";
else
CounterBtn.Text = $"Clicked {count} times";
_logger.LogDebug($"*********** Current Counter:{count}");
SemanticScreenReader.Announce(CounterBtn.Text);
}
private void OnHomePageClicked(object sender, EventArgs e)
{
_logger.LogInformation("HomePage button clicked ...");
}
}
}
文件中的输出:
序列输出: