在dll中配置log4net日志

本文关键字:log4net 日志 配置 dll | 更新日期: 2023-09-27 18:07:10

我正在设置一个dll,作为不同应用程序的第三方dll。我希望这个dll有自己的日志记录,这样外部应用程序就不必处理设置任何东西(我不相信他们使用与我们相同的日志记录)。我读到过,这可能不是最好的解决方案,但这是我的任务。我们希望使用log4net。我看过这里的其他一些问题,他们提到它可以通过代码进行配置,但是,我遇到的主要问题是,在我们的代码中没有明确的入口点来配置log4net。我很好奇我是否应该放弃让dll配置自己,并有一个方法,由二级应用程序调用,配置dll的日志记录,或者如果有一个更好的方法去做这件事。如有任何意见,不胜感激

在dll中配置log4net日志

您可以通过编程方式配置log4net。也许可以将此代码添加到DLL的构造函数中。

if (!log4net.LogManager.GetRepository().Configured)
{
    // my DLL is referenced by web service applications to log SOAP requests before
    // execution is passed to the web method itself, so I load the log4net.config
    // file that resides in the web application root folder
    var configFileDirectory = (new DirectoryInfo(TraceExtension.AssemblyDirectory)).Parent; // not the bin folder but up one level
    var configFile = new FileInfo(configFileDirectory.FullName + "''log4net.config");
    if (!configFile.Exists)
    {
        throw new FileLoadException(String.Format("The configuration file {0} does not exist", configFile));
    }
    log4net.Config.XmlConfigurator.Configure(configFile);
}