Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Sustainsys.Saml2设置NLog_C#_Nlog_Sustainsys Saml2 - Fatal编程技术网

C# 如何使用Sustainsys.Saml2设置NLog

C# 如何使用Sustainsys.Saml2设置NLog,c#,nlog,sustainsys-saml2,C#,Nlog,Sustainsys Saml2,我有一个ASP.NETWebForms应用程序,我刚刚在其中集成了库 我从来没有使用过任何类型的日志记录机制,我正试图找出如何为他们页面上声明的库添加或创建ILoggerAdapter 我已经决定使用NLog(请随意推荐另一个),或者我不太了解这一点,或者没有使用正确的关键字来搜索我需要/想要的内容,或者他们没有太多关于它的文档 目前,我正在使用HttpModule版本的Sustainsys.Saml2。根据要求提供的任何其他信息 任何帮助都会很好 目前,我正在通过web.config和glob

我有一个ASP.NETWebForms应用程序,我刚刚在其中集成了库

我从来没有使用过任何类型的日志记录机制,我正试图找出如何为他们页面上声明的库添加或创建
ILoggerAdapter

我已经决定使用NLog(请随意推荐另一个),或者我不太了解这一点,或者没有使用正确的关键字来搜索我需要/想要的内容,或者他们没有太多关于它的文档

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

任何帮助都会很好

目前,我正在通过web.config和global.asax文件配置
Sustainsys.Saml2
库。下面是my 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。然后将
SPOptions.Logger
设置为适配器类的实例

如果需要示例,可以查看Asp.Net Core适配器,该适配器记录到Asp.Net Core日志记录系统,并且是
Sustainsys.Saml2.AspNetCore2
包的默认适配器:


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

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

如果需要示例,可以查看Asp.Net Core适配器,该适配器记录到Asp.Net Core日志记录系统,并且是
Sustainsys.Saml2.AspNetCore2
包的默认适配器:

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

非常简单

公共接口适配器
{
无效写信息(字符串消息);
void WriteError(字符串消息,异常ex);
void WriteVerbose(字符串消息);
}
我将按以下方式实施:

公共类NLogAdapter:ILOGGER适配器
{
私有静态记录器Logger=LogManager.GetLogger(“Saml2”);
公共无效写信息(字符串消息)
{
Logger.Info(消息);
}
public void WriteError(字符串消息,异常示例)
{
记录器错误(例如,消息);
}
public void WriteVerbose(字符串消息)
{
调试(消息);
}
}
最后确定:

Sustainsys.Saml2.Configuration.Options.FromConfiguration.SPOptions.Logger=new NLogAdapter();
非常简单

公共接口适配器
{
无效写信息(字符串消息);
void WriteError(字符串消息,异常ex);
void WriteVerbose(字符串消息);
}
我将按以下方式实施:

公共类NLogAdapter:ILOGGER适配器
{
私有静态记录器Logger=LogManager.GetLogger(“Saml2”);
公共无效写信息(字符串消息)
{
Logger.Info(消息);
}
public void WriteError(字符串消息,异常示例)
{
记录器错误(例如,消息);
}
public void WriteVerbose(字符串消息)
{
调试(消息);
}
}
最后确定:

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

Sustainsys.Saml2.Configuration.Options.FromConfiguration.SPOptions.Logger的类型是什么?有它的API文档吗?@Julian它是一个
ILoggerAdapter
。我没有看到任何关于它的文档。Sustainsys.Saml2.Configuration.Options.FromConfiguration.SPOptions.Logger的类型是什么?有它的API文档吗?@Julian它是一个
ILoggerAdapter
。我没有看到任何关于它的文件。谢谢!我将尝试一下(需要看看为什么它不会触发对IDP的注销)。触发联合注销的逻辑相当复杂。有一条记录所有条件的日志消息,因此记录器肯定会有所帮助。谢谢,成功了。所有的值在需求日志中都是空白的,所以我需要做一些计算。虽然我按照你的指示做了,但我会相信下一个答案,因为它更容易让别人看到。希望我能同时标记这两个。嗨,我贴了一个后续问题:谢谢!我将尝试一下(需要看看为什么它不会触发对IDP的注销)。触发联合注销的逻辑相当复杂。有一条记录所有条件的日志消息,因此记录器肯定会有所帮助。谢谢,成功了。所有的值在需求日志中都是空白的,所以我需要做一些计算。虽然我按照你的指示做了,但我会相信下一个答案,因为它更容易让别人看到。希望我能同时标记这两个。嗨,我贴了一个后续问题:谢谢!这也奏效了。虽然我对上一个答案进行了修改,但因为你给出了一个完整的工作示例,我会将其标记为答案,以便其他人更容易理解。谢谢!这也奏效了。虽然我对上一个答案进行了修改,因为你给出了一个完整的工作示例,我会将其标记为答案,以便其他人更容易理解。