2009-08-10 10 views
5

本当に簡単な質問 - >私はASP.NETアプリケーションのLog4Netからデータを取得できないようです。クラスライブラリを参照するウェブサイト、。このクラスライブラリでは、私はロガーを呼び出すいくつかの行を持っている。私のASP.NET WebサイトでLog4Netを動作させることができません:(

私のVisual Studio 2008のデバッグ出力ウィンドウでlog4netの出力データを読み取るしようとしている。

私のコードと私の設定は...

//Class Library project 
//File: Foo.cs 
public class FooService 
{ 
    private static readonly ILog log = LogManager.GetLogger(typeof(FooService)); 

    public FooService() 
    { 
     // NOTE: To play with my L4N settings, I'll call Debug once, then Info once. 

     log.Info("Starting Constructor"); 

     // ... snip ... 

     log.Debug("Leaving Constructor"); 
    } 
} 


// ASP.NET Website project 
// File: global.asax 
void Application_Start(object sender, EventArgs eventArgs) 
{ 
    log4net.Config.XmlConfigurator.Configure(); 
} 

// File: Whatever.aspx.cs 
// A delegate method (when a user clicks a button) creates the FooService() instance. 

// File: web.config 
<configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler" requirePermission="false" /> 

    // .... 

</configSections> 


<log4net> 
    <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender"> 
     <mapping> 
      <level value="ERROR" /> 
      <foreColor value="White" /> 
      <backColor value="Red, HighIntensity" /> 
     </mapping> 
     <mapping> 
      <level value="DEBUG" /> 
      <backColor value="Green" /> 
     </mapping> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
     </layout> 
    </appender> 

    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> 
     <layout type="log4net.Layout.PatternLayout" value="%date [%thread] %-5level %logger - %message%newline" /> 
    </appender> 

    <appender name="OutputDebugStringAppender" type="log4net.Appender.OutputDebugStringAppender"> 
     <mapping> 
      <level value="ERROR" /> 
      <foreColor value="White" /> 
      <backColor value="Red, HighIntensity" /> 
     </mapping> 
     <mapping> 
      <level value="DEBUG" /> 
      <backColor value="Blue" /> 
     </mapping> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
     </layout> 
    </appender> 


    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="App_Data\logging\log-append.txt"/> 
    </appender> 

    <!-- Setup the root category, add the appenders and set the default level --> 
    <root> 
     <level value="ALL" /> 
     <appender-ref ref="OutputDebugStringAppender" /> 
     <appender-ref ref="ConsoleAppender" /> 
     <appender-ref ref="ColoredConsoleAppender" /> 
    </root> 
    <!-- Specify the level for some specific categories --> 
    <logger name="DotNetOpenAuth"> 
     <level value="ALL" /> 
    </logger> 
</log4net> 

助けや助言を歓迎します...

EDIT:RollingLogFileAppenderを追加しました。

+0

なぜWebアプリケーションでColoredConsoleAppenderを使用していますか? – RichardOD

+0

'私はconsole.outがこの奇妙なデバッガ出力ウィンドウにリダイレクトされることを期待しています。 –

答えて

5

私はこの同じ問題を抱えていました。私はそれが間違ったweb.configなどを見ていたと思います。私はついにweb.configからlog4net.configを分けて、\ inetpub \ Logs \ log4net.configにパスを入れて、すべてうまくいった。

UDPATED ON REQUEST:少し複雑なバージョンから編集しました。

<?xml version="1.0" encoding="utf-8"?> 
<log4net> 
    <appender name="TraceAppender" type="log4net.Appender.TraceAppender"> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%thread] %-5level (%logger:%line) - %message%newline" /> 
     </layout> 
    </appender>\ 

    <root> 
     <!--ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF--> 
     <level value="ALL" /> 
     <appender-ref ref="TraceAppender" /> 
    </root> 
</log4net> 

そして、次のようにそれがコードに設定されています。

 var logpath = WebConfigurationManager.AppSettings["LogConfigPath"] ?? @"\Inetpub\Logs\log4net.config"; 
     var finfo = new System.IO.FileInfo (logpath); 
     XmlConfigurator.Configure(finfo); 
+0

ビジュアルスタジオ(デバッガ)OUTPUTウィンドウ?またはファイルに? –

+0

ええ、私はOutputDebugString機能に行くTraceAppenderを使用しています。私はそれをVSまたはhttp://technet.microsoft.com/en-us/sysinternals/bb896647.aspx – kenny

+0

wowで見ることができます。そのsysinternalsアプリは素晴らしいです:)私はそこにものを愛し、ここに別のキーのものがあります:)詳細を詳しく教えてください(例えば、あなたの.configファイルのスクリーンショットを投稿するlog4net設定)、お願いしますか? –

5

ASP.Netファイルシステムへのアクセスの使用上の制約があるため、明示的にApp_Dataに下のディレクトリを指すようにしてみてください(それが許可された) ここに私のワーキングサンプル:

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.FileAppender"> 
     <file value="App_Data\logging\log-file.txt"/> 

ロールオーバー

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="App_Data\logging\log-append.txt"/> 
+0

Heh - dude。私はファイルシステムを使用しているとは言いません:)もう一度見てください..... –

+0

作業サンプルを試してみてください。 – Dewfy

+0

ok ..私はこれを行くつもりです...うーん。 OUTPUTウィンドウのいくつかのエラー... og4net:ERROR XmlHierarchyConfigurator:[RollingFileAppender]という名前のアペンダーは見つかりませんでした。 log4net:ERROR XmlHierarchyConfigurator:[RollingFileAppender]という名前のAppenderが見つかりませんでした。log4net:ERROR XmlHierarchyConfigurator:[log4net.Appender.OutputDebugStringAppender]のオブジェクトを設定するプロパティ[マッピング]が見つかりません log4net:ERROR XmlHierarchyConfigurator:[log4net.Appender.OutputDebugStringAppender]でオブジェクトを設定するプロパティ[マッピング]が見つかりません –

0

少なくとも2可能性のある問題があります:ファイルへのアドレスが指定されている

  • 方法は、絶対に使用してみてください代わりにパス。
  • 呼び出しを行うプロセスには、ファイルを変更するための権限が必要です。ログファイルへの書き込みを行っているユーザーアカウントに権限があることを確認してください。

私はそれを作成して空のディレクトリを作成し、全員に完全な制御を与え、そのディレクトリにログインするように設定します。それからテストして、それが動作することを確認してから、セキュリティを許容レベルまで徐々に締めてください。

3

いいえ、答えを見つけました。私はTraceAppenderを使う必要があった。

アプリケーション構成ファイル はリスナー が実際に使用されているかを制御するために使用することができます。トレース の詳細設定の詳細については、 のTraceクラスのMSDN のドキュメントを参照してください。

イベントは、 System.Diagnostics.Trace.Write(string、string) メソッドを使用して書き込まれます。イベントのロガー名は で、 カテゴリの値としてWriteメソッドに渡されます。

ここに私の設定ファイルのデータだ...

<log4net> 
    <appender name="TraceAppender" type="log4net.Appender.TraceAppender"> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
     </layout> 
    </appender> 


    <!-- Setup the root category, add the appenders and set the default level --> 
    <root> 
     <level value="ALL" /> 
     <appender-ref ref="TraceAppender" /> 
    </root> 
</log4net> 
+0

+ 1-あなたが言ったように、この作品! – RichardOD

0

私は次の行Global.asaxファイルを追加し、それが動作します..! log4net.Config.XmlConfigurator.Configure();

+1

Er ...私はすでに私のオープニングポストに記載されていた。それは、私はLog4Netを使用して落としていると私は今NL​​ogを使用している..それははるかに良いIMO :)とそれは常に働いて(プラスそれは新しく、まだ開発愛を取得している)です。 –

関連する問題