我使用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]DÃBUTTraitement Xnt.Annotation.Retrait.TraitementRetrait
特殊字符'É'看起来像胡言乱语。
如何配置Serilog以正确输出特殊字符。文化应该是fr-CA
[添加参数'encoding:Encoding.UTF8'解决了该问题。