2

特定のサービスを含む ServiceStack のプラグインを作成しています。ただし、これらのサービスが別の DB (私の場合) にログを記録し、AppHost 内の他のサービスがログに記録されるようにします。

AppHost 内に 2 つの ILog インターフェイスを登録することは可能ですか?

ServiceStack.Logging.LogManager.GetLogger(GetType())常に ILog インターフェイスを返します。他の Logger 用に 2 つ目の ILog 実装を作成する必要がありますか?

Nログを使用しています。

4

1 に答える 1

1

私は ServiceStack に詳しくないので、私の提案は意味をなさないかもしれません (ただし、NLog を分離して考える場合には意味があります)。

NLog.config ファイルで別のターゲットを構成し、そのターゲットに書き込むようにロガーを構成することはできませんか?

例えば...

NLog.config でいくつかのターゲットを構成します (コンソール ターゲットとファイル ターゲットを構成しています)

  <targets>
    <target name="file" xsi:type="File" layout="${longdate} | ${level} | ${logger} | ${message}" fileName="${basedir}/${shortdate}.log" />
    <target name="console" xsi:type="ColoredConsole" layout="${longdate} | ${level} | ${logger} | ${message}" />
  </targets>

いくつかのルールを構成する

<rules>
  <logger name="Your.Name.Space1.*" minlevel="Trace" writeTo="file" /> 
  <logger name="Your.Name.Space2.*" minlevel="Trace" writeTo="file" /> 
  <logger name="*" minLevel="Trace" writeTo="console" /> 
</rules>

これで、Your.Name.Space1 と Your.Name.Space2 のすべてのクラスが「ファイル」ターゲットにログを記録し、他のすべてのクラスは「コンソール」ターゲットにログを記録します。"final=true"ログを「ファイル」ターゲットにのみ表示する場合は、クラスのロガーに追加できます。

やりたいことをやればいいだけの話だと思います。

于 2013-04-18T17:04:06.773 に答える