0

MVC 4アプリケーションで例外が発生した場合は常に、(log4netを使用して)Splunkに例外をログに記録するエラー処理コードを実装しました。問題は、ビューファイル(cshtml)内で例外が発生した場合、その例外に一致するSplunkログがないことです。

コードをデバッグしたところ、すべての適切なメソッドが呼び出されていることがわかりました。ILog.Error(string message)メソッドに渡されている値を確認すると、値は次のようになります。

System.Exception: Test view exception
   at ASP._Page_Views_Home_Index_cshtml.Execute() in c:\dev\MyMVCApp\Views\Home\Index.cshtml:line 5
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
   at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
   at System.Web.WebPages.StartPage.RunPage()
   at System.Web.WebPages.StartPage.ExecutePageHierarchy()
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
   at System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance)
   at System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer)
   at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19()
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)
   at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1c.<>c__DisplayClass1e.<InvokeActionResultWithFilters>b__1b()
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)

ビュー例外からログに記録されたメッセージを除いて、他のすべてのログ試行は成功します。私のlog4net構成は次のとおりです。

<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net, Version=1.2.11.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a" />

        <!-- snip -->
    </configSections>

    <!-- snip -->

    <log4net>
        <appender name="SplunkAppender" type="log4net.Appender.RemoteSyslogAppender">
            <remoteAddress value="splunk.myawesomeserver.com" />
            <remotePort value="2221" />
            <layout type="log4net.Layout.PatternLayout">
                <ConversionPattern value="[%-5p] (%c) %m%n" />
            </layout>
        </appender>
        <root>
            <level value="INFO" />
            <appender-ref ref="SplunkAppender" />
        </root>
    </log4net>
</configuration>

これは間違って構成されていますか?メッセージをILog.Error()に渡した後、何が問題になっているのかを知る方法はありますか?

4

1 に答える 1

0

それはいくつかの可能性があります:

1) splunk.myawesomeserver.com で UDP ポート 2221 を有効にし、ポートが開いてリッスンしていることを確認しましたか?

2) UDP トラフィックをブロックしている可能性のあるファイアウォールはありますか?

3) Splunk で使用している検索コマンドのうち、イベントが Splunk によってインデックス付けされていないと判断した原因は何ですか?

于 2012-11-09T03:12:50.233 に答える