2010-12-29 13 views
2

だから、私はNLogを試していますが、落ち続けます。私がこれまでに得たものを通してみましょう。NLogの設定が正しくありませんか?

マイNLog.configファイル:私はこのようにそれをやっている何かを記録したいとき

private static Logger logger = LogManager.GetCurrentClassLogger(); 

そして:

<?xml version="1.0" encoding="utf-8" ?> 
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 

    <targets> 
     <target name="file" xsi:type="File" 
      layout="${longdate} ${logger} ${message}" 
      fileName="${basedir}/Logs/${shortdate}.log" /> 
    </targets> 

    <rules> 
     <logger name="*" minlevel="Debug" writeTo="file" /> 
    </rules> 
</nlog> 

は、その後、私はこのように私のオブジェクトを作成しています:

try 
{ 
    // Do something 
} 
catch (Exception ex) 
{ 
    logger.Fatal("ERROR {0}", ex); 
    return null; 
} 

しかし、私は次のエラーを取得しています

System.TypeInitializationException was unhandled 
Message="The type initializer for 'Rhs.CMSSites.Services.GetBlogFeeds' threw an exception." 
Source="GetBlogFeeds" 
TypeName="Rhs.CMSSites.Services.GetBlogFeeds" 
StackTrace: 
    at Rhs.CMSSites.Services.GetBlogFeeds.Main(String[] args) 
    at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) 
    at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
    at System.Threading.ThreadHelper.ThreadStart() 
InnerException: System.NullReferenceException 
    Message="Object reference not set to an instance of an object." 
    Source="GetBlogFeeds" 
    StackTrace: 
     at Rhs.CMSSites.Services.GetBlogFeeds.UserDetails(String UserName) in C:\Dev\Rhs.CMSSites.Services\GetBlogFeeds\GetBlogFeeds\Program.cs:line 217 
     at Rhs.CMSSites.Services.GetBlogFeeds..cctor() in C:\Dev\Rhs.CMSSites.Services\GetBlogFeeds\GetBlogFeeds\Program.cs:line 25 
    InnerException: 

アイデア?

編集

はおそらくこの先に言及している必要がありますが、これは、コマンドラインアプリです。 GetBlogFeedsはクラスの名前です。

EDIT2

[OK]を、私は絶対馬鹿してきました。私はUserDetails()メソッド(NLogメソッドの使用を試みる)をと呼び、の前にロガークラスをインスタンス化していました。私はあなたに両方をupvoteするつもりです。ありがとう、申し訳ありません。

答えて

1

例外が発生したときにnullを返すのはなぜですか?

null例外のために投稿された例外に基づいて、もちろんMessageの代わりにExceptionオブジェクト全体をログに記録しようとしている可能性があります。

この回答に同意する場合は、答えとしてマークしてください。投稿されたエラーに関する追加の質問がある場合、私はそれらに答えることができます。コード内で正確にどこでエラーが発生しているのかといった詳細情報がなければ、私はより多くの情報を提供することができませんでした。

ちょうど2つの奇妙な振る舞いを指摘しました。

+0

私はこの作業をしようとしている間にヌルを一時的に返します。 –

+0

例外を除いて、戻り値はすべて問題です。メソッドを無効に変更して、まだクラッシュしていないかどうかを確認してください。 AskashMのように他にも問題があると言いました。あなたがnullを返す以外に、それは後でそれをチェックしないで、実際にnull値(あなたがいる)をそのnull例外に基づいて使用しないようにするならば、悪い習慣です。 –

2

これはNLogとは関係ありませんが、それはむしろTypeInitializationExceptionが非常に深刻であること、またはNLogが取得しないtry ... catchのコンテキストで発生していないことになりますそれを記録するチャンス。

logger.Fatalステートメントにブレークポイントを設定すると、デバッガを接続して実行すると実行が停止しますか?実際GetBlogFeedsのクラスのctorで何が起こっている

- あなたは少し奇妙なことがクラス ctorの中でやっているように見える特定ユーザーのためのUserDetailsを呼び出すようにスタックトレースからされるが見えます。

関連する問題