簡體   English   中英

.NET 核心 Windows 服務 CultureInfo 配置

[英].NET Core Windows Service CultureInfo configuration

我目前正在研究 .NET 核心 Windows 服務,實現幾個BackgroundService類來在計時器上運行東西。

除了一件事之外,一切都運行良好 - 向 ILogger 引用寫入日期似乎使用了不正確的 Culture ( en-US ),而不是系統配置en-AU

例如 -

    public override Task StartAsync(CancellationToken cancellationToken)
    {
        var utcNow = DateTime.UtcNow;
        Logger.LogInformation("Started at {utcNow}", utcNow);
        return base.StartAsync(cancellationToken);
    }

將產生日志 -

在此處輸入圖像描述

Windows 服務/控制台應用程序中是否可以設置文化? 我使用UseRequestLocalization ASP.NET 環境,但在上下文中似乎不合邏輯,因為沒有請求。

我嘗試設置各種CultureInfo...屬性但沒有結果 - 任何幫助將不勝感激。

入口點Program class 供參考 -

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args)
    {

        return Host.CreateDefaultBuilder(args)
                .UseWindowsService()
                .ConfigureLogging((hostContext, logging) =>
                {
                    DBLoggerConfiguration config = hostContext.Configuration.GetSection("Logging").Get<DBLoggerConfiguration>();
                    logging.AddDBLogger(config);
                })
                .ConfigureServices((hostContext, services) =>
                {

                    services.AddHttpClient<ISMSService, TwilioSMSService>();
                    services.AddHostedService<ExpirationSchedule>();
                    services.AddHostedService<BillingSchedule>();
                });
    }
}

編輯:通過 Github repo 中的一些挖掘,負責在消息中格式化參數的LogValuesFormatter僅使用 CultureInfo.InvariantCulture - 它嚴重依賴於美國格式化日期等方式。似乎沒有辦法配置這個,所以我在 Github 存儲庫中提交了一個錯誤,希望得到一些支持 - https://github.com/dotnet/extensions/issues/3380

此時應用此設置!

    public static void Main(string[] args)
    {
      CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("pt-BR", true) { DateTimeFormat = { ShortDatePattern = "dd/MM/yyyy", FullDateTimePattern = "dd/MM/yyyy HH:mm:ss", LongTimePattern = "HH:mm:ss" } };
    
      CreateHostBuilder(args).Build().Run();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM