2013-04-02 5 views
2

Я настраиваю dll для использования в качестве стороннего dll для другого приложения. Я хочу, чтобы эта dll имела свой собственный журнал, поэтому внешнему приложению не нужно ничего настраивать (я не верю, что они используют тот же журнал, что и мы). Я читал, что это не лучшее решение, но это задача, которую мне дали. Мы хотим использовать log4net с этим. Я рассмотрел несколько других вопросов здесь, и они упоминают, что они настраиваются с помощью кода, однако основная проблема, которую я испытываю, заключается в том, что в нашем коде нет четкой точки ввода для настройки log4net. Мне любопытно, следует ли мне просто отказаться от конфигурации dll и иметь метод, который вызывается вторичным приложением, которое настраивает ведение журнала dll или если есть лучший способ сделать это. Любой вход был бы очень полезенНастройка журнала log4net в dll

+0

Вы можете настроить несколько путей log4net, включая использование файла конфигурации xml. Вам нужно либо настроить параметры ведения журнала с помощью метода запуска, либо настроить конфигурацию в файле настроек xml. –

+0

Просьба пояснить - вам нужен пример кода, который настраивает log4net для использования классами в вашей DLL или вам нужна консультация о том, где/как вызвать этот пример кода из вашей DLL? – PaulF

+0

@PaulF Мне не нужен пример кода, в настоящее время у меня он настроен и работает, но я не большой поклонник решения. В принципе у меня есть это: 'частный недействительным ConfigureLogging() { XmlConfigurator.Configure (новый System.IO.FileInfo (string.Format (@ "{0} \ {1}", System.Environment.CurrentDirectory, LogConfigurationFileName))); } ' Это вызывается для точек входа в DLL, чтобы гарантировать, что журнал знает, какой файл настроек использовать. Я надеялся найти лучшее решение, чем это. – Thomas

ответ

5

Вы можете программно настроить 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); 
} 
+0

Спасибо за это. Это то, что мы закончили, в конце концов, просто не обновлял вопрос. – Thomas

Смежные вопросы