首页 > 代码库 > Log4Net Config Appender

Log4Net Config Appender

整理了下以前项目中使用的Log4Net的Appender。

1:只记录在一个文件下的

  <appender name="RollingFileAppenderFileSize" type="log4net.Appender.FileAppender">    <!--日志文件名-->    <file value=http://www.mamicode.com/"log\log.txt"/>    <!--编码方式-->    <encoding value =http://www.mamicode.com/"unicodeFFFE"/>    <!--是否在文件中追加-->    <appendToFile value=http://www.mamicode.com/"true"/>    <!--加入这个可以保证线程安全 另一种形式:log4net.Appender.FileAppender+InterProcessLock-->    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />    <layout type="log4net.Layout.PatternLayout">      <conversionPattern value=http://www.mamicode.com/"%newline记录时间:%date{yyyy-mm-dd hh:mm:ss} %n线程ID:[%thread] %n日志级别:%-5level %n消息:%message%n代码所在位置:%location%n异常信息:%exception%n"/>    </layout>  </appender>
View Code

2:滚动文件,其中分为3类,1:按大小来滚动文件名,2:按日期来滚动文件名,3:按大小以及日期的混合方式

  <!--按最大的Size来判断的是否产生新的Log-->  <appender name="RollingFileAppenderFileSize" type="log4net.Appender.RollingFileAppender">    <!--日志文件名-->    <file value=http://www.mamicode.com/"log\log.txt"/>    <!--编码方式-->    <encoding value =http://www.mamicode.com/"unicodeFFFE"/>    <!--是否在文件中追加-->    <appendToFile value=http://www.mamicode.com/"true"/>    <!--按照文件的大小进行变换日志文件-->    <rollingStyle value=http://www.mamicode.com/"Size"/>    <!--最大变换数量-->    <maxSizeRollBackups value=http://www.mamicode.com/"-1"/>    <!--是否维持file原来的后缀-->    <PreserveLogFileNameExtension value =http://www.mamicode.com/"true"/>    <!--加入这个可以保证线程安全 另一种形式:log4net.Appender.FileAppender+InterProcessLock-->    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />    <!--最大文件大小-->    <maximumFileSize value=http://www.mamicode.com/"100KB"/>    <!--日志文件名是否为静态-->    <staticLogFileName value=http://www.mamicode.com/"false"/>    <layout type="log4net.Layout.PatternLayout">      <conversionPattern value=http://www.mamicode.com/"%newline记录时间:%date{yyyy-mm-dd hh:mm:ss} %n线程ID:[%thread] %n日志级别:%-5level %n消息:%message%n代码所在位置:%location%n异常信息:%exception%n"/>    </layout>  </appender>  <!--按最大的Size,以及Date来判断的是否产生新的Log-->  <appender name="RollingFileAppenderFileDateSize" type="log4net.Appender.RollingFileAppender">    <!--日志文件名-->    <file value=http://www.mamicode.com/"log\"/>    <!--编码方式-->    <encoding value =http://www.mamicode.com/"unicodeFFFE"/>    <!--是否在文件中追加-->    <appendToFile value=http://www.mamicode.com/"true"/>    <!--按照文件的大小进行变换日志文件Once,Size,Date,Composite -->    <rollingStyle value=http://www.mamicode.com/"Composite"/>    <!--按日期递进的文件名 其中 &quot;(") 是用来转义的,通知系统 .log是文本信息。 备注:这里不可以使用文件名中不允许使用的字符 比如:等-->    <datePattern value=http://www.mamicode.com/"yyyy-MM-dd hh_mm_ss&quot;.log&quot;" />    <!--最大变换数量-->    <maxSizeRollBackups value=http://www.mamicode.com/"-1"/>    <!--是否维持原来的后缀-->    <PreserveLogFileNameExtension value =http://www.mamicode.com/"true"/>    <!--是否静态的文件,就是最新的日志是否永远是File内定义的文件-->    <StaticLogFileName value=http://www.mamicode.com/"false"/>    <!--加入这个可以保证线程安全 另一种形式:log4net.Appender.FileAppender+InterProcessLock-->    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />    <!--最大文件大小 支持KB M GB 但不支持小数-->    <maximumFileSize value=http://www.mamicode.com/"100KB"/>    <!--日志文件名是否为静态-->    <staticLogFileName value=http://www.mamicode.com/"false"/>    <layout type="log4net.Layout.PatternLayout">      <conversionPattern value=http://www.mamicode.com/"%newline记录时间:%date{yyyy-mm-dd hh:mm:ss} %n线程ID:[%thread] %n日志级别:%-5level %n消息:%message%n代码所在位置:%location%n异常信息:%exception%n"/>    </layout>  </appender>  <!--按Date来判断的是否产生新的Log-->  <appender name="RollingFileAppenderFileDate" type="log4net.Appender.RollingFileAppender">    <!--日志文件名-->    <file value=http://www.mamicode.com/"log\"/>    <!--编码方式-->    <encoding value =http://www.mamicode.com/"unicodeFFFE"/>    <!--是否在文件中追加-->    <appendToFile value=http://www.mamicode.com/"true"/>    <!--按照文件的大小进行变换日志文件Once,Size,Date,Composite -->    <rollingStyle value=http://www.mamicode.com/"Date"/>    <!--按日期递进的文件名 其中 &quot;(") 是用来转义的,通知系统 .log是文本信息。 备注:这里不可以使用文件名中不允许使用的字符 比如:等 这里最小的单位为分钟-->    <datePattern value=http://www.mamicode.com/"yyyy-MM-dd hh_mm_ss&quot;.log&quot;" />    <!--最大变换数量-->    <maxSizeRollBackups value=http://www.mamicode.com/"-1"/>    <!--加入这个可以保证线程安全 另一种形式:log4net.Appender.FileAppender+InterProcessLock-->    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />    <!--是否维持原来的后缀-->    <PreserveLogFileNameExtension value =http://www.mamicode.com/"true"/>    <!--是否静态的文件-->    <StaticLogFileName value=http://www.mamicode.com/"false"/>    <!--日志文件名是否为静态-->    <staticLogFileName value=http://www.mamicode.com/"false"/>    <layout type="log4net.Layout.PatternLayout">      <conversionPattern value=http://www.mamicode.com/"%newline记录时间:%date{yyyy-mm-dd hh:mm:ss} %n线程ID:[%thread] %n日志级别:%-5level %n消息:%message%n代码所在位置:%location%n异常信息:%exception%n"/>    </layout>  </appender>
View Code

3:记录在SqlServer数据库中,备注这里特别注意ConnectionType,在源码中是使用了Type.GetType(ConnectionType)来获取类的,所以必须带有key 和 version

   创建SQL表的SQL语句:

CREATE TABLE [dbo].[TestSysLog](  [Date] [date] NOT NULL,  [Thread] [int] NOT NULL,  [Level] [nvarchar](255) NOT NULL,  [Logger] [nvarchar](255) NOT NULL,  [Message] [nvarchar](max) NULL,  [Method] [nvarchar](255) NULL,  [Location] [nvarchar](1023) NULL,  [Exception] [nvarchar](max) NULL  )
View Code

 Appender:

    <!--输出到SQLServer数据库 注意这里的connectionType 一定要带上publickeyToken 因为源码中使用的是Type.GetType()-->    <appender name="AdoNetAppender_SQLServer" type="log4net.Appender.AdoNetAppender">      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>      <connectionString value="data source=192.168.21.111;Initial Catalog=SEM;Persist Security Info=True;User ID=sa;Password=123456" />      <commandText value="INSERT INTO [TestSysLog] ([Date], [Thread], [Level], [Logger], [Method], [Location],[Message], [Exception]) VALUES (@Date, @Thread, @Level, @Logger, @Method,@Location,@Message, @Exception)" />      <bufferSize value="1" />      <parameter>        <parameterName value="@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="@Level" />        <dbType value="String" />        <size value="255" />        <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="@Method" />        <dbType value="String" />        <size value="255" />        <layout type="log4net.Layout.PatternLayout">          <conversionPattern value="%method" />        </layout>      </parameter>      <parameter>        <parameterName value="@Location" />        <dbType value="String" />        <size value="1023" />        <layout type="log4net.Layout.PatternLayout" >          <conversionPattern value="%location" />        </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="AnsiString" />        <size value="8000" />        <layout type="log4net.Layout.ExceptionLayout" />      </parameter>    </appender>
View Code

4:记录到Oracle数据库中。备注这里特别注意ConnectionType,在源码中是使用了Type.GetType(ConnectionType)来获取类的,所以必须带有key 和 version。所以Oracle版本不同connectionType 也不同

   创建SysLog表的SQL语句: 

CREATE TABLE SysLog(  Log_Date       DATE                               NOT NULL,  Log_Thread     INTEGER                            NOT NULL,  Log_Level      NVARCHAR2(255)                     NOT NULL,  Log_Logger     NVARCHAR2(255)                     NOT NULL,  Log_Message    nclob,  Log_Method     NVARCHAR2(255),  Log_Location   NVARCHAR2(1023),  Log_Exception  nclob)
View Code

   Appender Oracle8i

  <appender name="AdoNetAppender_Oracle" type="log4net.Appender.AdoNetAppender">    <connectionType value ="System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />    <connectionString value="data source=[_serviceName_];User ID=[_userid_];Password=[_password_]" />    <commandText value="INSERT INTO SysLog (Log_Date, Log_Thread, Log_Level, Log_Logger, Log_Message, Log_Method,Log_Location, Log_Exception) VALUES (:Date, :Thread, :Level, :Logger,:Message,:Method,:Location,:Exception)" />    <bufferSize value="250" />    <parameter>      <parameterName value=":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=":Level" />      <dbType value="String" />      <size value="255" />      <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=":Method" />      <dbType value="String" />      <size value="255" />      <layout type="log4net.Layout.PatternLayout">        <conversionPattern value="%method" />      </layout>    </parameter>    <parameter>      <parameterName value=":Location" />      <dbType value="String" />      <size value="1023" />      <layout type="log4net.Layout.PatternLayout" >        <conversionPattern value="%location" />      </layout>    </parameter>    <parameter>      <parameterName value=":Message" />      <dbType value="AnsiString" />      <layout type="log4net.Layout.PatternLayout">        <conversionPattern value="%message" />      </layout>    </parameter>    <parameter>      <parameterName value=":Exception" />      <dbType value="AnsiString" />            <layout type="log4net.Layout.ExceptionLayout" />    </parameter>  </appender>
View Code

   Appender Oracle9i

<appender name="AdoNetAppender_Oracle" type="log4net.Appender.AdoNetAppender">    <connectionType value="System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />    <connectionString value="data source=[mydatabase];User ID=[user];Password=[password]" />  <commandText value="INSERT INTO SysLog (Log_Date, Log_Thread, Log_Level, Log_Logger, Log_Message, Log_Method,Log_Location, Log_Exception) VALUES (:Date, :Thread, :Level, :Logger,:Message,:Method,:Location,:Exception)" />  <bufferSize value="128" />  <parameter>    <parameterName value=":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=":Level" />    <dbType value="String" />    <size value="255" />    <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=":Method" />    <dbType value="String" />    <size value="255" />    <layout type="log4net.Layout.PatternLayout">      <conversionPattern value="%method" />    </layout>  </parameter>  <parameter>    <parameterName value=":Location" />    <dbType value="String" />    <size value="1023" />    <layout type="log4net.Layout.PatternLayout" >      <conversionPattern value="%location" />    </layout>  </parameter>  <parameter>    <parameterName value=":Message" />    <dbType value="AnsiString" />    <layout type="log4net.Layout.PatternLayout">      <conversionPattern value="%message" />    </layout>  </parameter>  <parameter>    <parameterName value=":Exception" />    <dbType value="AnsiString" />    <layout type="log4net.Layout.ExceptionLayout" />  </parameter>  </appender>
View Code

未完待续~~