MVC 框架搭建步奏1日志

1.日志部分

首先是一个日志接口

 public interface ILogger
    {
        /// <summary>
        /// 检查level级别的日志是否启用
        /// </summary>
        /// <param name="level">日志级别<seealso cref="T:Rosefinch.Core.Logging.LogLevel" /></param>
        /// <returns>如果启用返回true,否则返回false</returns>
        bool IsEnabled(LogLevel level);
        /// <summary>
        /// 记录level级别的日志
        /// </summary>
        /// <param name="level">日志级别<seealso cref="T:Rosefinch.Core.Logging.LogLevel" /></param>
        /// <param name="message">需记录的内容</param>
        void Log(LogLevel level, object message);
        /// <summary>
        /// 记录level级别的日志
        /// </summary>
        /// <param name="level">日志级别<seealso cref="T:Rosefinch.Core.Logging.LogLevel" /></param>
        /// <param name="message">需记录的内容</param>
        /// <param name="exception">异常</param>
        void Log(LogLevel level, Exception exception, object message);
        /// <summary>
        /// 记录level级别的日志
        /// </summary>
        /// <param name="level">日志级别<seealso cref="T:Rosefinch.Core.Logging.LogLevel" /></param>
        /// <param name="format">需记录的内容格式<see cref="M:System.String.Format(System.String,System.Object[])" /></param>
        /// <param name="args">替换format占位符的参数</param>
        void Log(LogLevel level, string format, params object[] args);

接着是日志工厂接口

 public interface ILoggerFactory
    {
        /// <summary>
        /// 依据LoggerName获取<see cref="T:Rosefinch.Core.Logging.ILogger" />
        /// </summary>
        /// <param name="loggerName">日志名称(例如:log4net的logger配置名称)</param>
        /// <returns><see cref="T:Rosefinch.Core.Logging.ILogger" /></returns>
        ILogger GetLogger(string loggerName);

        /// <summary>
        /// 依据LoggerName获取<see cref="T:Rosefinch.Core.Logging.ILogger" />
        /// </summary>
        /// <returns><see cref="T:Rosefinch.Core.Logging.ILogger" /></returns>
        ILogger GetLogger();
    }

日志等级枚举

  public enum LogLevel
    {
        Debug,
        Information,
        Warning,
        Error,
        Fatal
    }

日志的实现

 using log4net;

    /// <summary>
    /// 用Log4Net实现的ILogger
    /// </summary>
    public class Log4NetLogger : ILogger
    {
        private ILog log;

        internal Log4NetLogger(ILog log)
        {
            this.log = log;
        }

        /// <summary>
        /// 检查level级别的日志是否启用
        /// </summary>
        /// <param name="level">日志级别<seealso cref="T:Rosefinch.Core.Logging.LogLevel" /></param>
        /// <returns>如果启用返回true,否则返回false</returns>
        public bool IsEnabled(LogLevel level)
        {
            switch (level)
            {
                case LogLevel.Debug:
                    return this.log.IsDebugEnabled;
                case LogLevel.Information:
                    return this.log.IsInfoEnabled;
                case LogLevel.Warning:
                    return this.log.IsWarnEnabled;
                case LogLevel.Error:
                    return this.log.IsErrorEnabled;
                case LogLevel.Fatal:
                    return this.log.IsFatalEnabled;
                default:
                    return false;
            }
        }

        /// <summary>
        /// 记录level级别的日志
        /// </summary>
        /// <param name="level">日志级别<seealso cref="T:Rosefinch.Core.Logging.LogLevel" /></param>
        /// <param name="message">需记录的内容</param>
        public void Log(LogLevel level, object message)
        {
            if (!this.IsEnabled(level))
            {
                return;
            }
            switch (level)
            {
                case LogLevel.Debug:
                    this.log.Debug(message);
                    return;
                case LogLevel.Information:
                    this.log.Info(message);
                    return;
                case LogLevel.Warning:
                    this.log.Warn(message);
                    return;
                case LogLevel.Error:
                    this.log.Error(message);
                    return;
                case LogLevel.Fatal:
                    this.log.Fatal(message);
                    return;
                default:
                    return;
            }
        }

        /// <summary>
        /// 记录level级别的日志
        /// </summary>
        /// <param name="level">日志级别<seealso cref="T:Rosefinch.Core.Logging.LogLevel" /></param>
        /// <param name="message">需记录的内容</param>
        /// <param name="exception">异常</param>
        public void Log(LogLevel level, System.Exception exception, object message)
        {
            if (!this.IsEnabled(level))
            {
                return;
            }
            switch (level)
            {
                case LogLevel.Debug:
                    this.log.Debug(message, exception);
                    return;
                case LogLevel.Information:
                    this.log.Info(message, exception);
                    return;
                case LogLevel.Warning:
                    this.log.Warn(message, exception);
                    return;
                case LogLevel.Error:
                    this.log.Error(message, exception);
                    return;
                case LogLevel.Fatal:
                    this.log.Fatal(message, exception);
                    return;
                default:
                    return;
            }
        }

        /// <summary>
        /// 记录level级别的日志
        /// </summary>
        /// <param name="level">日志级别<seealso cref="T:Rosefinch.Core.Logging.LogLevel" /></param>
        /// <param name="format">需记录的内容格式<see cref="M:System.String.Format(System.String,System.Object[])" /></param>
        /// <param name="args">替换format占位符的参数</param>
        public void Log(LogLevel level, string format, params object[] args)
        {
            if (!this.IsEnabled(level))
            {
                return;
            }
            switch (level)
            {
                case LogLevel.Debug:
                    this.log.DebugFormat(format, args);
                    return;
                case LogLevel.Information:
                    this.log.InfoFormat(format, args);
                    return;
                case LogLevel.Warning:
                    this.log.WarnFormat(format, args);
                    return;
                case LogLevel.Error:
                    this.log.ErrorFormat(format, args);
                    return;
                case LogLevel.Fatal:
                    this.log.FatalFormat(format, args);
                    return;
                default:
                    return;
            }
        }

日志工厂的实现

 public class Log4NetFactory:ILoggerFactory
    {

        private static bool _isConfigLoaded;
        /// <summary>
        /// 构造函数(默认加载"~/Config/log4net.config"作为log4net配置文件)
        /// </summary>
        public Log4NetFactory()
            : this("~/Config/log4net.config")
        {
        }
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="configFilename">
        ///     <remarks>
        ///         <para>log4net配置文件路径,支持以下格式:</para>
        ///         <list type="bullet">
        ///             <item>~/config/log4net.config</item>
        ///             <item>~/web.config</item>
        ///             <item>c:\abc\log4net.config</item>
        ///         </list>
        ///     </remarks>
        /// </param>
        public Log4NetFactory(string configFilename)
        {
            if (!_isConfigLoaded)
            {
                if (string.IsNullOrEmpty(configFilename))
                {
                    configFilename = "~/Config/log4net.config";
                }
                System.IO.FileInfo fileInfo = new System.IO.FileInfo(WebUtility.GetPhysicalFilePath(configFilename));
                if (!fileInfo.Exists)
                {
                    throw new ApplicationException(string.Format("log4net配置文件 {0} 未找到", fileInfo.FullName));
                }

                XmlConfigurator.Configure(fileInfo);
                _isConfigLoaded = true;
            }
        }
        /// <summary>
        /// 依据LoggerName获取<see cref="T:Rosefinch.Core.Logging.ILogger" />
        /// </summary>
        /// <param name="loggerName">日志名称(例如:log4net的logger配置名称)</param>
        /// <returns><see cref="T:Rosefinch.Core.Logging.ILogger" /></returns>
        public ILogger GetLogger(string loggerName)
        {
            return new Log4NetLogger(LogManager.GetLogger(loggerName));
        }

        public ILogger GetLogger()
        {
            return new Log4NetLogger(LogManager.GetLogger("Rosefinch"));
        }
时间: 2024-11-13 09:30:39

MVC 框架搭建步奏1日志的相关文章

Spring MVC 框架搭建及详解

一.Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0) 1. jar包引入 Spring 2.5.6:spring.jar.spring-webmvc.jar.commons-logging.jar.cglib-nodep-2.1_3.jar Hibernate 3.6.8:hibernate3.jar.hibernate-jpa-2.0-api-1.0.1.Final.jar.antlr-2.7.6.jar.commons-collections-3

Spring3.2 MVC框架搭建

Spring3.2 MVC框架搭建 Java开发 > 分享 > Java框架 转自:http://www.liutime.com/javainfo/2255/ ————————————————————————————————————————————————— 最近struts2曝的漏洞比较严重,特别写上Spring MVC框架搭建及使用教程 最新的jar包请到Spring官方网站下载:http://www.springsource.org/spring-community-download 1

Spring MVC 框架搭建及具体解释

如今主流的Web MVC框架除了Struts这个主力 外.其次就是Spring MVC了,因此这也是作为一名程序猿需要掌握的主流框架.框架选择多了.应对多变的需求和业务时,可实行的方案自然就多了. 只是要想灵活运用Spring MVC来应对大多数的Web开发,就必需要掌握它的配置及原理. 一.Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0) 1. jar包引入 Spring 2.5.6:spring.jar.spring-webmvc.jar.com

Spring MVC框架搭建

Spring MVC篇一.搭建Spring MVC框架 本项目旨在搭建一个简单的Spring MVC框架,了解Spring MVC的基础配置等内容. 一.项目结构 本项目使用idea intellij创建,配合maven管理.整体的目录结构如图: 其中java文件夹是sources文件夹,resources是资源文件夹.spring文件夹里是Spring上下文配置和Spring MVC配置文件. 需要注意的是,项目自动生成以后会有两个web文件目录,一个是web文件夹(我这里已经删除了),另一个

Spring MVC框架搭建及运行流程

一.搭建Spring MVC框架步骤 1.创建Dynamic Web Project 2.导入spring和springmvc所需要的文件(jar包) 3.配置web.xml文件 <span style="font-size:18px;"> <span style="font-size:14px;"> <!-- Spring 配置文件位置 --> <context-param> <param-name>co

MVC 框架搭建

1.0 初步建立目录和项目 2.0 设置层之间的引用 IRepository引用 ModelRepository引用 Model,IRepositoryIServices引用 Model,IRepositoryServices引用 Model,IRepository,IServicesSite引用 Model,Common,IServices,WebHelperWebHelper引用System.Web.Mvc,IServicesCommon引用:system.web,system.web.Ex

预约系统(二) MVC框架搭建

采用VS2013,自带的MVC4来搭建 MODEL层,表对象的建立: T_Bm.cs 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace Reservation.MODEL 8 { 9 public class T_Bm 10 { 11 /// <summary> 12

使用mvc框架搭建跟人站点

1.使用工具  vs .iis 2.新建一个ASP.net mvc 项目.并写好必要的代码 3.解决方案管理器,项目右键.发布 4. 创建配置文件 弹出网站发布设置面板,点击自定义,创建新的发布配置文件: 输入你自己定义的配置文件名(这里随便输入),如下图所示: 3 选择连接方式 在发布方法中选"文件系统",这样我们可以发布到自己指定的本机文件上,如下图所示: 4 选择自己指定的文件夹:通过点击下图中右上角红色箭头处创建新的文件夹,自定义命名(我的就写WebSite).点击打开,进入下

spring MVC 框架的搭建(myeclipse +maven)--(上)

spring mvc 的框架搭建过程如下,这个框架建议新手去看,因为搭建的是一个比较简单的矿建,当然里面涉及到的spring +hibernate相关的知识,是值得学习的. 这个项目是基于maven的主要是maven 能够很好的帮我们管理jar 包. spring mvc 框架搭建过程如下: 第一步:使用maven引入springMVC所需要的jar包 引入与springmvc相关的jar包,在pom.xml的<dependencise>标签下添加以下3个jar包 (1) spring-web