一个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)); } }
第四步:使用方式见下图:
是不是很方便?简直不要太方便了!