Azure web app删除swap上的日志目录

时间:2017-10-10 07:42:42

标签: asp.net azure azure-web-sites nlog

我在Azure上托管了多个ASP .NET MVC和Web Api应用程序。 我使用两个不同的阶段进行部署:阶段和PROD。基本上,我希望有两个不同的日志文件夹:logs-stage和logs-PROD。这基于我的web.config和直接在Azure中设置的属性。

问题是每次部署时,都会删除所有以前的日志。我怎么能避免这种情况?

我的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>

1 个答案:

答案 0 :(得分:2)

  

问题是每次部署时,都会删除所有以前的日志。我怎么能避免这种情况?

根据您的描述,您似乎在发布WebApp时删除Azure WebApp中的其他文件。如果是这种情况,请在发布WebApp期间尝试取消选中[删除其他文件作为目标]选项。

enter image description here

<强>更新

blog,我们可以知道,如果我们交换插槽,只需更改DNS指针,那么如果在交换后产品中有nlog,则Nlog文件位于暂存插槽中未删除。以下是blog

的摘录
  

简而言之,交换操作将在两个部署位置之间交换网站的内容。

     

交换,什么不是,但请注意,交换不是关于复制网站内容,而是关于交换DNS 指针的更多信息。