在dll中配置log4net日志记录

时间:2013-04-02 16:33:04

标签: c# dll log4net log4net-configuration

我正在设置一个dll,用作另一个应用程序的第三方dll。我希望这个dll拥有它自己的日志记录,因此外部应用程序不必处理任何设置(我不相信它们使用与我们相同的日志记录)。我读过这可能不是最好的解决方案,但这是我给予的任务。我们想用log4net。我在这里看了几个其他的问题,他们提到它可以通过代码进行配置,但是,我遇到的主要问题是我们的代码中没有明确的切入点来配置log4net。我很好奇我是否应该放弃让dll配置自己并且有一个方法由辅助应用程序调用来配置dll的日志记录,或者是否有更好的方法来解决这个问题。任何意见都将非常感激

1 个答案:

答案 0 :(得分:6)

您可以通过编程方式配置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);
}