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

 更新时间:2013年12月21日 15:14:07   作者:  
这篇文章主要介绍了.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");

您可能感兴趣的文章:

相关文章

  • .NET 6新特性试用之DateOnly和TimeOnly类型

    .NET 6新特性试用之DateOnly和TimeOnly类型

    这篇文章主要介绍了.NET 6新特性试用之DateOnly和TimeOnly类型,主要介绍DateOnly和TimeOnly类型使用过程及存在的一些过程,需要的小伙伴可以参考一下
    2022-03-03
  • ASP.NET数据绑定GridView控件使用技巧

    ASP.NET数据绑定GridView控件使用技巧

    这篇文章主要为大家详细介绍了ASP.NET数据绑定GridView控件使用技巧,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • .NET读写Excel工具Spire.Xls使用 对数据操作与控制(4)

    .NET读写Excel工具Spire.Xls使用 对数据操作与控制(4)

    这篇文章主要为大家详细介绍了.NET读写Excel工具Spire.Xls使用,对数据操作与控制的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • 使用最小 WEB API 实现文件上传的Swagger支持

    使用最小 WEB API 实现文件上传的Swagger支持

    这篇文章主要介绍了使用最小 WEB API 实现文件上传Swagger支持,我们使用最小 WEB API 实现文件上传功能,虽然客户端访问是正常的,但是当打开 Swagger 页面时,没法使用 Swagger 页面测试,下面就来一篇支持Swagger的,需要的小伙伴可以参考一下
    2022-02-02
  • 把字符串转为HtmlTable演示动画

    把字符串转为HtmlTable演示动画

    怎样将字符串转为.cs页面中的HtmlTable,在论坛上看到了这样一个问题,想试着把它解决下,感兴趣的朋友可以观看下本文的动画,或许对你有所帮助
    2013-03-03
  • WPF中button按钮同时点击多次触发click解决方法

    WPF中button按钮同时点击多次触发click解决方法

    这篇文章主要为大家详细介绍了WPF中button按钮同时点击多次触发click的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • ASP.NET Web.config配置文件详解

    ASP.NET Web.config配置文件详解

    这篇文章主要为大家详细介绍了ASP.NET Web.config配置文件,教大家如何配置Web.config文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • ASP.NET中的Cache使用介绍

    ASP.NET中的Cache使用介绍

    这篇文章主要介绍了ASP.NET中的Cache使用介绍,本文讲解了Cache 是怎么工作的、Cache 怎么创建及怎么销毁、什么时候用cache、cache 调用注意事项等内容,需要的朋友可以参考下
    2015-06-06
  • ASP.NET MVC从视图传参到控制器的几种形式

    ASP.NET MVC从视图传参到控制器的几种形式

    这篇文章主要介绍了ASP.NET MVC从视图传参到控制器的几种形式,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-04-04
  • 配置Visual Studio 以调试.net framework源代码

    配置Visual Studio 以调试.net framework源代码

    看到.net框架代码发布了,兴奋了一下,把在Visual Studio 2008上配置的内容翻译了一下,只翻译了原文的基本步骤,高级用户篇和QA没有翻译。
    2009-04-04

最新评论