использование .Net Core 2.1 Реализация интерфейса Castle.Core.Logging.ILoggerFactory - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь создать запись журнала с помощью NLog через IoC в своем действии контроллера. Следуя инструкции https://davidsiew.wordpress.com/2013/08/07/castle-windsor-nlog-integration/, я обнаружил, что мне нужно изменить строку в классе MyWindsorInstaller.Источник для этого урока: https://github.com/DavidSSL/CastleWindsorWithNlog?source=c

Вместо этого:

container.AddFacility<LoggingFacility>(f => f.LogUsing(LoggerImplementation.NLog).WithConfig("NLog.config"));

Мне нужно использовать ЭТО:

container.AddFacility<LoggingFacility>(f => f.LogUsing<NLogLoggerFactory> ().WithConfig("NLog.config"));

Здесь NLogLoggerFactory - это класс, который реализует Castle.Core.Logging. Интерфейс ILoggerFactory , теперь мне нужно добавить реализацию.На данный момент это выглядит так:

using Castle.Core.Logging;

public class NLogLoggerFactory : ILoggerFactory
{
    private ILogger logger = NullLogger.Instance;

    public ILogger Create(Type type)
    {
        throw new NotImplementedException();
    }

    public ILogger Create(string name)
    {
        throw new NotImplementedException();
    }

    public ILogger Create(Type type, LoggerLevel level)
    {
        throw new NotImplementedException();
    }

    public ILogger Create(string name, LoggerLevel level)
    {
        throw new NotImplementedException();
    }

    // ...
}

Но почему у него есть 4 различных метода Create ()?Конечно, это потому, что интерфейс имеет это.Но я не уверен, что будет дальше.Если я попытаюсь инициализировать Nlog logger, он не позволит мне, потому что NLog не имеет требуемого возвращаемого типа.Поэтому мне интересно, может быть, у кого-то есть какие-то советы, или, может быть, примеры этой реализации?

1 Ответ

0 голосов
/ 01 декабря 2018

Вам не нужно создавать свои NLogLoggerFactory.Из коробки уже есть один.

Просто используйте NLogFactory из Castle.Services.Logging.NLogIntegration пространства имен.

...