我有一个ASP.Net Web窗体应用程序,我刚刚在其中集成了Sustainsys.Saml2库。
我从未使用过任何日志记录机制,并且试图弄清楚如何为其ILoggerAdapter
页面上所述的库添加或创建troubleshooting。
我已决定使用NLog(请随意推荐其他名称),或者我对此不太了解,或者没有使用正确的关键字搜索我需要/想要的东西,或者它们不是关于它的很多文档。
当前,我正在使用HttpModule
的Sustainsys.Saml2
版本。根据要求可提供任何其他信息。
任何帮助都会很棒。
当前,我正在通过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;
}
}
}
The interface非常简单
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 Core日志记录系统,并且是Sustainsys.Saml2.AspNetCore2
软件包的默认适配器:https://github.com/Sustainsys/Saml2/blob/master/Sustainsys.Saml2.AspNetCore2/AspNetCoreLoggerAdapter.cs
对于Sustainsys.Saml2.HttpModule
库,默认值为NullLoggerAdapter
,它仅丢弃任何日志。使用它的唯一原因是不必在使用它的任何地方都对Logger属性进行空检查(该代码是在引入?.
语法之前编写的。)