一个web站点必须要记录日志,否则哪里出错了,完全是黑娃找黑妹,两眼一抹黑。

最常用的就是log4net日志组件。我们可以通过扩展加入日志组件。

第一步:在项目中NuGet log4net包,即 Install-Package log4net

第二步:添加log4net.config配置文件到项目中;

第三步:在项目中新建一个LogExtension类,代码如下所示:

public static partial class LogExtension {
        //配置文件,我将之放在站点根目录的Config文件夹中
        private static string Log4netConfigureName => "Config/log4net.config";

        //日志仓储的名称
        private static string RepositoryName => "Log4NetLogRepository";

        //全局使用一个日志仓储。
        //注意:不允许定义多个同名的日志仓储。
        public static ILoggerRepository Repository => LogManager.CreateRepository(RepositoryName);

        static LogExtension() {
            //配置已经被实例化的日志仓储
            XmlConfigurator.Configure(Repository, new FileInfo(Log4netConfigureName));
        }

        /// <summary>
        /// 获取ILog实例
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public static ILog GetLog(this Type type) {
            if (type == null)
                throw new ArgumentNullException();
            //只要有了日志仓库,就可以得到一个ILog的实例。因此,在这之前必须实例化一个日志仓储
            return LogManager.GetLogger(RepositoryName, type);
        }

        /// <summary>
        /// 获取ILog实例
        /// </summary>
        /// <typeparam name="TEntity"></typeparam>
        /// <param name="entity"></param>
        /// <returns></returns>
        public static ILog GetLog<TEntity>(this TEntity entity) where TEntity : class {
            //只要有了日志仓库,就可以得到一个ILog的实例。因此,在这之前必须实例化一个日志仓储
            return LogManager.GetLogger(RepositoryName, typeof(TEntity));
        }
    }

第四步:使用方式见下图:

是不是很方便?简直不要太方便了!

 

 posted on 2018-09-14 18:21  F风  阅读(293)  评论(1编辑  收藏  举报