ServiceStack中是否可以为同一个AppHost提供更多Logger?

时间:2013-04-16 22:46:04

标签: servicestack nlog

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

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

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

我正在使用NLog。

1 个答案:

答案 0 :(得分:1)

我不熟悉ServiceStack,所以我的建议可能没有意义(但在单独考虑NLog时确实有意义。)

您是否只能在NLog.config文件中配置另一个Target并配置您的记录器以写入该目标?

例如......

在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中的所有类都将登录到“file”目标,而所有其他类将登录到“console”目标。如果您希望其日志仅显示在“文件”目标中,则可以将"final=true"添加到类的记录器中。

我认为你应该做所有你想做的事。