2017-10-10 112 views
0

我有多個在Azure上託管的ASP .NET MVC和Web Api應用程序。 我使用兩個不同階段進行部署:階段和PROD。基本上,我想有兩個不同的日誌文件夾:logs-stage和logs-PROD。基於我的web.config和直接在Azure中設置的屬性,這很好。Azure web應用程序在交換時刪除日誌目錄

問題是我每次部署時,所有以前的日誌都被刪除。我怎樣才能避免這種情況?

我NLOG配置如下所示:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <targets> 
     <target xsi:type="File" name="f" fileName="${basedir}/logs-${appsetting:name=Version:default=DEV}/website.${shortdate}.log" 
     layout="${longdate} ${uppercase:${level}} ${logger} - ${message}" /> 

     <target name="email-Errors" xsi:type="Mail" 
      smtpServer="smtp.sendgrid.net" 
      smtpPort="myPort" 
      enableSsl="false" 
      smtpUsername="myUsername" 
      smtpPassword="myPassword" 
      smtpAuthentication="Basic" 
      from="myEmail" 
      to="${appsetting:name=WEBSITE_EMAIL_DEVELOPERS:default=myEmail}" 
      subject="[${appsetting:name=Version:default=DEV}][WEB][${uppercase:${level}}]" 
      layout="${longdate} ${uppercase:${level}} ${logger} - ${message}" 
      html="false" /> 
    </targets> 

    <rules> 
     <logger name="*" minlevel="Trace" writeTo="f" /> 
     <logger name="*" minlevel="Error" writeTo="email-Errors" /> 
    </rules> 
</nlog> 

回答

2

的問題是,每次我部署時,所有以前的日誌被刪除。我怎樣才能避免這種情況?

根據你的描述,似乎當你發佈WebApp時,然後刪除Azure WebApp中的其他文件。如果是這種情況,請嘗試在發佈WebApp期間取消選中[刪除其他文件作爲目標]選項。

enter image description here

更新時間:

blog,我們可以知道,如果我們交換槽,就在DNS指針的變化,所以如果你有交換後的產品n日誌,則Nlog文件位於臨時插槽中,未刪除。以下是blog的片段。

簡而言之,交換操作將在2個部署槽之間交換網站內容。

互換,什麼是不可以,但請注意,交換是不是複製網站的內容,但更多交換DNS指針。

+0

這可以防止在發佈時刪除日誌文件夾。由於我將舞臺插槽換成了PROD插槽,我仍然放棄了以前的文件。 – PMerlet

+0

我已經更新了答案。 –

相關問題