2017-10-10 75 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

我已经更新了答案。 –

相关问题