2

わかりましたので、NLog を試していますが、失敗し続けます。私がこれまでに得たものを見てみましょう。

私の NLog.config ファイル:

<?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>

次に、次のようにオブジェクトを作成しています。

private static Logger logger = LogManager.GetCurrentClassLogger();

そして、何かをログに記録したいときは、次のようにしています:

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 はクラスの名前です。

編集2

わかりました、私は絶対的なばかでした。ロガー クラスをインスタンス化する前にUserDetails()、(NLog メソッドを使用しようとする) メソッドを呼び出していました。私はあなたの両方に賛成票を投じるつもりです。ありがとうございます。

4

2 に答える 2

2

これは NLog とは関係がなく、NLog がログに記録する機会がないTypeInitializationExceptionほど深刻であり、そのコンテキストで発生していないということです。try ... catch

そのlogger.Fatalステートメントにブレークポイントを設定した場合、デバッガーを接続して実行すると、そこで実行が停止しますか?

クラスctor で実際に何が起こっているかGetBlogFeeds- スタック トレースからはUserDetails特定のユーザーを呼び出しているように見えます。

于 2010-12-29T20:17:06.337 に答える
1

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

投稿された例外に基づいて、null例外が原因であるため、もちろん、メッセージではなく例外オブジェクト全体をログに記録しようとしている可能性もあります。

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

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

于 2010-12-29T18:22:20.993 に答える