在WinApp程序中配置已经能够正常使用,但是在Web中却无论如何都不可以正常使用log4net.config文件应该基本上没有错误global.asax中有
void Application_Start(object sender, EventArgs e) 
    {
        log4net.Config.XmlConfigurator.Configure(new FileInfo("log4net.config"));   
    }错误处理工具类中有
private static ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);错误处理函数中这样使用logger.Info(errMsg);在App_Code里有AssemblyInfo文件中有
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]究竟会是哪出了问题??请各位老大指点啊最好能发一个Web应用Log4net写日志入数据库的例子给我
[email protected],多谢了

解决方案 »

  1.   

    http://hi.baidu.com/cainiao123/blog/item/d566189569f80a087bf48080.html
      

  2.   

    http://www.4oa.com/Article/html/10/63/632/2005/30622.html
    在asp.net下将log4net配置成可log到ms sqlhttp://www.iteeq.com/html/ASP/20061121/4571.html
    在asp.net下将log4net配置
      

  3.   

    在web.config中配置已经可以正常使用了,在log4net.config文件中配置还不行多谢各位了其他配置文件应该如何处理呢?
      

  4.   

    Web服务程序中log4net配置文件只能写在web.config中...你写在别的文件中不能实现功能是正常的..
      

  5.   

    log4net(.net下的日志管理)2006年09月14日 星期四 08:51log4net是在项目中很常用的一个日志工具,用来记录系统的各种信息和一些异常情况. log4net可以把信息以各种方式输出.关于log4net的介绍和使用,官方网站上有详细的说明.今天在使用log4net的时候遇到几个问题,想和大家讨论一下. 以log4net官网上的那个例子为例:
    配置文件如下:
       1<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
     2    <bufferSize value="100" />
     3    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
     4    <connectionString value="data source=[database server];initial catalog=[database name];integrated security=false;persist security info=True;User ID=[user];Password=[password]" />
     5    <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
     6    <parameter>
     7        <parameterName value="@log_date" />
     8        <dbType value="DateTime" />
     9        <layout type="log4net.Layout.RawTimeStampLayout" />
    10    </parameter>
    11    <parameter>
    12        <parameterName value="@thread" />
    13        <dbType value="String" />
    14        <size value="255" />
    15        <layout type="log4net.Layout.PatternLayout">
    16            <conversionPattern value="%thread" />
    17        </layout>
    18    </parameter>
    19    <parameter>
    20        <parameterName value="@log_level" />
    21        <dbType value="String" />
    22        <size value="50" />
    23        <layout type="log4net.Layout.PatternLayout">
    24            <conversionPattern value="%level" />
    25        </layout>
    26    </parameter>
    27    <parameter>
    28        <parameterName value="@logger" />
    29        <dbType value="String" />
    30        <size value="255" />
    31        <layout type="log4net.Layout.PatternLayout">
    32            <conversionPattern value="%logger" />
    33        </layout>
    34    </parameter>
    35    <parameter>
    36        <parameterName value="@message" />
    37        <dbType value="String" />
    38        <size value="4000" />
    39        <layout type="log4net.Layout.PatternLayout">
    40            <conversionPattern value="%message" />
    41        </layout>
    42    </parameter>
    43    <parameter>
    44        <parameterName value="@exception" />
    45        <dbType value="String" />
    46        <size value="2000" />
    47        <layout type="log4net.Layout.ExceptionLayout" />
    48    </parameter>
    49</appender>
    50
    对于其中的<buffersize value=100>是指当log信息达到100条时, log信息就会被写到数据库中,但是当我设置value=2时,我发现当有两条log信息时,信息并没有被写到数据库中,要到第三条log信息产生时,前两条log信息才被写到数据中,继续有新的log信息生成时也是同样的情况。那我就觉得log4net实现buffersize的机制是当有一条新的log信息产生时,系统会检查已存在的信息是否达到buffersize了,如果到了,那就把已经存在的Log信息写到数据中,而最新的那条log信息并没有被写到数据库中。log4net通常也被用来记录系统的各种异常信息,也非常方便。但是不知道log4net本生有异常时,似乎并没有任何异常信息被记录下来(也可能是我不知道)。以上面的配置信息为例,“@message"的长度被设置为4000,但是如果数据库中字段的长度没有4000,比如250。这种设置情况很少,但是确实是一个问题。而这个时候,buffersize value值不是0,而是比如100。那么当第101条log信息产生时,系统就会开始把log信息写到数据中。而其中第一条的message信息的长度超过250,这个时候就会发生异常,从这个时候开始,所有的log信息就都不会被写到数据中了。也不会有任何异常信息抛出来。不知道是我的认识不够深入呢,还是这个真的是个问题。 转载:http://www.cnblogs.com/jun1st/archive/2006/09/14/503700.html 
      

  6.   

    global.asax中有
    void Application_Start(object sender, EventArgs e)
    {
    log4net.Config.XmlConfigurator.Configure(new FileInfo("log4net.config"));
    }
    -----
    在App_Code里有AssemblyInfo文件中有
    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]=================
    仅仅使用上面的任何一种设置方法都足够了。
    不知道是不是你设置了两遍的缘故。
      

  7.   

    VS2005的web项目有点特殊,它会在运行时刻将各个后台的cs文件编译成独立的dll,放在缓存文件夹里面,而类似[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]这样的语句的执行,是依赖于assembly文件的加载,因此你要想点办法为log4net提供加载配置文件的机会。
    例如在每个使用log4net的页面对应的cs文件里面加上[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)],这样可以正确输出log的。
    例如在一个类似LogUtil.cs文件里面写个LogUtil类,封装log4net的操作,这样只要一调用LogUtil的方法,这个临时的assembly就会被加载,log4net就有机会加载配置文件,因此能正确的输出logLogUtil.cs
    using System;
    using System.Collections.Generic;
    using System.Text;[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
    namespace .....
    {
        public class LogUtil
        {
            private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(LogUtil));
            public static void Debug(object message) { Log.Debug(message);}
            public static void Debug(object message, Exception exception) { Log.Debug(message, exception); }
            public static void DebugFormat(string format, params object[] args) { Log.DebugFormat(format, args); }
            ......
        }
    }
      

  8.   

    VS2003是将整个web项目的所有后台cs文件编译成一个dll,因此在项目的Assembly.cs文件里面添加[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)],整个web项目里面就可以使用log4net了

    而VS2005的Web工程每个cs文件,就会被编译成一个临时的dll,这样一种机制下,就算你在Global.asax文件里面手工调用log4net.Config.DOMConfigurator.Configure(new FileInfo("log4net.config"));,那也只能在Global.asax所在的临时dll里面使用log4net对象,而其它的页面后台cs文件是在另外的dll里面了,他们使用log4net对象时,是没有加载配置文件的。
      

  9.   

    应该是没找到你的配置文件的原因,不需要做任何其他配置的。
    你试着把new FileInfo("log4net.config")换成完全限定路径看看
      

  10.   

    欢迎各界.Net初学&高手们加入Q群12757054(要经常在线)
    希望大家的问题能够及时的得到解决.
      

  11.   

    http://www.cnblogs.com/dragon/archive/2005/03/24/124254.aspx