Log4net无法在Windows Server 2008上的IIS7中运行

时间:2014-05-22 06:37:06

标签: asp.net asp.net-mvc log4net

未在服务器(Windows 2008)和IIS7上创建日志。我给出了绝对的路径以及相对的路径。

我已授予日志文件夹的所有权限。我已经包含了网络用户,IUsr和IIS_IUSRS,并且每个人都有权限。还

没有将日志写入该文件夹

网络配置中的条目如下

 <section name="log4net"   type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />

 <log4net>
 <logger name="GeneralLogger">
 <level value="ALL" />
 <appender-ref ref="RollingFile" />
 </logger>
 <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
 <file value="C:\\vhosts\\staging.customerportal.com\\log\\CustomerPortal.log"/>
 <appendToFile value="true"/>
 <datePattern value="yyyyMMdd"/>
 <rollingStyle value="Date"/>
 <filter type="log4net.Filter.LevelRangeFilter">
 <acceptOnMatch value="true"/>
 <levelMin value="DEBUG"/>
 <levelMax value="FATAL"/>
 </filter>
 <layout type="log4net.Layout.PatternLayout">
 <conversionPattern value="%-5p %d %5rms %X{addr} %-22.22c{1} %-18.18M - %m%n"/>
 </layout>
 </appender>
 </log4net>

我曾试过提供单斜杠,而且在web配置中的文件值中只有双斜杠没有任何作用。

global.asax.cs中的代码是

 public class MvcApplication : System.Web.HttpApplication
 {
   private static log4net.ILog log =   log4net.LogManager.GetLogger(typeof(MvcApplication));

    protected void Application_Start()
    { 
      log4net.Config.XmlConfigurator.Configure();

    }
assemblyinfo.cs中的

代码是

   [assembly: XmlConfigurator(ConfigFile="web.config", Watch=true)]

我曾尝试使用此代码,并且在assemblyinfo.cs中没有此代码

它不起作用。

当我在localhost中使用绝对路径时,日志会正确写入该文件夹

服务器上失败

我在控制器文件中尝试了这两个选项

  //private static log4net.ILog log =     
        log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)      ;
   private static log4net.ILog log = log4net.LogManager.GetLogger("GeneralLogger");

我曾尝试过一条不存在的路径,它没有创建文件夹。

请帮帮我。请帮我介绍如何使用服务器

中的log4net启用日志

1 个答案:

答案 0 :(得分:1)

在配置logmanager(实际上是配置两次)之前,通过调用Application onStart上的Configure来初始化记录器。

选项1:

public class MvcApplication : System.Web.HttpApplication
{
private static log4net.ILog log =   log4net.LogManager.GetLogger(typeof(MvcApplication));

protected void Application_Start()
{ 
  //Remove: log4net.Config.XmlConfigurator.Configure();

}

并保持:

  [assembly: XmlConfigurator(ConfigFile="web.config", Watch=true)]

选项2:

public class MvcApplication : System.Web.HttpApplication
{
private static log4net.ILog log;

protected void Application_Start()
{ 
  log4net.Config.XmlConfigurator.Configure();
  log = log4net.LogManager.GetLogger(typeof(MvcApplication));
}

并删除:

//Remove:  [assembly: XmlConfigurator(ConfigFile="web.config", Watch=true)]