从另一个项目读取配置 - Log4Net ASP.NET Core 3.1
Read Config From Another Project - Log4Net ASP.NET Core 3.1
我正在尝试编写一个使用 log4net
的 class 库,它看起来像这样:
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
但我已将所有代码从 Program.cs
的 main
方法移动到 Logging.cs
构造函数,但我认为 LogManager
现在将找不到这个。
这可能吗?
我觉得是可以的。要在 class 库中使用 log4net,您必须在 class 库中安装 log4net package,然后,您可以在控制台应用程序中添加 class 库引用和使用 class 库方法。但是,正如你所说,log4net.config
文件应该在控制台应用程序 netcoreapp3.1 文件夹中,否则,class 库将找不到 log4net.config
文件:
我正在尝试编写一个使用 log4net
的 class 库,它看起来像这样:
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
但我已将所有代码从 Program.cs
的 main
方法移动到 Logging.cs
构造函数,但我认为 LogManager
现在将找不到这个。
这可能吗?
我觉得是可以的。要在 class 库中使用 log4net,您必须在 class 库中安装 log4net package,然后,您可以在控制台应用程序中添加 class 库引用和使用 class 库方法。但是,正如你所说,log4net.config
文件应该在控制台应用程序 netcoreapp3.1 文件夹中,否则,class 库将找不到 log4net.config
文件: