我无法在 MAUI 应用程序上生成日志文件[已解决]

问题描述 投票:0回答:1

我使用 serilog-sinks-file 包将日志复制到“.log”文件中,但它不会生成目录或文件。

我在空的 MAUI 项目中的“MauiProgram.cs”中添加了此代码:

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Information()
    .WriteTo.Debug()
    .WriteTo.File("Logs/Test-.log")
    .CreateLogger();

是否缺少任何配置?

提前谢谢您。

使用的版本:

  • Serilog.Extensions.Logging 8.0.0
  • Serilog.Sinks.Debug 2.0.0
  • Serilog.Sinks.File 5.0.0
  • net8.0

更新:

解决了!我的问题是我没有正确管理路线。

文件系统助手应用于检索应用程序所在的目录:

FileSystem.Current.AppDataDirectory


maui serilog .net-8.0 serilog-sinks-file
1个回答
0
投票

Maui (.net9) 中不同 Serilog 接收器的工作示例:

先决条件

我已经安装了以下 nuget 软件包。

  • Serilog(4.1.0)
  • Serilog.Extensions.Hosting (8.0.0)
  • Serilog.Sinks.调试(3.0.0)
  • Serilog.Sinks.File (6.0.0)
  • Serilog.Sinks.Seq (8.0.0)
  • Serilog.Sinks.Email (4.0.0)

代码:

稍后我将使用我的 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 ...");
        }
    }

}

文件中的输出:

Serilog output in File

序列输出:

Serilog output on Seq

电子邮件输出: Serilog output on Email

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.