.NET 日志系统设计思路及实现代码_实用技巧

日志很明显是帮助大家定位到问题的一个很重要的手段,本来是想直接使用的NLog 来做系统的日志工具,哎伤不起,一变态非要说这个有很多不可控制的因素,这里我给大家讲一下我是怎么实现日志模块的,欢迎拍砖

总体架构图

•    在这里我把日子的等级分为 跟踪,BUG 和错误 3种  定义枚举如下

复制代码 代码如下:

/// <summary>
    /// 日志等级
    /// </summary>
    public enum Loglevel
    {
        Track=1,
        Bug,
        Error
    }

•    这里考虑日志的模块的可扩展性 (这里支持 数据库 和文件 2种方式)  这里使用适配器模式来完成本模块。 这里给大家来年终福利。贴点代码
定义一个接口ILogTarget

复制代码 代码如下:

public interface ILogTarget
    {
        /// <summary>
        /// 写入追踪信息
        /// </summary>
        /// <param name="LogContent"></param>
        void WriteTrack(string LogContent);

        /// <summary>
        /// 写入BUG信息
        /// </summary>
        /// <param name="LogContent"></param>
        void WriteBug(string LogContent);

        /// <summary>
        /// 写入错误信息
        /// </summary>
        /// <param name="LogContent"></param>
        void WriteError(string LogContent);

    }

•     FileLog ,和DBLog 2个类实现上面的接口 这里不贴上具体的现实

复制代码 代码如下:

/// <summary>
    /// 文件日志实现类
    /// </summary>
    public class FileLog : ILogTarget
    {
        public void WriteTrack(string LogContent)
        {
            throw new NotImplementedException();
        }

        public void WriteBug(string LogContent)
        {
            throw new NotImplementedException();
        }

        public void WriteError(string LogContent)
        {
            throw new NotImplementedException();
        }
    }

复制代码 代码如下:

public class DBLog : ILogTarget
    {
        public void WriteTrack(string LogContent)
        {
            throw new NotImplementedException();
        }

        public void WriteBug(string LogContent)
        {
            throw new NotImplementedException();
        }

        public void WriteError(string LogContent)
        {
            throw new NotImplementedException();
        }
    }

复制代码 代码如下:

public class SmartLog
    {
        private ILogTarget _adaptee;

        public SmartLog(ILogTarget tragent)
        {
            this._adaptee = tragent;
        }
        public void WriteTrack(string LogContent)
        {
            _adaptee.WriteTrack(LogContent);
        }

        public void WriteBug(string LogContent)
        {
            _adaptee.WriteBug(LogContent);
        }

        public void WriteError(string LogContent)
        {
            _adaptee.WriteError(LogContent);
        }
    }

•   调用方式

复制代码 代码如下:

SmartLog log =new SmartLog (new FileLog());

log.WriteTrack("Hello word");

时间: 2024-10-25 06:58:40

.NET 日志系统设计思路及实现代码_实用技巧的相关文章

ASP.NET简化编辑界面解决思路及实现代码_实用技巧

简化用户操作界面,添加功能一般没法简化,但是如果是在GridView做显示,编辑,更新与删除,会让用户在编辑,需要点击编辑铵钮,再进行编辑,或是取消编辑. 为了解决这个问题,Insus.NET想到一些改进的方法.可以参考下面演示: 以下内容于2011-11-07 9:20添加: 上面实现,只是使用Table加上GridView来组合. 其中,Gridveiw直接使用ItemTemplate模版,省略了EditItemTemplate模版.事件也省略了OnRowEditing与OnRowCance

.NET 日志系统设计思路及实现代码

 这篇文章主要介绍了.NET 日志系统设计思路及实现代码,有需要的朋友可以参考一下 日志很明显是帮助大家定位到问题的一个很重要的手段,本来是想直接使用的NLog 来做系统的日志工具,哎伤不起,一变态非要说这个有很多不可控制的因素,这里我给大家讲一下我是怎么实现日志模块的,欢迎拍砖   总体架构图     •    在这里我把日子的等级分为 跟踪,BUG 和错误 3种  定义枚举如下      代码如下: /// <summary>     /// 日志等级     /// </summa

MVC4制作网站教程第四章 部分栏目功能实现代码_实用技巧

序 一.用户 二.用户组 三.栏目 3.1添加栏目 3.2浏览栏目 3.3更新栏目 3.4删除栏目 3.5前台栏目浏览 -- 栏目模型: 模型应有一下字段:栏目名称,父栏目id,栏目类型,内容模型,栏目视图,内容视图,链接地址,栏目排序.暂时先想到这么多,先这这么写着.  栏目名称和父栏目id不用说很简单.  栏目类型有三种:普通栏目-就是一般的栏目:单页栏目--是指栏目就是一个页面,像公司介绍,联系地址等:外部链接-是指栏目点一下就跳转到一个链接.  内容模型--是指栏目为普通栏目时,栏目的内

MVC4制作网站教程第二章 部分用户功能实现代码_实用技巧

用户部分要实现的功能有: 序 一.用户  1.1用户注册  1.2用户登录  1.3修改密码  1.4修改资料 要实现这些目的首先新建用户(Model)模型 /// <summary> /// 用户模型 /// </summary> public class User { [Key] public int UserId { get; set; } /// <summary> /// 用户组Id /// </summary> [Display(Name=&qu

.net jMail邮件发送(含抄送、密送、多发、日志记录)实例代码_实用技巧

jmail是一个第三方邮件操作组件,通常位于web服务器端,实现收邮件及发邮件功能(客户端用Foxmail这类就很好了).可以利用它轻松实现发邮件.抄送.密送.多发.日志记录及收邮件功能.本章要讲的,就是:发邮件.抄送.密送.多发.日志记录. 一.组件准备下载JMail44_pro并安装(记下安装路径) 找到安装路径,将其中的jmail.dll复制到项目中 二.核心发送代码新建MailAPI.cs,并输入以下代码 复制代码 代码如下: using System;using System.Coll

Global.asax的Application_Error实现错误记录/错误日志的代码_实用技巧

利用Global.asax的Application_Error实现错误记录 错误日志 复制代码 代码如下: void Application_Error(object sender, EventArgs e) { // 在出现未处理的错误时运行的代码 Exception ex = Server.GetLastError().GetBaseException(); StringBuilder str = new StringBuilder(); str.Append("\r\n" + D

ASP.Net中英文复合检索文本框实现思路及代码_实用技巧

前段时间,写一个用户部门的管理页面,需要对后台获取的用户数据实现英汉检索功能. 同时,选定一个选项之后,需要触发事件与后台交互,将该用户所在的部门显示到页面右边的ListBox控件中.       一.Dojo的FilteringSelect组件实现拼音检索功能 在网上有不少相关的介绍,其中比较经典的有"海盗乱语"的关于重写Dojo的FilteringSelect组件实现拼音检索功能的介绍(地址http://cosbor.web-144.com/?p=38.http://cosbor.

Json数据转换list对象实现思路及代码_实用技巧

JSON代码: 复制代码 代码如下: [{"cId":2,"cName":"\u767d\u841d\u535c","amount":26,"price":"17"},{"cId":3,"cName":"\u80e1\u841d\u535c","amount":21,"price":&qu

Repeater全选删除和分页实现思路及代码_实用技巧

复制代码 代码如下: <script type="text/javascript"> function SelectAll(box) { for(var i=0;i <document.form1.elements.length;i++) { var e=document.form1.elements[i]; if((e.type=='checkbox')) { var o=e.name.lastIndexOf('cbx'); if(o!=-1) { e.checke