Невозможно настроить log4net для платформы .NET Core 2.1 - PullRequest
0 голосов
/ 21 ноября 2018

Думаю, я перепробовал все возможные комбинации вызовов, чтобы log4net работал с ASP.NET Core 2.1, но пока не повезло.Я выполнил шаги, описанные в Как использовать log4net в ядре Asp.net 2.0 .Я также исследовал все варианты, описанные в ASP.NET Core 2.1 + Log4Net .

Пока не повезло.Log4net.config копируется в двоичную папку.Он используется (я заметил, что он заблокирован, когда служба работает).Я использовал абсолютные и относительные пути.Вызывается и не вызывается loggerFactory.AddLog4Net ("log4net.config");Я вызвал оба:

var log4netConfig = new System.Xml.XmlDocument();
log4netConfig.Load(File.OpenRead(@"log4net.config"));
var repo = LogManager.CreateRepository(Assembly.GetEntryAssembly(), typeof(log4net.Repository.Hierarchy.Hierarchy));
XmlConfigurator.Configure(repo, log4netConfig["log4net"]);

и

ILoggerRepository repository = LogManager.GetRepository(Assembly.GetEntryAssembly());
XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));

ILog создается следующим образом:

private static readonly ILog _log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

Но также я использовал этот подход:

var log2 = LogManager.GetLogger(typeof(Startup));
log2.Info("SOME");

Каждый раз, когда в журнале не создаются созданные Appenders (список пуст), даже если вызывается метод Configure.

Конечно, файл не создается.Я заметил, что некоторые люди сообщили, что его можно добавить в ваш проект Core 2.1, но я еще не обнаружил правильную комбинацию вызовов и действий.

Есть ли способ отследить, что на самом деле делает log4net, чтобы решить проблему?До сих пор в моем долгом опыте log4net был самым сложным компонентом для работы.Или точная комбинация шагов?Я использую log4net 2.0.8 nuget.

1 Ответ

0 голосов
/ 21 ноября 2018

Похоже, было 2 проблемы, которые суммировались, чтобы проявить проблему, как я описал выше.На самом деле журнал был создан, по крайней мере, следуя объяснениям из первой ссылки, которую я предоставил.Но он был создан не в том каталоге.Здесь объясняется ошибка (рабочим каталогом приложения консоли .NET Core по умолчанию является исходный каталог, а не каталог bin): https://github.com/dotnet/project-system/issues/589

Вторая проблема была связана с тем, что в Logger есть пустой список Appenders, хотяappenders загружены и использованы.Это, очевидно, вводит в заблуждение, но я не нашел объяснения этому поведению.Похоже, что это «по замыслу».

Таким образом, по умолчанию рабочим каталогом .NET Core Console Appliaction является корневой каталог проекта (sic!), А не каталог bin, как в случае .NET Framework.

И, во-вторых, в Logger нет Appenders, но это не является признаком какой-либо проблемы.

...