Как настроить NLog с Sustainsys.Saml2 - PullRequest
0 голосов
/ 06 мая 2020

У меня есть приложение ASP. Net Web Forms, в которое я только что интегрировал Sustainsys.Saml2 библиотеку.

Я никогда не использовал какой-либо механизм ведения журнала, и я ' m пытается выяснить, как добавить или создать ILoggerAdapter для библиотеки, указанной на их странице устранения неполадок .

Я решил использовать NLog (пожалуйста, не стесняйтесь рекомендовать другой one), и либо я не очень хорошо понимаю это, либо я не использую правильное ключевое слово для поиска того, что мне нужно / хочу, либо по нему не так много документации.

В настоящее время я ' m, используя HttpModule версию Sustainsys.Saml2. Любая другая информация доступна по запросу.

Любая помощь будет отличной.

В настоящее время я настраиваю библиотеку Sustainsys.Saml2 через файлы web.config и global.asax. Вот класс, который вызывает мой 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;
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 07 мая 2020

Интерфейс довольно прост

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 голос
/ 07 мая 2020

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 везде, где оно используется (этот код был написан до того, как был введен синтаксис ?.).

...