2017-06-26 5 views
1

私はc#Webアプリケーションを持っており、Service.asmx.csセクションにエラーがスローされるのを見たいと思っています。私。 SQLステートメントが失敗するか、間違った変数名がついてしまったときなど。私はかなり新しい.netですが、私が持っているアプリケーションのテンプレートはlog4netがインストールされています。 log4netログエラーの出力を取得するにはどうすればよいですか?

[WebMethod(Description = "Get a list of facilities")] 

public List<Facility> GetFacilities() 
{ 
    try 
    { 
    var context = EarthSoft.Server.Helpers.RequestContext.GetRequestContext(true); 

    if (context.Connection == null || context.User == null) return null; 

    var lst = new List<Facility>(); 

    string sql = 

     string.Format("select analyte_full,conc from dt_biological"); 

    var cmd = context.Connection.CreateCommand(sql); 
    context.Connection.PrepareTextCommand(cmd); 
    using (var reader = cmd.ExecuteReader()) 
    { 
     while (reader.Read()) 
     { 
     lst.Add(new Facility() 
      { 

      name = (string)reader.GetValue(0), 
      distance = (decimal)reader.GetValue(1) 
     }); 
     } 
    } 
    context.Connection.Close(); 

    return lst; 
    } 
    catch (Exception ex) 
    { 
    Log.Error(ex.Message, ex); 
    return null; 
    } 
} 

だからエラーメッセージがここにログに追加されますが、私は考えどのように のアクセスを持っていないか、ログを書き込む場所:

protected static log4net.ILog Log = EarthSoft.Common.log4net.GetLogger(typeof (Service)); 

その後、私のgetメソッドはありますか?ログ出力がどこかのSQLデータベースにテーブルに保存される可能性はありますか?

+1

このチュートリアルのhttps://www.codeproject.com/Articles/140911/log-net-Tutorialを参照してください。そして、このhttps://www.codeproject.com/Articles/11328/Configure-Log-Net-for-Desktop-and-Web-Applications –

+0

*間違った変数名のスペル.. *はコンパイルエラーです、あなたのコードは 'コンパイル?通常、ランタイムエラー、ロジックのギャップなどをログに記録します。意味がなく、コンパイルエラーをログに記録することもできません。 – Liam

+0

ありがとうございます、変数名がコンパイル時に捕捉されるでしょう。失敗した場合に備えてtry catchステートメントのLogセクションにアクセスする方法を知りたかっただけです!チュートリアルを読んでくれてありがとう。 –

答えて

2

Log4Netは高度に設定可能で、ログする場所を指定するには、「アペンダー」という概念を使用します。ファイル/データベース/キューに書き込むアペンダはすでにたくさんあります。必要に応じて、自分で作成することもできます(通常はそうではありません)。 とにかく、ここからの例を見て開始します。https://logging.apache.org/log4net/release/config-examples.html SomewherをあなたのコードEIN、通常はアプリケーションの初期化中に、あなたが呼び出す必要があります:

XmlConfigurator.Configure() 

これは、アプリケーション構成ファイルから設定を読み込みます。また、プログラムでlog4netを設定することもできますが、以前は手動で設定したことがない場合は高度な処理が可能ですので、上記の例を見て、ファイルから設定を使用することをお勧めします。 設定が提供されていない場合、log4netは完璧に動作しますが、ログは全く生成されません。これが現時点でログを見つけることができない理由だと思います。

関連する問題