私はジェネリッククラスを持っている:NLogでロガー名として完全修飾クラス名を使用するにはどうすればよいですか?
シンプルNLog構成で使用さpublic class GenericClass<A>
{
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
public void Blah(A a)
{
Logger.Info("Test log");
}
}
:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="console" xsi:type="ColoredConsole" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="console" />
</rules>
</nlog>
私は私のログ出力のようなものを見たいと思います:代わりに
...|INFO|NLogTests.GenericClass<System.String>|Test log
を、どのような私は見る:
...|INFO|NLogTests.GenericClass`1|Test log
ロガーに、汎用パラメータの数だけを表示する基本名の代わりに完全修飾タイプ名を使用させるにはどうすればよいですか?代わりにGetCurrentClassLoggerの
はい私はもちろん行うことができますが、私は思い出す必要はありませんでしたそのメソッドを毎回呼び出す(そして、共通のutilsアセンブリに余分な依存関係がある)。もっと良いアプローチは、現在の出力がそれほど有用ではないとNLogがそれをした場合です。私はそこに余分な反射が少し必要であるかもしれないが、少なくともそれをオンにするオプションを持っているといいだろうと思っている。 – emertechie
@Andrew:これを内蔵しているのはいいかもしれないが、 NLogの開発者に依頼してください。その間に、スタックトレースのスニッフィング(またはソースからのコピー貼り付け)を複製し、LogManagerで拡張メソッドを作成することができます。 – millimoose
@AndrewSmithおそらくジェネリックスを取る拡張メソッドを書くことができ、GetLoggerと呼ぶこともできます。内部にInerdialのメソッドを使用して名前を作成します。あなたは何も覚えていない彼の方法:] – stijn