2016-03-24 3 views
0

Следующие журналы конфигурации в Eventlog и работают для SmtpSender. Но файловый сервер не регистрируется, он создает файл журнала в пути, но не выполняет никаких журналов отладки.Log4net multiple loggers - регистратор файлов не работает

<root> 
    <level value="DEBUG" />  
    <appender-ref ref="EventLogAppender" /> 
</root> 
<logger additivity="false" name="SmtpLogger"> 
    <level value="FATAL"/> 
    <appender-ref ref="SmtpAppender" /> 
</logger> 
<logger name="RollingFileAppender"> 
    <level value="DEBUG"/> 
    <appender-ref ref="RollingFileAppender"/> 
</logger>  

Но когда я изменить корневой логгер RollingFileAppender он записывает в файл,

<root> 
    <level value="DEBUG" />  
    <appender-ref ref="RollingFileAppender" /> 
</root> 
<logger additivity="false" name="SmtpLogger"> 
    <level value="FATAL"/> 
    <appender-ref ref="SmtpAppender" /> 
</logger> 
<logger name="RollingFileAppender"> 
    <level value="DEBUG"/> 
    <appender-ref ref="RollingFileAppender"/> 
</logger>  

Любая идея, почему это происходит? Как я могу заставить файловый регистратор работать в этом сценарии.

ответ

0

мне удалось получить протоколирование работы, на самом деле я сделал это в качестве эксперимента, и она работала.

Добавлено RollingFileAppender в корневой элемент,

<root> 
    <level value="DEBUG" />  
    <appender-ref ref="EventLogAppender" />  
    <appender-ref ref="RollingFileAppender"/> 
</root> 
<logger additivity="false" name="SmtpLogger"> 
<level value="FATAL"/> 
<appender-ref ref="SmtpAppender" /> 
</logger> 
<logger name="RollingFileAppender"> 
<level value="DEBUG"/> 
<appender-ref ref="RollingFileAppender"/> 
</logger> 
0

Вы не опубликовали конфуцификацию appender, однако самый простой способ выяснить, что пойдет не так, - включить внутреннюю отладку. Это скажет вам, что пошло не так в приложении скользящего файла:

Существует 2 разных способа включения внутренней отладки в log4net. Они перечислены ниже. Предпочтительный метод - указать параметр log4net.Internal.Debug в конфигурационном файле приложения.

• Внутренний отладки также может быть включена путем установки значения в конфигурационном файле приложения (файл конфигурации не log4net, если данные log4net конфигурации не встраивается в файл конфигурации приложения). Для параметра log4net.Internal.Debug необходимо установить значение значение true. Например:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
     <add key="log4net.Internal.Debug" value="true"/> 
    </appSettings> 
</configuration> 

Этот параметр считывается непосредственно при запуске будет вызывать все внутренние отладочные сообщения испускается.

• Чтобы программно включить внутреннюю отладку log4net, вам необходимо установить значение для свойства log4net.Util.LogLog.InternalDebugging в значение true. Очевидно, , чем скорее это будет установлено, тем больше будет отладки.

Внутренние сообщения для отладки записываются на консоль и в систему System.Diagnostics.Trace . Если приложение не имеет консоли , сообщения, зарегистрированные там, будут потеряны. Обратите внимание, что приложение может перенаправить консольный поток, установив System.Console.Out. Система Trace по умолчанию отправит сообщение прикрепленному отладчику (где сообщения появятся в окне вывода ). Если в процессе нет подключенного отладчика, сообщения отправляются в системный отладчик. Утилита вроде DebugView от http://www.sysinternals.com может использоваться для записи этих сообщений .

Поскольку внутренние сообщения отладки log4net записываются в систему System.Diagnostics.Trace , можно перенаправить эти сообщения в локальный файл. Вы можете определить прослушиватель трассировки, добавив к вашему приложению.конфигурационный файл:

<configuration> 
    ... 

    <system.diagnostics> 
     <trace autoflush="true"> 
      <listeners> 
       <add 
        name="textWriterTraceListener" 
        type="System.Diagnostics.TextWriterTraceListener" 
        initializeData="C:\tmp\log4net.txt" /> 
      </listeners> 
     </trace> 
    </system.diagnostics> 

    ... 
</configuration> 

Make sure that the process running your application has permission to write to this file. 

log4net faq

+0

Благодаря Питер, я уже сделал это. Исключений не было, и он правильно настраивает RollingfileAppender. Разрешения достаточно, когда RollingFileAppender создан в качестве корневого приложения, он отлично работает. – Dhanuka777