2012-03-24 99 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