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

 这篇文章主要介绍了.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-09-08 07:10:38

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

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

日志很明显是帮助大家定位到问题的一个很重要的手段,本来是想直接使用的NLog 来做系统的日志工具,哎伤不起,一变态非要说这个有很多不可控制的因素,这里我给大家讲一下我是怎么实现日志模块的,欢迎拍砖 总体架构图 •    在这里我把日子的等级分为 跟踪,BUG 和错误 3种  定义枚举如下 复制代码 代码如下: /// <summary>    /// 日志等级    /// </summary>    public enum Loglevel    {        Track=1

树形菜单求助 ,不知道从何下手。求大咖们帮帮讲讲思路 要是有代码就更好了。

问题描述 树形菜单求助 ,不知道从何下手.求大咖们帮帮讲讲思路 要是有代码就更好了. 左边为国家的省份,子菜单为省份的市级单位,右边卫市级单位的区.数据是从数据库区的.括号内的数字为选中的个数.从数据库去出来的数据类似于 id:01, name:黑龙江省,市区的LIST. 在前台页面怎遍历这个树形菜单还可以联动 求助大咖们 图片地址:http://a.hiphotos.bdimg.com/album/s%3D1000%3Bq%3D90/sign=3cccf467caef7609380b9d9f1

php ,ajax 二级联动,求思路,求代码

问题描述 php ,ajax 二级联动,求思路,求代码 用ajax写一个二级联动,不需要数据库,说一下思路,新人求代码 解决方案 类似下面这样,实际多少级联动都差不多,关键事件触发ajax,然后获取数据进行加载http://blog.csdn.net/shunyea/article/details/8443902 数据库http://www.thinksaas.cn/group/topic/346669/ 无数据库 解决方案二: 可以存session,或者存在application(java e

监控系统设计思路

监控系统设计思路     通过SNMP抓取数据,如果SNMP无法取得的数据通过代理获取 通过IMPI监控服务器的硬件设备,包括温度,电源等等 监控分为内/外两个部分,外部主要针对端口扫描,ping,dns解析等等,通过web driver 实现自动化模拟用户行为,如:用户登录,购物,提交评论等等等:内部主要是接口与接口,模块与模块等等之间的交叉调用.除了流量,cpu,内存等等意外.在应用程序中埋入探针,可实时反映出运用程序的运行状态 同时对数据库数据异常变化也纳入监控范围.  

用xml解析word文档,怎样解析,求思路,求代码,以及文档中图片和公式的解析

问题描述 用xml解析word文档,怎样解析,求思路,求代码,以及文档中图片和公式的解析 用xml解析word文档,怎样解析,求思路,求代码,以及文档中图片和公式的解析,请问哪位大神做过??? 解决方案 需求是什么呢?用什么语言,你说的xml解析word文档是什么意思呢? java里面对word文档的操作有POI工具包可以使用.

android-Android中在左边选择模版在右边拼图,求怎么思路,有代码最好!!求大神啊!!

问题描述 Android中在左边选择模版在右边拼图,求怎么思路,有代码最好!!求大神啊!! 左边有模版,我可以点击选择左边的模版在 右边的工作区间拼图 随便我怎么拼 最好是可以拖动过来拼 右边有模版 左边是空的 我可以在左边任意的选择一个模版 然后在右边随意的拼凑 每次放张图就占有空间 模版不能叠在一起 解决方案 用webView? 然后找类似html,js类似的案例.. 解决方案二: 这是要做游戏吗?我也想知道这个问题的解法,有人有答案也回复我一下!

用PHP代替JS玩转DOM的思路及示例代码

  事情的起源比较简单,我需要把一个导航页的数据整理好写入数据库.一个比较直观的方法是对html文件进行分析,通用的方法是用php的正则表达式来匹配.但是这样做开发和维护都很困难,代码可读性非常差. 导航页的数据都是规则的排列在DOM树当中的,用JS可以用几个循环轻松的对其进行操作,而且JS需要依赖浏览器,操作数据库很困难.其实PHP就有现成的类库对DOM树种的节点进行增删改查操作,在此做一些笔记. 这里涉及到2个类 DOMDocument 和 DOMXPath. 其实思路比较明确,就是通过DO

C语言对堆排序一个算法思路和实现代码_C 语言

算法思想简单描述: 堆排序是一种树形选择排序,是对直接选择排序的有效改进. 堆的定义如下:具有n个元素的序列(h1,h2,...,hn),当且仅当满足(hi>=h2i,hi>=2i+1)或(hi<=h2i,hi<=2i+1)(i=1,2,...,n/2)时称之为堆.在这里只讨论满足前者条件的堆. 由堆的定义可以看出,堆顶元素(即第一个元素)必为最大项.完全二叉树可以很直观地表示堆的结构.堆顶为根,其它为左子树.右子树. 初始时把要排序的数的序列看作是一棵顺序存储的二叉树,调整它们的

python重构日志监控脚本的程序代码

先看代码: nginx日志监控脚本Python #!/usr/bin/python2.6 #coding=utf-8 import os import time #日志记录 num_file = '/data/www/www.111cn.net/log/num' log_file = '/data/www/www.111cn.net/log/www.111cn.net.log' #ip屏蔽函数 def shellcmd(ip,con):     os.system('/root/shell/ng