【问题标题】:NLog pass Configuration values(ConnectionString and configDir) to nlog.config in Main methodNLog 在 Main 方法中将配置值(ConnectionString 和 configDir)传递给 nlog.config
【发布时间】:2018-04-04 05:10:45
【问题描述】:

我正在尝试将 PostgreSQL 的 connectionString 和我的日志目录传递给 Main 方法中的 nlog.config 文件,我该如何实现?

我目前正在做类似this 的事情 在 Startup.cs 中:

NLog.LogManager.Configuration.Variables["connectionString"] = Configuration.GetConnectionString("databaseConnectionString");
NLog.LogManager.Configuration.Variables["configDir"] = Configuration.GetValue<string>("Logging:LogFilePath");

我唯一遇到的问题是,如果我尝试在 Main 方法中记录某些内容,则在此 DB 记录工作正常之后:

Error when writing to database. Exception: System.ArgumentException: Host can't be null

在 Npgsql.NpgsqlConnector.d__145.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 Npgsql.ConnectorPool.d__24.MoveNext()

【问题讨论】:

    标签: c# asp.net-core asp.net-core-2.0 nlog


    【解决方案1】:

    我找到了在 Main 方法中加载配置的方法,如果有人需要,这里有一种方法:

    var builder = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json");
    
            Configuration = builder.Build();
    

    然后我使用 NLog.ConfigurationManager 来设置 connectionString 和 Log 目录:

     NLog.LogManager.Configuration.Variables["connectionString"] = Configuration.GetConnectionString("databaseConnectionString");
     NLog.LogManager.Configuration.Variables["configDir"] = Configuration.GetValue<string>("Logging:LogFilePath");
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多