log4net 文章集

基本介绍(略)

下载:
http://logging.apache.org/log4net/downloads.html

模式一览

编号 设计模式 作用
1 工厂方法 创建Logger和Plugin
2 模板方法 在DoAppend中调用抽象的Append方法,这个方法在子类中实现
3 桥接    使不同的形式的日志和不同记录方式的日志任意组合
4 适配器 适配Layout和RawLayout
5 职责链 事件过滤对象组成职责链
6 原型 实现PluginCollection和AppenderCollection的复制
7 迭代器 实现对PluginCollection和AppenderCollection元素的遍历访问

log4net架构UML图

Log4net 概貌

Log4net结构(一)——Logger

Log4net结构(二)——Repository,Appender,Layout


log4net结构(三)——配置文件

Log4Net Appender 之 ADONetAppender

基本配置 

         上面配置中的第3行配置了日志中的缓存的收集的事件的最大数目。这里设置了100,日志缓存中的数目达到100时,Log就会将缓存的日志写入数据库,并清空缓存。当log4net关闭时,log4net会自动把日志写入数据库,尽管没有达到100。

        如果不配置BufferSize,那么默认值是512.

数据库连接配置

        上面配置中的第4到第6行显示了数据库连接的配置。

        ConnectionType设置了使用什么类型的数据库连接,例子中使用的是SqlConnection,这里,ConnectionType需要的是继承自IDbConnection接口的类所在的Assembly的FullName。

        ConnectionString则是对应的数据连接的连接字符串。

        CommandText是SQL命令字符串,这里使用的是SQL语句,当然,也可以使用存储过程,如果使用存储过程,那么需要增加一项配置如下


<Param name="CommandType" value="StoredProcedure"/>

(例子下载)


log4net 1.2.9 的配置及使用

Using log4net

查看程序集的FullName

using System.Threading;

using System.IO;
using System.Reflection;
using System.Reflection.Emit;
using System.Configuration.Assemblies;

        
private void Button2_Click(object sender, System.EventArgs e)
        
{
            
try
            
{
                AssemblyName myAssemblyName 
= new AssemblyName();
                myAssemblyName.CodeBase 
= Server.MapPath("System.Data.dll");

                Assembly[] myAssemblies 
= Thread.GetDomain().GetAssemblies();

                
// Get the dynamic assembly named 'MyAssembly'. 
                Assembly myAssembly = null;
                
for(int i = 0; i < myAssemblies.Length; i++)
                
{
                    
if(String.Compare(myAssemblies[i].GetName().Name, "System.Data"== 0)
                        myAssembly 
= myAssemblies[i];
                }


                
if(myAssembly != null)
                
{
                    Response.Write(
"<hr>");
                    Response.Write(myAssembly.GetName().FullName);
                    Response.Write(
"<hr>");

                }

            }

            
catch(Exception ex)
            
{
                
//Loggerlog4net l4 = new Loggerlog4net();
                
//l4.LogException("GetPublicKey",ex);
            }

        }

posted on 2005-06-28 15:04  myx  阅读(1971)  评论(1编辑  收藏  举报