2012-03-24 100 views
0

我在ASP.NET Web服务中使用log4net进行日志记录。我将log4net的init逻辑添加到global.asax。log4net不在Windows Server 2003上创建日志文件

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

然后我通过MSI安装程序部署该Web服务在Windows服务2003

我登录电子测试,但它不工作。它不创建日志文件。

首先我告诉我的代码:

的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的配置

<?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对象:在Web方法

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

用法:

_logger.Info(input); 

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

所以我编辑permison上的文件夹C:\的Inetpub \ wwwroot的\ TXS \日志的帐户:

  • ASPNET完全控制
  • 网络服务将完全控制
  • IUSR完全控制

但它没有帮助。

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

我google一下,发现这个: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上测试时,一切正常。

有谁能给我建议什么是问题的根源。

EDITED:这是安全问题,我把到web.config中:

<trust level="High" /> 

和问题得到解决。

回答

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复杂。

+1

此代码可帮助我找到其他问题,谢谢感谢 – kobe 2015-02-23 09:55:45