简体   繁体   English

Log4net-多个追加程序

[英]Log4net - multiple appenders

I currently have two appenders, one is for logging in a file and the other is for logging in a database. 我目前有两个附加程序,一个用于登录文件,另一个用于登录数据库。 The ado net appender is not working, it's not logging anything in the table. ado net附加程序不起作用,它没有在表中记录任何内容。 The rolling file appender however, works just fine. 但是,滚动文件追加器可以正常工作。 It logs in the file. 它登录文件。 If I remove the rolling file appender, the logging in the database works just fine. 如果删除滚动文件附加程序,则数据库中的日志记录工作正常。

Here's part of my app.config file: 这是我的app.config文件的一部分:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="common">
  <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
 </configSections>
<connectionStrings>
    <add name="Log4NetDBConnection" connectionString="Data Source=localhost;Initial Catalog=DataProcessing;UID=dpp-user;PWD=dpp-user" providerName="System.Data.SqlClient" />

 <common>
<logging>
  <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net1211">
    <arg key="configType" value="INLINE" />
    </factoryAdapter>
   </logging>
   </common>
  <log4net configSource="App.log4net.config" />
    <dependentAssembly>
    <assemblyIdentity name="Common.Logging.Core" publicKeyToken="af08829b84f0328e" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.3.0.0" newVersion="3.3.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Common.Logging" publicKeyToken="af08829b84f0328e" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.3.0.0" newVersion="3.3.0.0" />
  </dependentAssembly>
</assemblyBinding>

And here is my App.Log4net.config file: 这是我的App.Log4net.config文件:

<log4net>
<!-- Needed for default logger behavior to the log table-->
<root>
<level value="ERROR" />
<level value="WARN" />
<appender-ref ref="AdoNetAppender" />
</root>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="1" />
<connectionType value="System.Data.SqlClient.SqlConnection,System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionStringName value="DPPLog4NetDBConnection" />
<commandText value="INSERT INTO _Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
  <parameterName value="@log_date" />
  <dbType value="DateTime" />
  <layout type="log4net.Layout.RawTimeStampLayout" />
 </parameter>
 <parameter>
  <parameterName value="@thread" />
  <dbType value="String" />
  <size value="255" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%thread" />
  </layout>
</parameter>
<parameter>
  <parameterName value="@log_level" />
  <dbType value="String" />
  <size value="50" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%level" />
  </layout>
</parameter>
<parameter>
  <parameterName value="@logger" />
  <dbType value="String" />
  <size value="255" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%logger" />
  </layout>
</parameter>
<parameter>
  <parameterName value="@message" />
  <dbType value="String" />
  <size value="4000" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%message" />
  </layout>
</parameter>
<parameter>
  <parameterName value="@exception" />
  <dbType value="String" />
  <size value="2000" />
  <layout type="log4net.Layout.ExceptionLayout" />
</parameter>

<!-- <root>
<level value="DEBUG" />
<appender-ref ref="RollingFileAppender" />
</root>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<level value="ALL" />
<file value="c:/logs/WorkflowEngineApp.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
  <conversionPattern value="%date [%thread] %level %logger - 
%message%newline%exception" />
</layout>
</appender> -->

</log4net>

As you can see, I have the rolling file appender commented because otherwise it only logs in a file. 如您所见,我对滚动文件附加程序进行了注释,因为否则它将仅登录文件。 What am I doing wrong? 我究竟做错了什么? Can I use these two appenders together? 我可以同时使用这两个追加程序吗?

I suspect your are on the right track, looks like both appenders needs to be specified in the same root see example and link below: 我怀疑您的方法是正确的,看起来两个附加程序都需要在同一根目录中指定,请参见下面的示例和链接:

<root>
<level value="ERROR" />
<level value="WARN" />
<appender-ref ref="AdoNetAppender" />
<level value="DEBUG" />
<appender-ref ref="RollingFileAppender" />
</root>

File and Database multiple configuration for log4net log4net的文件和数据库多个配置

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM