2012-03-24 6 views
0

ログ用にASP.NET Webサービスでlog4netを使用します。 log4netの初期化ロジックをglobal.asaxに追加しました。log4net Windowsサーバー2003でログファイルを作成しないでください

私はこのウェブサービスをwin xp、loging worksでテストしました。

は、それから私は私がlogingをテストしたが、それは仕事をdoesntのWindowsサービスにMSIインストーラを経て2003年

をこの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のコンフィグ

<?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クラスでロガーオブジェクトを作成:Webメソッドで

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

用法:

_logger.Info(input); 

まず私は、それはセキュリティ上の問題だと思います。

だから私は、フォルダCにpermison編集:\アカウント用の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> 

これは役に立ちませんでした。ログファイルは作成されません。私がXpを勝つためにテストしたとき、すべてが機能します。

誰かが問題の根源であることを私にアドバイスできますか?

EDITED

:これは、セキュリティ上の問題だった、私は、web.configファイルに置く:

<trust level="High" /> 

、問題が解決しました。

答えて

2

ログファイルの絶対パスを指定すると、パス内の二重スラッシュ「\」を1つの「\」に置き換えることもできます。

<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

関連する問題