如何配置 Serilog 以正确打印特殊字符?
How do I configure Serilog to print special characters correctly?
我使用 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_BUT Traitement Xnt.Annotation.Retrait.TraitementRetrait
特殊字符“É”看起来像乱码。
如何配置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)
我使用 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_BUT Traitement Xnt.Annotation.Retrait.TraitementRetrait
特殊字符“É”看起来像乱码。
如何配置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)