これが答えになるかどうかはわかりませんが、各オブジェクトが一意の ID をログに記録するアプローチを検討しましたか? このようにして、NLog のフィルタリング機能を使用してログの量を制限することができます。ここに古い例があります: http://nlog-forum.1685105.n2.nabble.com/Config-examples-with-filters-td1685363.html
BEGIN NLog フォーラムからのコピー:
完全を期すために(そしてリンクがうまくいかない場合に備えて)、インラインの例を次に示します。
<?xml version="1.0" ?>
<nlog>
<targets>
<target name="console" type="Console" layout="${logger} ${message}" />
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="console">
<filters>
<whenContains layout="${message}" substring="zzz" action="Ignore" />
</filters>
</logger>
</rules>
</nlog>
このサンプル コード:
using NLog;
using NLog.Targets;
using NLog.Targets.Wrappers;
class Example
{
static void Main(string[] args)
{
Logger logger = LogManager.GetLogger("Example");
logger.Debug("log message");
logger.Debug("log zzz message");
}
}
「ログ メッセージの例」のみを生成します (2 番目のログ メッセージは、
または、Conditions と呼ばれる新機能 (最新のスナップショットで利用可能) を使用することもできます。これにより、簡単な表記法を使用してフィルターを記述できます。
<filters>
<when condition="contains(message,'zzz')
or level >= LogLevel.Warn
or level == LogLevel.Trace" action="Ingore" />
</filters>
END NLog フォーラムからのコピー
これはあなたの質問に直接答えるものではありません(設定されたログレベルや使用されているロギング方法(情報、デバッグなど)に関係なく、特定のロギングステートメントを実行すると思います)。NLog に組み込まれているログ レベルの有効化をオーバーライド/回避するのは難しいと思います。
NLog のフィルタリングで目的の結果が得られる場合は、データベースへのログ記録はどうですか? 特定のオブジェクトのログ ステートメントに一意の ID をタグ付けして、すべてをログに記録できます。次に、データベースのフィルタリング/グループ化/ソート機能を使用して、特定のオブジェクトのログ ステートメントのみを表示できます。
幸運を!