web项目中的 log4net的配置

最近用log4net,网上查了很多资料,照着网上的配置大多都不管用,可能我还是有什么地方配置的不对。看出来的朋友平指出。下面是我自己亲测的,可以用!

1.web项目中的web.config 配置log4net

<?xml version="1.0" encoding="utf-8"?>

<!--
有关如何配置 ASP.NET 应用程序的详细消息,请访问
http://go.microsoft.com/fwlink/?LinkId=169433
--> <configuration>
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web> <log4net>
<!--定义输出到文件中-->
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<!--定义文件存放位置:相对路径-->
<!--<file value="./log/log.txt" />-->
<!--定义文件存放位置:绝对路径-->
<!--<file value="e:/log/log.text" />-->
<!--定义文件存放位置:相对路径但是文件名称日期-->
<file type="log4net.Util.PatternString" value="./log/%date{yyyy-MM-dd}.log" /> <appendToFile value="true" />
<!--得到-->
<!--按照文件的大小进行变换日志文件-->
<!--<param name="RollingStyle" value="Size" />-->
<!--按照日期进行变换日志文件 下面两种配置都可以,作用是一样的-->
<!--<param name="RollingStyle" value="Date" />-->
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd-HH:mm:ss" /> <!--关掉固定文件名-->
<!--<staticLogFileName value="false" />--> <layout type="log4net.Layout.PatternLayout">
<!--每条日志末尾的文字说明 这个地方有时候管用-->
<footer value="一条完整日志" />
<!--输出格式-->
<!--样例:2008-03-26 13:42:32,111 [10] INFO loglog.WebForm1 [(null)] 文件:E:\text\log4Net\loglog\loglog\WebForm1.aspx.cs 行号:41 - info-->
<conversionPattern value="%newline记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 文件:%F-- 行号:%L 错误描述:%message%newline" />
</layout>
</appender>
<!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。-->
<root>
<!--文件形式记录日志-->
<appender-ref ref="LogFileAppender" /> <!--Windows事件日志-->
<!--<appender-ref ref="EventLogAppender" />-->
<!-- 如果不启用相应的日志记录,可以通过这种方式注释掉
<appender-ref ref="AdoNetAppender_Access" />
-->
</root> </log4net> </configuration>

关于使用log4net中可能会使用到的一些参数
%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
%n(new line):换行
%d(datetime):输出当前语句运行的时刻
%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
%t(thread id):当前语句所在的线程ID
%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等
%c(class):当前日志对象的名称,例如:
%f(file):输出语句所在的文件名。
%l(line):输出语句所在的行号。
%数字:表示该项的最小长度,如果不够,则用空格填充,如“%-5level”表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充

<!--每条日志末尾的文字说明 这个地方有时候管用-->
        <footer value="一条完整日志" />

有时候会有,有时候没有。??

2.配置完以后在Global文件中加点东西

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
//方式1:这个可以用
//[assembly: log4net.Config.DOMConfigurator(ConfigFile = "Web.config", Watch = true)]
namespace loglog
{
public class Global : System.Web.HttpApplication
{ protected void Application_Start(object sender, EventArgs e)
{
//方式2:网上有这样写的,我式了能用。有知道的请告诉我怎么用。
//log4net.Config.XmlConfigurator.Configure();
//方式3:这个可以用
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(System.Web.HttpContext.Current.Server.MapPath("web.config")));
} protected void Session_Start(object sender, EventArgs e)
{ } protected void Application_BeginRequest(object sender, EventArgs e)
{ } protected void Application_AuthenticateRequest(object sender, EventArgs e)
{ } protected void Application_Error(object sender, EventArgs e)
{ } protected void Session_End(object sender, EventArgs e)
{ } protected void Application_End(object sender, EventArgs e)
{ }
}
}

上面的三种方式,第二种不管用,我看网上其他人有这样写的,不知道我这为什么不能用!!

3. 在想加日志的的地方加下面的代码

            //创建日志记录组件实例
ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
//记录错误日志
log.Error("error", new Exception("发生了一个异常"));
//记录严重错误
log.Fatal("fatal", new Exception("发生了一个致命错误"));
//记录一般信息
log.Info("info");
//记录调试信息
log.Debug("debug");
//记录警告信息
log.Warn("warn");
//Console.WriteLine("日志记录完毕。");
//Console.Read();
System.Diagnostics.Debug.WriteLine("线程id:" + Thread.CurrentThread.ToString());

这样值日就记录在下来了。

上一篇:Remote Desktop Connection Manager (RDCMan)


下一篇:JavaScript定时器及相关面试题