2013-12-13 3 views
0

Я пытаюсь использовать log4net для отслеживания возможных ошибок в моем проекте.Файл журнала Log4Net не записывается при использовании WCF

Я использую службу WCF, клиент и серверную библиотеку.

Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я запускаю проект, и я хочу проверить это, он будет создавать файлы журнала в правильном каталоге, но он никогда не будет писать на нем, даже если бы я поставил Logger.Info ("контрольная работа"); в первом вызове.

Я проверил много сайтов, и я пробовал много вещей, и ничего не работает.

log4net.onfig:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 
    <log4net> 
    <root> 
     <level value="ALL" /> 
     <appender-ref ref="GeneralAppender" /> 
    </root> 
    <logger name="GeneralLogger"> 
     <level value="ALL" /> 
     <appender-ref ref="GeneralAppender" /> 
    </logger> 
    <appender name="GeneralAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="C:\Users\myUser\Desktop\mylog.log" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="SIze" /> 
     <datePattern value="yyyy/MM/dd HH:mm:ss.ff" /> 
     <maxSizeRollBackups value="10" /> 
     <maximumFileSize value="10MB" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] - [%logger] %message%newline" /> 
     </layout> 
    </appender> 
    </log4net> 
</configuration> 

этот файл найти в проекте службы и в библиотеке оба файла установили свойство «Копировать в выходной каталог» в «Копировать если новее»

у меня есть modifify AssemblyInfo.cs

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] 

путь к decalre переменной является:

static readonly log4net.ILog _Logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 

Путь, в котором я использую регистратор является следующее:

_Logger.Info("some info"); 
_Logger.Error("This is an error", Exception); 
+0

Вы подтвердили с помощью инструмента, такого как procmon от SysInternals, что это не проблема с приложением WCF, которое пытается написать на ваш рабочий стол? – CodeMonkey1313

+0

Проблема может заключаться в том, что у вас есть определенные разделы конфигурации, которые не нужны, когда config находится в собственном файле. Запустите с log4net в режиме отладки с '' и проверьте окно вывода на наличие каких-либо проблем. – stuartd

+0

Спасибо всем! Я добавляю режим отладки и проверял окна вывода, и это кажется ошибкой, но это дает мне руководство для продолжения работы. Я сообщу вам, если у меня возникнут какие-либо дополнительные проблемы. – user3100144

ответ

2

Я имел эту проблему раньше; попробуйте добавить следующую строку кода в свою службу.

XmlConfigurator.Configure(); 

Это часть пространства имен log4net.Config.

+0

Это не обязательно при использовании ассемблерных атрибутов – stuartd

+0

Thanks Allan! Я просто попробую, но ничего не записывает – user3100144

+0

Хм ... странно, что он создает файл и ничего не пишет; поскольку единственная другая проблема, которую я видел, была связана с разрешениями с учетной записью, на которой работала служба Windows. Но если он создает файл, то он должен иметь разрешения. Я пробовал уровень журнала «ВСЕ» на одном из моих, и он работает. Можете ли вы попробовать войти в c: \ TEMP \ и посмотреть, не изменилось ли это? –

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