如何将IIS中的sitename设置为我的log4net创建文件

时间:2010-03-04 07:41:20

标签: .net iis log4net

我在我的.NET项目中使用log4net,并且使用以下名称创建日志:

C:\\Inetpub\\zz_appLogs\\<hard coded sitename>\\<yyyyMMdd>\\<hard coded file name with txt extension>

现在,我想在IIS中使用当前站点名称更改日志文件名。我在log4net设置中尝试了这个,但它没有用:

<file type="log4net.Util.PatternString" 
      value="C:\Inetpub\zz_appLogs\MYsiteLogs\" />
...
<datePattern 
      value="yyyyMMdd\\&quot;%property{CURRENTSITENAME}_info.txt&quot;" />

结果日志的文件名如下:

C:\Inetpub\zz_ErrorLogs\MVCdoctoolLogs\20100304\  
      %property{CURRENTSITENAME}_error.txt`

我在项目的Global.ascx文件中的app_start中设置属性:

log4net.GlobalContext.Properties["CURRENTSITENAME"] = 
        System.Web.Hosting.HostingEnvironment.SiteName;

你能告诉我如何在log4net创建的结果txt文件中设置IIS的网站名称。

提前谢谢  :)

1 个答案:

答案 0 :(得分:0)

我试过自己,以下给了我预期的结果。我使用控制台应用程序进行了测试,但我不知道这应该如何改变:

  <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="c:\temp\%date{yyyyMMdd}\%property{SiteName}.txt" />
      <rollingStyle value="Size" />
      <appendToFile value="true" />
      <maximumFileSize value="100KB" />
      <maxSizeRollBackups value="1" />
      <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date [%2thread] %-5level %logger - %message%newline" />
      </layout>
  </appender>