如何使用 Sustainsys.Saml2 设置 NLog
How to setup NLog with Sustainsys.Saml2
我有一个 ASP.Net Web 表单应用程序,我刚刚在其中集成了 Sustainsys.Saml2 库。
我从未使用过任何类型的日志记录机制,我正在尝试弄清楚如何为 troubleshooting 页面上所述的库添加或创建 ILoggerAdapter
。
我决定使用 NLog(请随意推荐一个不同的)但是我不是很了解这个,或者没有使用正确的关键字来搜索我 need/want,或者他们没有很多关于它的文档。
目前,我正在使用 Sustainsys.Saml2
的 HttpModule
版本。可应要求提供任何其他信息。
任何帮助都会很棒。
目前,我正在通过 web.config 和 global.asax 文件配置 Sustainsys.Saml2
库。这是 class 我的 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;
}
}
}
ILoggerAdapter
包含针对不同日志级别的方法。创建一个实现 ILoggerAdapter
并写入 NLog 的适配器 class。然后将 SPOptions.Logger
设置为您的适配器实例 class.
如果你想要一个例子,你可以查看 Asp.Net 核心的适配器,它记录到 Asp.Net 核心日志系统,并且是 Sustainsys.Saml2.AspNetCore2
包的默认设置:https://github.com/Sustainsys/Saml2/blob/master/Sustainsys.Saml2.AspNetCore2/AspNetCoreLoggerAdapter.cs
对于 Sustainsys.Saml2.HttpModule
库,默认是 NullLoggerAdapter
,它只是丢弃任何日志。使用它的唯一原因是不必在使用它的任何地方对 Logger 属性 进行 nullcheck(该代码是在引入 ?.
语法之前编写的。)
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();
我有一个 ASP.Net Web 表单应用程序,我刚刚在其中集成了 Sustainsys.Saml2 库。
我从未使用过任何类型的日志记录机制,我正在尝试弄清楚如何为 troubleshooting 页面上所述的库添加或创建 ILoggerAdapter
。
我决定使用 NLog(请随意推荐一个不同的)但是我不是很了解这个,或者没有使用正确的关键字来搜索我 need/want,或者他们没有很多关于它的文档。
目前,我正在使用 Sustainsys.Saml2
的 HttpModule
版本。可应要求提供任何其他信息。
任何帮助都会很棒。
目前,我正在通过 web.config 和 global.asax 文件配置 Sustainsys.Saml2
库。这是 class 我的 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;
}
}
}
ILoggerAdapter
包含针对不同日志级别的方法。创建一个实现 ILoggerAdapter
并写入 NLog 的适配器 class。然后将 SPOptions.Logger
设置为您的适配器实例 class.
如果你想要一个例子,你可以查看 Asp.Net 核心的适配器,它记录到 Asp.Net 核心日志系统,并且是 Sustainsys.Saml2.AspNetCore2
包的默认设置:https://github.com/Sustainsys/Saml2/blob/master/Sustainsys.Saml2.AspNetCore2/AspNetCoreLoggerAdapter.cs
对于 Sustainsys.Saml2.HttpModule
库,默认是 NullLoggerAdapter
,它只是丢弃任何日志。使用它的唯一原因是不必在使用它的任何地方对 Logger 属性 进行 nullcheck(该代码是在引入 ?.
语法之前编写的。)
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();