【问题标题】:Kentor authservices and log4netKentor authservices 和 log4net
【发布时间】:2017-07-26 16:21:17
【问题描述】:
有没有办法将 log4net 用作 Kentor Authservices Logger?文档指出“将 ILoggerAdapter 连接到您的 SPOptions.Logger。如果您使用的是 OWIN 中间件,这会自动为您完成,您可以在 OWIN/Katana 日志记录中看到输出。”,但我真的不明白是什么这意味着。
【问题讨论】:
标签:
logging
single-sign-on
log4net
saml-2.0
kentor-authservices
【解决方案1】:
您将在 log4net 记录器和 Kentor.AuthServices 记录器之间编写一个适配器,如下所示:
public class log4netLoggerAdapter : Kentor.AuthServices.ILoggerAdapter
{
private log4net.ILog _logger;
public log4netLoggerAdapter(log4net.ILog logger)
{
_logger = logger;
}
public void WriteError(string message, Exception ex)
{
_logger.Error(message, ex);
}
public void WriteInformation(string message)
{
_logger.Info(message);
}
public void WriteVerbose(string message)
{
_logger.Debug(message);
}
}
然后将其实例分配给您的 AuthServices Options.SPOptions.Logger。比如在SampleMVCApplication Global.asax.cs中,在Application_Start中添加一行:
Kentor.AuthServices.Mvc.AuthServicesController.Options.SPOptions.Logger =
new log4netLoggerAdapter(log4net.LogManager.GetLogger("AuthServices"));
根据您使用的模块以及加载配置的方式,最后一部分当然会有所不同,但关键是将ILoggerAdapter 分配给您的SPOptions.Logger