如何配置Serilog以正确打印特殊字符?

papps

我将Serilog用作滚动文件记录器。在控制台应用程序启动时,我在ILogger上调用此自定义扩展方法。

        public static void LogStartExecution<TCategoryName>(this ILogger<TCategoryName> logger)
        {
            logger.LogInformation("DÉBUT Traitement {0}", typeof(TCategoryName));
        }

        public static void ConfigureLogging(IServiceCollection services, LoggingConfig loggingConfig)
        {
            // Initialize serilog logger
            Log.Logger = new LoggerConfiguration()
                 .WriteTo.File(path: @$"{loggingConfig.Path}\{loggingConfig.FileName}",
                               rollingInterval: RollingInterval.Day,
                               rollOnFileSizeLimit: true,
                               fileSizeLimitBytes: 5000000,
                               retainedFileCountLimit: 100)
                 .MinimumLevel.Debug()
                 .Enrich.FromLogContext()
                 .CreateLogger();

            // Add logging
            services.AddLogging(loggingBuilder =>
            {
                loggingBuilder.AddConsole();
                loggingBuilder.AddSerilog();
                loggingBuilder.AddDebug();
            });
        }

结果输出如下所示:2020-05-19 19:39:56.158 -04:00 [INF]开始处理Xnt.Annotation.Retrait.TraitementRetrait

特殊字符“É”看起来像胡言乱语。

如何配置Serilog以正确输出特殊字符。文化应该是fr-CA

papps

添加参数“ encoding:Encoding.UTF8”解决了该问题。

.Logger = new LoggerConfiguration()
   .WriteTo.File(path: @$"{loggingConfig.Path}\{loggingConfig.FileName}",
                 rollingInterval: RollingInterval.Day,
                 rollOnFileSizeLimit: true,
                 fileSizeLimitBytes: 5000000,
                 retainedFileCountLimit: 100,
                 encoding: Encoding.UTF8)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章