2016-05-04 4 views
1

Ich verwende NLog Azure Storage Logger. Meine Konfiguration ist wie folgt, Ich möchte nicht den Speicherschlüssel in das Ziel setzen. Stattdessen verwende ich es aus den App-Einstellungen, um die Azure-Website "Anwendungseinstellungen" in der Implementierungsumgebung festzulegen. Wie kann ich das connectionString für dieses Ziel programmgesteuert festlegen?programmgesteuert die NLog Zielattribute

<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" /> 

suchen etwas wie,

public class NLogService: IMyLogService 
{ 
    .... 

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

Antwort

1

Der empfohlene Weg:

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

Dies funktioniert auch, wenn NLog mit einer XML-Datei konfiguriert ist.

0

herausgefunden, wie es zu tun,

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; 
    }