<?xml version="1.0" encoding="utf-8" ?>
 
 
 
<log4net debug="false">
 
<!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质-->
 
<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
 
<!--日志缓存写入条数 设置为0时只要有一条就立刻写到数据库-->
 
<bufferSize value="0" />
 
<!--日志数据库连接串-->
 
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
 
<connectionString value="DATABASE=GoodLook;SERVER=xx.xx.140.170;UID=sa;PWD=123456a;Connect Timeout=30;" />
 
<!--日志数据库脚本-->
 
<commandText value="INSERT INTO LogDetails ([LogDate],[LogThread],[LogLevel],[LogLogger],[LogActionClick],[LogMessage],[UserName],[UserIP]) VALUES (@log_date, @thread, @log_level, @logger, @ActionsClick, @message,@UserName,@UserIP)" />
 
<!--日志时间LogDate -->
 
<parameter>
 
<parameterName value="@log_date" />
 
<dbType value="DateTime" />
 
<layout type="log4net.Layout.RawTimeStampLayout" />
 
</parameter>
 
<!--线程号-->
 
<parameter>
 
<parameterName value="@thread" />
 
<dbType value="String" />
 
<size value="100" />
 
<layout type="log4net.Layout.PatternLayout">
 
<conversionPattern value="%t" />
 
</layout>
 
</parameter>
 
<!--日志类型LogLevel -->
 
<parameter>
 
<parameterName value="@log_level" />
 
<dbType value="String" />
 
<size value="200" />
 
<layout type="log4net.Layout.PatternLayout">
 
<conversionPattern value="%p" />
 
</layout>
 
</parameter>
 
<!--日志名称-->
 
<parameter>
 
<parameterName value="@logger" />
 
<dbType value="String" />
 
<size value="500" />
 
<layout type="log4net.Layout.PatternLayout">
 
<conversionPattern value="%logger" />
 
</layout>
 
</parameter>
 
<parameter>
 
<parameterName value="@message" />
 
<dbType value="String" />
 
<size value="3000" />
 
<layout type="Log4NetApply.MyLayout">
 
<conversionPattern value="%property{Message}" />
 
</layout>
 
</parameter>
 
<parameter>
 
<parameterName value="@ActionsClick" />
 
<dbType value="String" />
 
<size value="4000" />
 
<layout type="Log4NetApply.MyLayout" >
 
<conversionPattern value = "%property{ActionsClick}"/>
 
</layout>
 
</parameter>
 
<!--自定义UserName -->
 
<parameter>
 
<parameterName value="@UserName" />
 
<dbType value="String" />
 
<size value="30" />
 
<layout type="Log4NetApply.MyLayout" >
 
<!--log4net.MDC.Set("UserName", "asdfasdf");
 
<conversionPattern value = "%X{UserName}"/>-->
 
<conversionPattern value = "%property{UserName}"/>
 
</layout>
 
</parameter>
 
<parameter>
 
<parameterName value="@UserIP" />
 
<dbType value="String" />
 
<size value="20" />
 
<layout type="Log4NetApply.MyLayout" >
 
<conversionPattern value = "%property{UserIP}"/>
 
</layout>
 
</parameter>
 
</appender>
 
<!-- setup the root category, add the appenders and set the default level -->
 
<root>
 
<level value="Warn"/><!-- 定义记录的日志级别-->
 
<level value="Info"/>
 
<level value="Debug"/>
 
<level value="Fine"/>
 
<appender-ref ref="ADONetAppender" /><!-- 记录到什么介质中-->
 
</root>
 
<!-- specify the level for some specific categories -->
 
<!--//关于上边root到logger这块，如果同时出现，有可能会出现重复插入记录的情况：-->
 
<!--<logger name="iNotes">
 
<level value="WARN"/>
 
<level value="INFO"/>
 
<level value="DEBUG"/>
 
<level value="FINE"/>
 
<appender-ref ref="ADONetAppender"/>
 
</logger>
 
<logger name="StellaLogger">
 
<level value="ALL"/>
 
<appender-ref ref="AdoNetAppender" />
 
</logger>-->
 
<appender name="ReflectionLayout" type="log4net.Appender.RollingFileAppender,log4net">
 
 
 
<!--日志文件路径,按文件大小方式输出时在这里指定文件名，并且前面的日志按天在文件名后自动添加当天日期形成文件-->
 
<param name="File" value="D:/Log/" />
 
 
 
<!--是否追加到文件-->
 
<param name="AppendToFile" value="true" />
 
 
 
<!--记录日志写入文件时，不锁定文本文件-->
 
<!--<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />-->
 
 
 
<!--Unicode编码-->
 
<!--<Encoding value="UTF-8" />-->
 
 
 
<!--最多产生的日志文件数，value="－1"为不限文件数-->
 
<!--<param name="MaxSizeRollBackups" value="10" />-->
 
 
 
<!--是否只写到一个文件中-->
 
<param name="StaticLogFileName" value="false" />
 
 
 
<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
 
<param name="RollingStyle" value="Composite" />
 
 
 
<!--按日期产生文件夹，文件名［在日期方式与混合方式下使用］-->
 
<param name="DatePattern" value="yyyy-MM-dd/" ReflectionLayout.log="" />
 
<!--<param name="DatePattern" value="yyyyMMdd/yyyyMMdd"-TimerServer.log"" />-->
 
<!--<param name="DatePattern" value="yyyyMMdd/"TimerServer/TimerServer.log"" />-->
 
 
 
<!--每个文件的大小。只在混合方式与文件大小方式下使用，超出大小的在文件名后自动增加1重新命名-->
 
<param name="maximumFileSize" value="500KB" />
 
 
<!--记录的格式。-->
 
<layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">
 
<param name="ConversionPattern" value="记录时间：%date 线程ID:[%thread] 日志级别：%-5level 记录类：%logger 操作者ID：%property{Operator} 操作类型：%property{Action}%n 当前机器名:%property%n当前机器名及登录用户：%username %n 记录位置：%location%n 消息描述：%property{Message}%n 异常：%exception%n 消息：%message%newline%n%n" />
 
</layout>
 
</appender>
 
 
</log4net>