log4net不要在Windows Server 2003上创建日志文件

时间:2012-03-24 08:04:57

标签: asmx log4net windows-server-2003

我在ASP.NET Web服务中使用log4net进行日志记录。我将log4net的init逻辑添加到global.asax。

我在win xp上测试了这个web服务,登录工作。

然后我通过Windows Service 2003上的msi安装程序部署了此Web服务。

我测试了登录但它不起作用。它不会创建日志文件。

首先我展示我的代码:

的web.config

<?xml version="1.0"?>
<configuration>

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

  <appSettings>
  </appSettings>

  <connectionStrings/>

  <log4net configSource="config.log4net" />

  <system.web>    
    <authorization>
      <allow users="?" />
    </authorization>
    <compilation debug="true" ></compilation>
    <authentication mode="None" />
  </system.web>

</configuration>

log4net config

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
    <appender name="RollinFileAppender" type="log4net.Appender.RollingFileAppender">
        <param name="File" value="logs\\log" />
        <param name="AppendToFile" value="true" />
        <param name="MaxSizeRollBackups" value="10" />
        <param name="MaximumFileSize" value="10" />
        <param name="RollingStyle" value="Date" />
        <param name="DatePattern" value="_yyMMdd.\t\x\t" /> 
        <param name="StaticLogFileName" value="false" />
        <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p - %m%n" />
        </layout>
    </appender>

    <logger name="mylogger">
        <level value="DEBUG" />
        <appender-ref ref="RollinFileAppender"/>
    </logger>
</log4net>

的global.asax

public class Global : System.Web.HttpApplication
{    
    protected void Application_Start(object sender, EventArgs e)
    {
        XmlConfigurator.Configure();
    }
}

我在WS类中创建了logger对象:

    public static ILog _logger = LogManager.GetLogger("mylogger");

在网络方法中的使用:

 _logger.Info(input);

首先我认为这是安全问题。

所以我在帐户 C:\ Inetpub \ wwwroot \ txs \ Logs 文件夹中编辑了permison:

  • ASPNET到完全控制
  • 网络服务至完全控制
  • IUSR至完全控制

但它没有帮助。

所以我编辑了IIS上虚拟文件夹的设置来编写。我也没帮忙。

我谷歌并找到了这个:http://neilkilbride.blogspot.com/2008/03/log4net-problems-logging-from-web-app.html

所以我试了一下。这里有编辑 web.config

<?xml version="1.0"?>
<configuration>

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

  <appSettings>
    <add key="log4net.Internal.Debug" value="true"/>  
  </appSettings>

  <connectionStrings/>

<system.diagnostics>  
<trace autoflush="true">  
    <listeners>  
 <add   
     name="textWriterTraceListener"   
     type="System.Diagnostics.TextWriterTraceListener"   
     initializeData="C:\log.txt" />  
    </listeners>  
</trace>  
</system.diagnostics> 

  <log4net configSource="config.log4net" />

  <system.web>    
    <authorization>
      <allow users="?" />
    </authorization>
    <compilation debug="true" ></compilation>
    <authentication mode="None" />
  </system.web>

</configuration>

它没有帮助。没有创建日志文件。当我在win Xp上测试时,一切正常。

任何人都可以告诉我什么是问题的根源。

已编辑:这是安全问题,我放到了web.config:

<trust level="High" />

问题解决了。

1 个答案:

答案 0 :(得分:2)

尝试为日志文件提供完整路径,您也可以尝试将路径中的双斜杠“\”替换为单个“\”。

<log4net>
    <appender name="RollinFileAppender" type="log4net.Appender.RollingFileAppender">
        ...
        <param name="File" value="c:\logs\log" />
        ...
    </appender>
</log4net>

或尝试查看文件的创建位置

RollingFileAppender rootAppender = (RollingFileAppender)((log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository()).Root.Appenders[0];
string filename = rootAppender.File;

或者您可以重新检查服务器上的写入权限问题。它在服务器上比xp更复杂。

相关问题