Log4Net на .Net Standard не имеет версии для получения регистратора без хранилища - PullRequest
1 голос
/ 09 апреля 2019

Я пытаюсь перевести проект на стандарт .net, и это в основном библиотека классов. Я использую log4net для ведения журнала, и я использовал метод

public static ILog GetLogger(string name);

Поскольку это библиотека, на которую ссылаются несколько проектов, определение репозитория не должно происходить, поскольку каждый проект, ссылающийся на этот, определяет свой собственный репозиторий для ведения журнала. Как я могу обойти эту проблему, когда дело доходит до портирования на стандарт .Net?

1 Ответ

8 голосов
/ 09 апреля 2019

Реализация GetLogger проста:

public static ILog GetLogger(string name)
{
    return GetLogger(Assembly.GetCallingAssembly(), name);
}

Предполагая, что вы хотите использовать сборку библиотеки классов, вы можете легко написать собственный вспомогательный метод для этого:

private static ILog GetLogger(string name) =>
    LogManager.GetLogger(typeof(SomeTypeInYourLibrary).Assembly, name);

По сути, это жестко запрограммированная сборка, чтобы она была "сборкой, содержащей указанный вами тип", и это то, что вы всегда будете получать, вызывая GetLogger(string) из вашей библиотеки.

...