1、log4net.config文件:里面定义键,如IP, className等
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低)-->
<log4net>
<!--正常日志类-->
<logger name="info">
<level value="ALL" />
<appender-ref ref="InfoAppender" />
</logger>
<!--错误日志类-->
<logger name="error">
<level value="ALL" />
<appender-ref ref="ErrorAppender" />
</logger>
<!--控制台日志类-->
<!--<root>
<level value="all" />
<appender-ref name="info" ref="InfoAppender"/>
<appender-ref name="error" ref="ErrorAppender"/>
</root>-->
<!--正常日志附加介质-->
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<!--日志路径-->
<param name= "File" value= "Log\"/>
<!--不加utf-8编码格式,中文字符将显示成乱码-->
<!--<param name="Encoding" value="utf-8" />-->
<!--是否是向文件中追加日志-->
<param name= "AppendToFile" value= "true"/>
<!--log保留天数-->
<param name= "MaxSizeRollBackups" value= "7"/>
<!--不加utf-8编码格式,中文字符将显示成乱码-->
<param name="Encoding" value="utf-8" />
<!--写到一个文件-->
<staticLogFileName value="false"/>
<!--单个文件大小。单位:KB|MB|GB-->
<maximumFileSize value="2MB"/>
<!--最多保留的文件数,设为"-1"则不限-->
<maxSizeRollBackups value="1"/>
<!--日志文件名格式为:2017-07-25 Info.html-->
<param name= "DatePattern" value= "yyyy-MM-dd "Info.html""/>
<!--日志根据日期滚动-->
<param name= "RollingStyle" value= "Date"/>
<!--日志文本格式-->
<layout type="log4net.Layout.PatternLayout">
<!--%d 时间,等价于 date-->
<!--%t 线程-->
<!--%-5p 日志级别-->
<!--%P 输出事件的特殊属性,等价于 property-->
<!--%p 日志事件等级,等价于 level-->
<!--%C 出错类,等价于 class,可以使用:%class{1},如果给出了精度说明符,则只会打印类名中最右边的组件的相应数量。默认情况下,类名以完全限定形式输出。-->
<!--%L 出错行-->
<!--%M 方法名,等价于 method-->
<!--%m 日志信息,等价于 message-->
<!--%exception 异常信息-->
<!--%n 换行-->
<param name="ConversionPattern" value="<HR COLOR=red>%n/****************************** %d{yyyy-MM-dd HH:mm:ss,fff} [%t] %-5p ******************************/%nIP:%P{IP}%n路径:%P{className} - %P{methodName} - [%P{row}]%n消息:%m%newline%newline" />
</layout>
</appender>
<!--错误日志附加介质-->
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<!--日志路径-->
<param name= "File" value= "Log\"/>
<!--不加utf-8编码格式,中文字符将显示成乱码-->
<!--<param name="Encoding" value="utf-8" />-->
<!--是否是向文件中追加日志-->
<param name= "AppendToFile" value= "true"/>
<!--log保留天数-->
<param name= "MaxSizeRollBackups" value= "7"/>
<!--日志文件名是否是固定不变的-->
<param name= "StaticLogFileName" value= "false"/>
<!--日志文件名格式为:2017-07-25.log-->
<param name= "DatePattern" value= "yyyy-MM-dd "Error.html""/>
<!--日志根据日期滚动-->
<param name= "RollingStyle" value= "Date"/>
<param name="MaxFileSize" value="1"/>
<!--日志文本格式-->
<layout type="log4net.Layout.PatternLayout">
<!--%d 时间,等价于 date-->
<!--%t 线程-->
<!--%-5p 日志级别-->
<!--%P 输出事件的特殊属性,等价于 property-->
<!--%p 日志事件等级,等价于 level-->
<!--%C 出错类,等价于 class,可以使用:%class{1},如果给出了精度说明符,则只会打印类名中最右边的组件的相应数量。默认情况下,类名以完全限定形式输出。-->
<!--%L 出错行-->
<!--%M 方法名,等价于 method-->
<!--%m 日志信息,等价于 message-->
<!--%exception 异常信息-->
<!--%n 换行-->
<param name="ConversionPattern" value="<HR COLOR=red>%n/****************************** %d{yyyy-MM-dd HH:mm:ss,fff} [%t] %-5p ******************************/%nIP: %P{IP}%nPosition: %P{className} - %P{methodName} - [%P{row}]%nMessage: %m%newline异常: %exception%newline" />
</layout>
</appender>
<!-- 控制台日志附加介质 -->
<!--<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<mapping>
<level value="ERROR" />
<foreColor value="Red, HighIntensity" />
</mapping>
<mapping>
<level value="Info" />
<foreColor value="Green" />
</mapping>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%n%date{HH:mm:ss,fff} [%-5level] %m" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="Info" />
<param name="LevelMax" value="Fatal" />
</filter>
</appender>-->
</log4net>
</configuration>
2、输出:
string ip = "127.0.0.1";
MDC.Set(IP_K, ip);
//ThreadContext.Properties[Row_K] = num;//等价于MDC