如何使用Sustainsys.Saml2设置NLog



我有一个ASP.Net Web Forms应用程序,我刚刚在其中集成了Sustainsys.Saml2库。

我从未使用过任何类型的日志记录机制,我正在努力找出如何为他们的故障排除页面上所述的库添加或创建ILoggerAdapter

我决定使用NLog(请随意推荐一个不同的(,要么我不太理解这一点,要么没有使用正确的关键字来搜索我需要/想要的东西,要么他们没有很多文档。

目前,我使用的是Sustainsys.Saml2HttpModule版本。根据要求提供的任何其他信息。

任何帮助都会很棒。

目前,我正在通过web.config和global.asax文件配置Sustainsys.Saml2库。这是我的global.asax调用的类:

public class Saml2Config {
private static bool _alreadyInitialized;
private static readonly object Lock = new object();
public static void Initialize() {
if (_alreadyInitialized) {
return;
}
lock (Lock) {
if (_alreadyInitialized) {
return;
}
var domain = PageHelper.GetDomainURL(true);
Sustainsys.Saml2.Configuration.Options.FromConfiguration.SPOptions.EntityId.Id = $"{domain}/federation/Saml2";
Sustainsys.Saml2.Configuration.Options.FromConfiguration.SPOptions.ModulePath = "/federation/Saml2";
Sustainsys.Saml2.Configuration.Options.FromConfiguration.SPOptions.ReturnUrl = new Uri($"{domain}/mybarry");
Sustainsys.Saml2.Configuration.Options.FromConfiguration.SPOptions.PublicOrigin = new Uri($"{domain}");
Sustainsys.Saml2.Configuration.Options.FromConfiguration.SPOptions.Logger = new NullLoggerAdapter();
_alreadyInitialized = true;
}
}
}

界面非常简单

public interface ILoggerAdapter
{
void WriteInformation(string message);
void WriteError(string message, Exception ex);
void WriteVerbose(string message);
}

我将按如下方式实现它:

public class NLogAdapter : ILoggerAdapter
{
private static Logger Logger = LogManager.GetLogger("Saml2");
public void WriteInformation(string message)
{
Logger.Info(message);
}
public void WriteError(string message, Exception ex)
{
Logger.Error(ex, message);
}
public void WriteVerbose(string message)
{
Logger.Debug(message);
}
}

最后设置:

Sustainsys.Saml2.Configuration.Options.FromConfiguration.SPOptions.Logger = new NLogAdapter();

ILoggerAdapter包含用于不同日志级别的方法。制作一个实现ILoggerAdapter并写入NLog的适配器类。然后将SPOptions.Logger设置为适配器类的一个实例。

如果您想要一个示例,您可以检查Asp.Net Core的适配器,该适配器登录到Asp.Net核心日志记录系统,并且是Sustainsys.Saml2.AspNetCore2包的默认适配器:https://github.com/Sustainsys/Saml2/blob/master/Sustainsys.Saml2.AspNetCore2/AspNetCoreLoggerAdapter.cs

对于Sustainsys.Saml2.HttpModule库,默认为NullLoggerAdapter,它只是丢弃任何日志。使用它的唯一原因是不必在任何使用它的地方对Logger属性进行null检查(该代码是在引入?.语法之前编写的。(

最新更新