Asp.net core 如何配置Serilog以正确打印特殊字符?
我使用Serilog作为滚动文件记录器。 在控制台应用程序的开始,我在ILogger上调用这个自定义扩展方法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
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,这就解决了这个问题。好提示谢谢!