Я пытаюсь написать библиотеку классов, которая использует log4net
, которая выглядит примерно так:
public class Logging
{
private ILog log4netLogger = null;
public Logging(Type type)
{
XmlDocument log4netConfig = new XmlDocument();
log4netConfig.Load(File.OpenRead("log4net.config"));
var repo = LogManager.CreateRepository(Assembly.GetEntryAssembly(), typeof(log4net.Repository.Hierarchy.Hierarchy));
XmlConfigurator.Configure(repo, log4netConfig["log4net"]);
log4netLogger = LogManager.GetLogger(type);
}
public void Debug(string message)
{
log4netLogger(message);
}
public void Info(string message)
{
log4netLogger(message);
}
}
Однако конфигурация xml
находится в моем тестовом консольном приложении в C:\....\TestLogging\TestLog4Net\bin\Debug\netcoreapp3.1
. На самом деле я начал с этого консольного приложения, чтобы протестировать log4net
, но я переместил весь свой код из метода main
Program.cs
в конструктор Logging.cs
, но я думаю, что LogManager
не сможет найти его сейчас.
Это вообще возможно?
log4net.config
в каталоге сборки, как на снимке экрана для консольного приложения. Что меня смущает, так это то, как кодXmlDocument
знает, откуда именно взять конфигурацию. Причина, по которой я прошу, заключается в том, чтобы проверить, что я намеренно вынул конфигурацию из каталога сборки, и он выдал исключение, говоря, что не может найти конфигурацию по путиTestConsoleApp\bin\Debug\....
Это потому, чтоlog4net.config
упоминается в моем консольном приложенииcsproj
? 10.09.2020string defaultsPath = System.IO.Directory.GetCurrentDirectory(); if File.Exists(defaultsPath + "\\log4net.config")) { } ' to check it in the
Main`. Если вы хотите изменить расположение файла log4net.config, вам необходимо изменить путь в методе File.OpenRead(). 11.09.2020Logger.cs
из моего тестового проектаxUnit
, и теперь путь по умолчанию — этоbin\debug\...
каталога тестовой сборки. Я мог бы скопироватьlog4net.config
в тестовый проект, но это выглядит немного беспорядочно. Есть ли способ сказатьLogger.cs
всегда искать в каталоге сборки консольного приложенияlog4net.config
? 11.09.2020