2017-10-03 5 views
0

Ich verwende Azure-Web-Jobs, um bestimmte Aufgaben zu planen. Der Web-Job wird erfolgreich in einer Azure-Webanwendung bereitgestellt, aber ich kann den Pfad zum Ordner app_data, in dem die Protokolldateien gespeichert werden sollen, nicht relativ genau bestimmen. (Web-Job ist in D: \ home \ site \ wwwroot \ App_Data \ Jobs ausgelöst \ \ webjobname)Azure-Webjob und log4net

Der folgende (absolute) Pfad funktioniert:

<file value="d:\\home\\site\\wwwroot\\App_Data\\Logs\\WebJobLog.txt" /> 

Die folgenden Pfade nicht funktionieren:

<file value="../../App_Data/Logs/WebJobLog.txt" /> 
<file value="/App_Data/Logs/WebJobLog.txt" /> 
<file value="~/App_Data/Logs/WebJobLog.txt" /> 

Kann jemand den Dateipfad relativ festlegen?

+0

warum stören, wird es nicht wie dieser Pfad wird sich ändern – 4c74356b41

Antwort

1

In der Regel können Sie Ihren Pfad wie folgt an Ihr Ziel zu erreichen:

<file value="App_Data\\Logs\\WebJobLog.log" /> 

Während für WebJobs, Ihre webjob würde in ein temporäres Verzeichnis kopiert werden (zB %TEMP%\jobs\{job type}\{job name}\{random name}) standardmäßig für den Betrieb, in diesem Zeigen Sie Ihre Protokolldatei unter dem Temp-Ordner. Weitere Einzelheiten finden Sie unter WebJob Working Directory.

Basierend auf Ihrer Anforderung, können Sie log4net.Util.PatternString nutzen und verwenden Sie die env Umwandlungsmuster die Umgebungsvariable (WEBROOT_PATH) von David Ebbo vorgeschlagen abzurufen. Sie müssen Ihren Weg wie folgt ändern:

<file type="log4net.Util.PatternString" value="%env{WEBROOT_PATH}\\App_Data\\Logs\\WebJobLog.log" /> 

Darüber hinaus können Sie Ihre FileAppender programmatisch erstellen, für diesen Ansatz, den Sie auf diese issue verweisen konnte. Darüber hinaus können Sie die Build-in-Protokollierung für Webjobs here überprüfen.

1

Sie sollten harte relative Kodierungsannahmen vermeiden, wo die WebJobs eingesetzt werden.

Wenn Ihr Ziel zum APP_DATA Ordner zu erhalten ist, erhalten Sie bei WEBROOT_PATH Umgebungsvariablen suchen, die auf d:\home\site\wwwroot Punkte, und es dann mit APP_DATA kombinieren.