Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 如何配置Serilog以正确打印特殊字符?_Asp.net Core_Special Characters_Serilog - Fatal编程技术网

Asp.net core 如何配置Serilog以正确打印特殊字符?

Asp.net core 如何配置Serilog以正确打印特殊字符?,asp.net-core,special-characters,serilog,Asp.net Core,Special Characters,Serilog,我使用Serilog作为滚动文件记录器。 在控制台应用程序的开始,我在ILogger上调用这个自定义扩展方法 public static void LogStartExecution<TCategoryName>(this ILogger<TCategoryName> logger) { logger.LogInformation("DÉBUT Traitement {0}", typeof(TCategoryNam

我使用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();
            });
        }
publicstaticvoidlogstartexecution(此ILogger记录器)
{
logger.LogInformation(“DÉBUT Traitement{0}”,typeof(TCategoryName));
}
公共静态void配置日志(IServiceCollection服务,LoggingConfig LoggingConfig)
{
//初始化日志记录器
Logger.Logger=新的LoggerConfiguration()
.WriteTo.File(路径:@$“{loggingConfig.path}\{loggingConfig.FileName}”,
rollingInterval:rollingInterval.Day,
rollOnFileSizeLimit:是的,
fileSizeLimitBytes:5000000,
保留数量限制:100)
.MinimumLevel.Debug()
.Enrich.FromLogContext()的
.CreateLogger();
//添加日志记录
services.AddLogging(loggingBuilder=>
{
loggingBuilder.AddConsole();
loggingBuilder.AddSerilog();
loggingBuilder.AddDebug();
});
}
结果输出如下所示: 2020-05-19 19:39:56.158-04:00[INF]DÉ但是Traitement Xnt.Annotation.retrit.traitementre

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

如何配置Serilog以正确输出特殊字符。
区域性应为fr CA

添加参数“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)

您如何配置您的接收器?@C.AugustoProiete添加了配置您如何查看生成的日志文件?如果在终端/控制台中,则可能是代码页问题。如果不是-您的C#源文件是否为UTF-8HTH@NicholasBlumhardt输出是一个普通的.txt文件。在记事本++中打开时,特殊字符会正确呈现,而在Windows记事本中打开时则不会。我在.WriteTo.File中添加了参数encoding:encoding.UTF8,这就解决了这个问题。好提示谢谢!