如何使用Sustainsys.Saml2设置NLog

问题描述 投票:0回答:2

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

我从未使用过任何日志记录机制,并且试图弄清楚如何为其ILoggerAdapter页面上所述的库添加或创建troubleshooting

我已决定使用NLog(请随意推荐其他名称),或者我对此不太了解,或者没有使用正确的关键字搜索我需要/想要的东西,或者它们不是关于它的很多文档。

当前,我正在使用HttpModuleSustainsys.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;
        }
    }
}
c# nlog sustainsys-saml2
2个回答
2
投票

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();

1
投票

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属性进行空检查(该代码是在引入?.语法之前编写的。)

© www.soinside.com 2019 - 2024. All rights reserved.