У меня есть очень простой конфигурационный файл Log4Net для использования с моей C# DLL. Ведение журнала работает отлично, если я создаю исполняемый файл вместо DLL для тестирования в автономном режиме, и он отлично работал с exe в прошлом. Но когда я переключаюсь в DLL-режим (Class Library) для работы с другим приложением, DLL просто не будет регистрироваться. Вместо этого, когда он загружает конфигурационный файл (XmlConfigurator.Configure (файл)) Я вижу error- "Вы попытались установить нулевой уровень искоренять"Log4Net in C# DLL не может загрузить конфигурацию
Config File
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
<log4net>
<root>
<level value="Full" />
<appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >
<file value="log/eft.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="3" />
<maximumFileSize value="2MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%d] %-5p (%logger{1}:%line) - %m%n" />
</layout>
</appender>
</log4net>
</configuration>
У меня есть попытался настроить конфигурацию журнала через код, даже если это не сработало. Я не ошибся с этим, но он все еще не регистрировался. У меня есть все права на создание/запись в файлы, так как я зарегистрирован как admin.
Использование кода вместо конфигурации file-
Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
hierarchy.Root.RemoveAllAppenders();
hierarchy.Root.Level = log4net.Core.Level.All;
hierarchy.Configured = true;
FileAppender fileAppender = new FileAppender();
fileAppender.AppendToFile = true;
fileAppender.LockingModel = new FileAppender.MinimalLock();
fileAppender.File = "log.txt";
PatternLayout pl = new PatternLayout();
pl.ConversionPattern = "%d [%2%t] %-5p [%-10c] %m%n%n";
pl.ActivateOptions();
fileAppender.Layout = pl;
fileAppender.ActivateOptions();
log4net.Config.BasicConfigurator.Configure(fileAppender);
Что может быть проблема?
Какой процесс принимает ваши DLL? Конфигурация log4net должна находиться в файле конфигурации для этого процесса. – Polyfun
Существует стороннее приложение, которое обращается к DLL, написанному на C++, которое по очереди вызывает мою DLL, написанную на C#. Я написал только на C# и не могу касаться двух других. – highflyer
_you попытался установить нулевой уровень на root_ - ' ' - нет уровня, называемого 'Full'. Вместо этого используйте 'All'. –
stuartd