IIS服务回收后如何使log4Net \ log4Net.Async工作?

时间:2019-04-09 16:41:35

标签: iis-7 log4net

我在应用程序中使用log4net和log4net.Async记录日志。它在我的本地环境(VS2017)上运行良好。当我将其发布并发布到IIS服务器时,它在启动时运行良好。 回收服务,它不再写日志,日志文件仍然存在,但内部没有日志消息。

我已经为每个人设置了具有权限(READ \ WIRTE)的日志文件夹。

有我的日志配置:

    <appender name="InfoRollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />      
      <param name="Encoding" value="utf-8" />
      <param name="File" value="D:\Log\Info\" />
      <param name="AppendToFile" value="true" />
     <param name="rollingStyle" value="Date" />
      <param name="datePattern" value="yyyyMMdd\\yyyy-MM-dd-HH.'Info.log'" />

      <param name="staticLogFileName" value="false" />     
      <layout type="AsPay.GateWay.Log.AsRefundAccLayout">
        <conversionPattern value="--logtime:%date --:%-5level--msg:%Logtxt --:%CallType%newline" />
      </layout>    
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="INFO" />
        <param name="LevelMax" value="INFO" />
      </filter>

    </appender>
     <appender name="asyncForwarder" type="Log4Net.Async.AsyncForwardingAppender,Log4Net.Async">
      <appender-ref ref="InfoRollingFileAppender" />
    </appender>

    <root>
      <level value="DEBUG" />
      <appender-ref ref="asyncForwarder" />
    </root>
code in Global.asax:

    protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            System.IO.FileInfo fileinfo = new System.IO.FileInfo(Server.MapPath("~/log4net.Config"));
            log4net.Config.XmlConfigurator.Configure(fileinfo);
        }

奇怪的是,在回收IIS之后,继续创建日志文件(例如:2019-04-10-00.Info.log),但日志文件中没有日志内容。回收IIS之后,除日志外,该服务的功能没有任何问题。

0 个答案:

没有答案