2016-03-18 5 views
1

В моем приложении MVC используется log4net для ведения журнала сервера, и я только что добавил jsnlog.log4net для ведения журнала javascript. Я следил за официальным руководством, чтобы настроить его, и он работает отлично. И я не внес никаких изменений в файл log4net.config.Конфигурировать путь к файлу журнала jsnlog.log4net

Теперь как log4net, так и jsnlog используют один и тот же файл txt для регистрации их журналов. Мне нужно разделить журналы на два разных файла. Так что я могу легко идентифицировать журналы сервера и журналы javascript.

Это мой файл log4net.config.

<?xml version="1.0" encoding="utf-8" ?> 
<log4netConfiguration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 
    <appSettings> 
    <add key="log4net.Config" value="log4net.config" /> 
    </appSettings> 
    <log4net> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file type="log4net.Util.PatternString" value="C:\buttonwood_logs\buttonwood_web_log\buttonwood_log_%date{ddMMyyyy}.log" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="5" /> 
     <maximumFileSize value="5MB" /> 
     <datePattern value="yyyyMMdd" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%4t %d{ABSOLUTE} %-5p %m%n"/> 
     </layout> 
    </appender> 
    <root> 
     <level value="INFO" /> 
     <appender-ref ref="RollingFileAppender" /> 
    </root> 
    </log4net> 
</log4netConfiguration> 

ответ

2

Для входа двух файлов, которые необходимо иметь два appenders, и регистратор для каждого из них.

Как у вас есть корневой элемент, определенный в вашей конфигурации, самый простой способ установить конкретный регистратор для кода JavaScript, и пусть все остальное идти к существующему Appender:

<!-- additivity=false means "don't inherit appenders from the root logger" --> 
<logger name="JSLogger" additivity="false"> 
    <level value="INFO" /> 
    <appender-ref ref="JSFileAppender" /> 
</logger> 

Тогда настроить Appender:

<appender name="JSFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file type="log4net.Util.PatternString" 
      value="C:\buttonwood_logs\jslog\buttonwood_log_%date{ddMMyyyy}.log" /> 
     … etc. 

При создании регистратора в jsnlog, то вы должны затем ссылаться на него по имени, например, GetLogger("JSLogger")

-1

Попробуйте что-то вроде этого: (для получения дополнительной информации см Codeproject статьи - Use Multiple log4net Outputs from One Application)

<log4net> 
    <appender type="log4net.Appender.RollingFileAppender" name="classApp1"> 
     <file value="c:\\Library1.txt" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionpattern value="%d [%t] %-5p %c - %m%n" /> 
     </layout> 
    </appender> 

    <appender type="log4net.Appender.RollingFileAppender" name="classApp2"> 
     <file value="c:\\Library2.txt" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionpattern value="%d [%t] %-5p %c - %m%n" /> 
     </layout> 
    </appender> 

    <appender type="log4net.Appender.RollingFileAppender" name="application"> 
     <file value="c:\\Application.txt" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionpattern value="%d [%t] %-5p %c - %m%n" /> 
     </layout> 
    </appender> 

    <logger name="ClassLibrary1"> 
     <level value="ERROR" /> 
     <maximumfilesize value="256KB" /> 
     <param value="ERROR" name="Threshold" /> 

     <appender-ref ref="classApp1" /> 
    </logger> 

    <logger name="ClassLibrary2"> 
     <level value="WARN" /> 
     <maximumfilesize value="256KB" /> 
     <param value="WARN" name="Threshold" /> 

     <appender-ref ref="classApp2" /> 
    </logger> 

    <logger name="WindowsApplication1"> 
     <level value="WARN" /> 
     <maximumfilesize value="256KB" /> 
     <param value="WARN" name="Threshold" /> 

     <appender-ref ref="application" /> 
    </logger> 

    </log4net> 
+0

Лесорубы не имеет 'maximumfilesize' собственности, и вы бы не действительно хотите использовать синтаксис 'param', когда вы можете напрямую установить свойства. Возможно, в 2007 году, когда статья была написана, все было иначе. – stuartd

+0

Точка не была о синтаксисе параметра, а о appenders –

+0

Возможно, но вслепую вставку неверной конфигурации, которая смешивает свойства с регистраторами и добавками, не помогает (у логгеров тоже нет свойства «Порог»). – stuartd

0

В вашем веб-дизайне.

<jsnlog serverSideLogger="ClientLog"> 

В вашем log4net тег

<log4net> 
<appender name="JSFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="..\Log\Client.log" /> 
    <appendToFile value="true" /> 
    <maximumFileSize value="100MB" /> 
    <maxSizeRollBackups value="5" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%d %level %thread - %message%newline" /> 
    </layout> 
</appender> 


<logger name="ClientLog" additivity="false"> 
    <level value="DEBUG" /> 
    <appender-ref ref="JSFileAppender" /> 
</logger> 
</log4net> 

Имя регистратор должен иметь такое же значение, как jsnlog serverSideLogger конфигурация