效果:
web.config配置
<configuration> <configSections> <!--log4net日志记录--> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> </configSections> <!--日志文件配置--> <log4net> <root> <!--只有在这个级别或之上的事件才会被记录--> <level value="ALL"/> <!--RollingFileAppender事件日志,每天一个日志--> <appender-ref ref="LogFileAppender_DateFormat"/> </root> <!--logger name:必须的,logger的名称 additivity:可选,取值是true或false,默认值是true。设置为false时将阻止父logger中的appender--> <logger name="myLoggin"> <!--只有在这个级别或之上的事件才会被记录--> <level value="DEBUG"/> <appender-ref ref="LogFileAppender_DateFormat"/> </logger> <!--定义日志的输出方式,只能作为 log4net 的子元素。name属性必须唯一,type属性必须指定。name:必须的,Appender对象的名称 type:必须的,Appender对象的输出类型--> <appender name="LogFileAppender_DateFormat" type="log4net.Appender.RollingFileAppender"> <!--保存路径:下面路径项目启动的时候自动创建Log文件夹--> <file value="Log\"/> <appendToFile value="true"/> <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])--> <rollingStyle value="Date"/> <!--这是按日期产生文件夹--> <datePattern value="yyyyMM\yyyyMMdd'.txt'"/> <!--是否只写到一个文件中--> <staticLogFileName value="false"/> <param name="AppendToFile" value="true"/> <!--控制Appender的输出格式,也可以是xml 一个Appender只能是一个layout--> <layout type="log4net.Layout.PatternLayout"> <!--每条日志末尾的文字说明--> <param name="Header" value="[Header]"/> <param name="Footer" value="[Footer] "/> <param name="ConversionPattern" value=" %n 时间:%date %n 线程ID:[%thread] %n 日志级别:%-5level %n 记录类:%logger %n 消息:%message%n"/> </layout> <!--定义过滤器--> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="DEBUG"/> <param name="LevelMax" value="WARN"/> </filter> </appender> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/> </layout> </appender> </log4net> </configuration>
添加文件夹和类:
Log.cs代码:
[assembly: log4net.Config.XmlConfigurator(Watch = true)] namespace JRE.Member { public static class Log { public static log4net.ILog GetLogObject() { return log4net.LogManager.GetLogger("LogFileAppender_DateFormat"); } } }
调用日志:
//每个方法调用花费时间 Stopwatch wTime = new Stopwatch(); wTime.Start(); context.Response.ContentType = "text/plain"; response = context.Response; request = context.Request; cont = context; context.Response.Buffer = true; context.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1); context.Response.AddHeader("pragma", "no-cache"); context.Response.AddHeader("cache-control", ""); context.Response.CacheControl = "no-cache"; context.Response.ContentType = "text/plain"; System.Reflection.MethodInfo methodinfo = this.GetType().GetMethod(action); methodinfo.Invoke(this, null); //当前所消耗时间 wTime.Stop(); Log.GetLogObject().DebugFormat("lan:{0}|Source:{1}|Reach_ID:{2}|ver:{3}|DeviceNumber:{4}|action:{5}|TOKEN:{6}|调用[{7}]方法花费的时间:{8}毫秒", lan, Source,Reach_ID,ver,DeviceNumber,action,TOKEN,action, wTime.Elapsed.TotalMilliseconds); HttpContext.Current.Response.End()