我正在为ServiceStack创建一个包含某些服务的插件。但是,我希望这些服务能够记录到AppHost中的其他服务的另一个数据库(在我的情况下)。
是否可以在AppHost中注册2个ILog接口?
ServiceStack.Logging.LogManager.GetLogger(GetType())
将始终返回ILog接口。我是否需要为其他Logger创建第二个ILog实现?
我正在使用NLog。
答案 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"
添加到类的记录器中。
我认为你应该做所有你想做的事。