2

我正在为包含某些服务的 ServiceStack 创建一个插件。但是,我希望这些服务记录到 AppHost 中的其他服务的另一个数据库(在我的情况下)。

是否可以在 AppHost 中注册 2 个 ILog 接口?

ServiceStack.Logging.LogManager.GetLogger(GetType())始终返回一个 ILog 接口。我是否需要为另一个 Logger 创建第二个 ILog 实现?

我正在使用 NLog。

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 回答