C# 如何设置dotnet日志的区域性?

C# 如何设置dotnet日志的区域性?,c#,logging,.net-core,culture,.net-core-3.0,C#,Logging,.net Core,Culture,.net Core 3.0,我正在使用dotnetcore 3.1中的登录。在记录器中使用日期的复合格式时,我得到的格式与在应用程序代码中将日期转换为字符串时的格式不同 此代码: ILoggerFactory loggerFactory = LoggerFactory.Create(builder => builder.AddConsole()); _logger = loggerFactory.CreateLogger<Program>(); _logger.LogInformation("T

我正在使用dotnetcore 3.1中的登录。在记录器中使用日期的复合格式时,我得到的格式与在应用程序代码中将日期转换为字符串时的格式不同

此代码:

ILoggerFactory loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());
_logger = loggerFactory.CreateLogger<Program>();
_logger.LogInformation("TEST date via format string {}", DateTime.Today);
_logger.LogInformation("TEST date with concatentation:" + DateTime.Today);

我很惊讶记录器没有从应用程序继承区域性。我是否遗漏了什么,如果没有,我如何控制记录器的文化?

这让我很感兴趣,我决定四处挖掘一下

根据中的dotnet LogValuesFormatter判断,当使用大括号{}时,对Format方法的调用使用不变区域性

根据,设置为MM/dd/yyyy

但是,连接似乎使用了当前区域性

我建议,如果您想使用大括号格式,您只需调用ToString并添加区域性,以便在格式化程序获得日期之前,将日期强制转换为当前区域性中的字符串。您还可以使用字符串插值,它使用了与大括号类似的语法,但似乎也使用了当前区域性:

_logger.LogInformation("Current culture is "+  CultureInfo.CurrentCulture.Name);
_logger.LogInformation("TEST date via format string {}", DateTime.Today);
_logger.LogInformation("TEST date via cultured format string {}", DateTime.Today.ToString(CultureInfo.CurrentCulture));
_logger.LogInformation("TEST date with concatentation:" + DateTime.Today);
_logger.LogInformation($"TEST date with string interpolation: {DateTime.Today}");
此代码提供以下输出:

Current culture is en-GB
TEST date via format string 09/12/2020 00:00:00
TEST date via cultured format string 12/09/2020 00:00:00
TEST date with concatentation:12/09/2020 00:00:00
TEST date with string interpolation: 12/09/2020 00:00:00

链接的源代码说明了我的问题的答案是“不,我无法控制记录器的文化”。虽然我对微软实施不变量文化的决定感到矛盾,但选择MM/dd/yyyyy作为日期格式仍然是令人反感的:)顺便说一句@reisclef检查你的第二个链接,它与第一个相同。谢谢完全同意你的陈述@TrevorJ。谢谢你指出链接错误。这就是我在深夜回答问题所得到的!我现在已经改正了。:)
Current culture is en-GB
TEST date via format string 09/12/2020 00:00:00
TEST date via cultured format string 12/09/2020 00:00:00
TEST date with concatentation:12/09/2020 00:00:00
TEST date with string interpolation: 12/09/2020 00:00:00