【问题标题】:Programmatically set the NLog target attributes以编程方式设置 NLog 目标属性
【发布时间】:2016-05-05 14:44:04
【问题描述】:

我正在使用NLog Azure Storage Logger。我的配置如下 我不想将存储密钥放在目标中。相反,我将从应用程序设置中使用它,以便我可以在部署环境中设置 Azure 网站“应用程序设置”。如何以编程方式为此目标设置connectionString

 <nlog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"
   xmlns="http://www.nlog-project.org/schemas/NLog.xsd">

<target type="AzureAppendBlob"
           name="azure"
           layout="${longdate} ${level:uppercase=true} - ${message}"
           connectionString="DefaultEndpointsProtocol=https;AccountName=mylogs;AccountKey=xxxoxxx=="
           container="myappcontainer"
           blobName="${date:format=yyyy-MM-dd}.log" />

寻找类似的东西,

public class NLogService: IMyLogService
{
   ....

    public NLogService()
    {
        Logger azureLogger = LogManager.GetLogger("AzureAppendBlob");
        AzureAppendBlobTarget t = dbLogger.????;
        t.ConnectionString = "..."; 
    }
}

【问题讨论】:

    标签: c# nlog


    【解决方案1】:

    推荐方式:

    var azureBlobTarget = LogManager.Configuration.FindTargetByName<AzureAppendBlobTarget>("azure");
    azureBlobTarget.ConnectionString = "DefaultEndpointsProtocol=https;AccountName=mylogs;AccountKey=xxx";
    

    如果 NLog 配置了 xml 文件,这也有效。

    【讨论】:

      【解决方案2】:

      想出了办法,

          public NLogService()
          {
              var config = new LoggingConfiguration();
              var azureBlobTarget = new AzureAppendBlobTarget();
              config.AddTarget("azureAppender", azureBlobTarget);
      
              azureBlobTarget.BlobName = "${date:format=yyyy-MM-dd}.log";  
              azureBlobTarget.ConnectionString = "DefaultEndpointsProtocol=https;AccountName=mylogs;AccountKey=xxx";
              azureBlobTarget.Container = "myapp";
              azureBlobTarget.Layout = @"${longdate} ${level:uppercase=true} - ${message}";            
      
              var rule1 = new LoggingRule("*", LogLevel.Debug, azureBlobTarget);
              config.LoggingRules.Add(rule1);
      
              // Step 5. Activate the configuration
              LogManager.Configuration = config;
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-26
        • 2012-08-20
        • 1970-01-01
        • 2017-08-05
        • 1970-01-01
        • 2016-12-14
        • 1970-01-01
        相关资源
        最近更新 更多