これを行うための事前定義された方法はありますか、独自のカスタムフォーマッタを定義する必要はありますか?エンタープライズライブラリロギング:各ログエントリでメソッド名と行番号を出力する方法。
1
A
答えて
-1
設定ファイルでTextFormatterを設定することで、メソッド名を取得できます。私はあなたにいくつかの文脈を与えるためにフォーマッタ全体を含めましたが、探すべき重要なことはテンプレート属性に{property(MethodName)}です。私は行番号を取得する方法がわかりません。
<loggingConfiguration name="" tracingEnabled="true" defaultCategory="General">
<formatters>
<add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
template="Timestamp: {timestamp}{newline}
Title: {title}{newline}
Message: {message}{newline}
Category: {category}{newline}
Priority: {priority}{newline}
EventId: {eventid}{newline}
Severity: {severity}{newline}
Machine: {localMachine}{newline}
App Domain: {localAppDomain}{newline}
ProcessId: {localProcessId}{newline}
Process Name: {localProcessName}{newline}
Thread Name: {threadName}{newline}
Win32 ThreadId:{win32ThreadId}{newline}
Extended Properties: {dictionary({key} - {value}{newline})}
Type: {property(TypeName)}{newline}
Method: {property(MethodName)}{newline}
Parameters: {dictionary({key} : {value};)}{newline}
Return Value: {property(ReturnValue)}{newline}
Call Time: {property(CallTime)}{newline}"
name="Detailed Text Formatter" />
</formatters>
</loggingConfiguration>
Configuring Formatters上のMSDNの記事では、これらの特別なトークンに言及したが、残念ながら非常によく、それらを使用する方法については説明しません。
3
あなたが使用しているEntLibのバージョンは言っていませんが、あなたの投稿の日付を指定するとEntLib 5.0と仮定します。
あなたがに興味があるフォーマット文字列の一部である:
Extended Properties: {dictionary({key} - {value}{newline})}
これは以下のようにあなたの設定ファイルで見つかった合計「デフォルト」フォーマッタテンプレートの一部です:
<formatters>
<add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" template="Timestamp: {timestamp}{newline}
Message: {message}{newline}
Category: {category}{newline}
Priority: {priority}{newline}
EventId: {eventid}{newline}
Severity: {severity}{newline}
Title:{title}{newline}
Machine: {localMachine}{newline}
App Domain: {localAppDomain}{newline}
ProcessId: {localProcessId}{newline}
Process Name: {localProcessName}{newline}
Thread Name: {threadName}{newline}
Win32 ThreadId:{win32ThreadId}{newline}
Extended Properties: {dictionary({key} - {value}{newline})}" name="Text Formatter" />
</formatters>
拡張プロパティは、ログエントリを作成するときに自動的にロガーによって反復される辞書です。あなたのアプリが提供する余分な出力をダンプするために、すばやく汚い方法を提供するのが目的です。より完全な方法は、そうでなければ拡張プロパティに追加したオブジェクトのそれぞれにトークンを持つカスタムフォーマッタを記述することです。
エントリを作成するときだけ
LogWriter.Write(..)
方法の適切なオーバーロードを使用して、このコレクションにプロパティを取得します。それらのうちのいくつかには、これらの値を指定するために使用できるパラメータ
IDictionary(key, string) properties
があります。
行番号とメソッド名は、上記の辞書に挿入することができます。値を取得するには、
private void FillExtraLogInfo(IDictionary<string, object> info)
{
StackFrame stackFrame = new StackFrame(1, true);
info.Add("Method Name", stackFrame.GetMethod().ToString());
info.Add("Line Number" stackFrame.GetFileLineNumber());
}
関連する問題
- 1. Nodejs - 関数名、行番号、ファイル名を出力します。
- 2. ログ出力の行番号とファイル名を取得
- 3. 行番号を出力する
- 4. コンソール出力の各行にサーバー名を表示する方法
- 5. pythonの鼻でテストのファイル名と行番号を出力するには?
- 6. Pythonでファイルの各行に番号を付ける方法
- 7. AspectJ、メソッド呼び出しの行番号の取得方法
- 8. OpenGLで変数番号を出力する方法は?
- 9. 学習するdata.table - 行番号と列名で値を更新する方法
- 10. ファイル名からクライアント番号を抽出する方法
- 11. pexpectから番号出力を取得する方法
- 12. EclEmma行番号出力Java Eclipseプラグイン
- 13. SQLite:クエリ出力の行番号
- 14. 実行中のファイルの出力番号を印刷する方法
- 15. jqGridで行番号ごとにページ番号を取得する方法
- 16. 特定の行を番号で出力する
- 17. ドメイン名と特定のポート番号でDjango + Emberアプリケーションを実行する方法
- 18. 指定された行番号と列番号ではなく、.txtからデータを抽出する方法は?
- 19. Grails/Groovy log4j - ログの行番号、メソッド名、クラス名
- 20. rmarkdownの各行の行番号PDF
- 21. 番号付きリストとして出力を表示する方法
- 22. 呼び出し関数のファイル名、行番号、関数名を出力する - C Prog
- 23. 各行に連続番号を追加
- 24. エンタープライズライブラリロギングとテキストフォーマッタテンプレートトークン。の仕方?
- 25. 電話番号出力
- 26. 出力番号の変更
- 27. texreg出力のテーブル番号
- 28. Webpackと出力ファイルのバージョン番号
- 29. 特定のJetBrains.ReSharper.Psi.IDeclaredElementのファイル名と行番号を取得する方法は?
- 30. 出力ファイルから特定のOracleバージョン番号を抽出する方法
これは間違っていて動作しません。 'ActivityId'のような基になるLogEntryオブジェクトのオブジェクトプロパティを出力するために' {property()} 'フォーマッタが使われます –