博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Log4Net五部曲
阅读量:6242 次
发布时间:2019-06-22

本文共 5179 字,大约阅读时间需要 17 分钟。

本文主要讲述如何构建封装一个日志工具类,以及在该过程中遇到的问题,

关于Log4Net的介绍,就不详细赘述了,更多详细的技术可参考

在我完成本功能的过程中也详细拜读了他的博客,讲解的很详细。接下来我将我自己完成的Log4Net做一个展示。在本系统中,存在一个基础类库存放LogHelper工具类以及其他一些工具类,一个Web项目Zone用于调用Log,输出log信息,其他不相干的就不介绍了。其实该功能是相对来说都大同小异。项目目录如下:

 

引入log4net.dll文件

首先需要在项目中引入log4net,引用->Nuget包管理->搜索log4net->Apache Log4net->安装即可,或直接在项目中引入log4net.dll文件

二、创建log4net的工具类

创建一个类库,Commons类库,创建一个基础类LogHelper,供其他地方调用

具体代码如下:

///     /// 日志    ///     public class LogHelper    {       //日志级别        private const string ErrorLevel = "Error";        private const string DebugLevel = "Debug";        private const string InfoLevel = "Info";        private const string FatalLevel = "Fatal";        private const string WarningLevel = "Warn";        static LogHelper()        {            var path = AppDomain.CurrentDomain.BaseDirectory + @"log4net.config";            log4net.Config.XmlConfigurator.Configure(new FileInfo(path));        }        #region 获得ILog        ///         /// 根据Log等级获得log        ///         /// Log等级        /// 
public static ILog GetLog(string logLevel) { var log = log4net.LogManager.GetLogger(logLevel); return log; } #endregion #region Info 级别的日志 public static void Info(string message) { var log = GetLog(InfoLevel); if (log.IsInfoEnabled) { log.Info(message); } } #endregion #region Info 级别的日志 public static void Info(string message,Exception ex) { var log = GetLog(InfoLevel); if (log.IsInfoEnabled) { log.Info(message,ex); } } #endregion #region Debug 级别的日志 public static void Debug(string message) { var log = GetLog(DebugLevel); if (log.IsDebugEnabled) { log.Debug(message); } } #endregion #region Debug 级别的日志 public static void Debug(string message,Exception ex) { var log = GetLog(DebugLevel); if (log.IsDebugEnabled) { log.Debug(message,ex); } } #endregion #region Error 级别的日志 public static void Error(string message) { var log = GetLog(ErrorLevel); if (log.IsErrorEnabled) { log.Error(message); } } #endregion #region Error 级别的日志 public static void Error(string message,Exception ex) { var log = GetLog(ErrorLevel); if (log.IsErrorEnabled) { log.Error(message,ex); } } #endregion #region Fatal 级别的日志 public static void Fatal(string message) { var log = GetLog(FatalLevel); if (log.IsFatalEnabled) { log.Fatal(message); } } #endregion #region Fatal 级别的日志 public static void Fatal(string message,Exception ex) { var log = GetLog(FatalLevel); if (log.IsFatalEnabled) { log.Fatal(message,ex); } } #endregion #region Warn 级别的日志 public static void Warning(string message) { var log = GetLog(WarningLevel); if (log.IsWarnEnabled) { log.Warn(message); } } #endregion #region Warn 级别的日志 public static void Waring(string message,Exception ex) { var log = GetLog(WarningLevel); if (log.IsWarnEnabled) { log.Warn(message,ex); } } #endregion }

三、在该类库的AssemblyInfo.cs文件末尾添加

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]

四、创建log4net.config

在调用LogHelper的项目中,创建一个log4net.config,我这里使用的配置内容如下;

关于参数的详细配置,我就不做介绍了,可参考上文提到的博客中有详细介绍(注意,我在loghelper中虽然写了Warn和Fatal级别的日志,但在此配置中没有对这两个级别的日志做配置,故,项目不会产生这两个级别的日志)

修改log4net.config文件的属性为"始终复制"

五、在需要使用Log4Net的项目中添加该类库的引用(本系统就是Commons.dll)

在需要打印log的地方使用。修改

LogHelper.Info("产生LOG");//产生一条Info级别的Log信息

运行项目会在该项目目录下产生log/Debug/当前日期.txt、log/Error/当前日期.txt、log/Info/当前日期.txt.

在本文中红色标注的地方是可能出错的地方,如有异常一定要先检查这些

 

转载于:https://www.cnblogs.com/kingkangstudy/p/7230818.html

你可能感兴趣的文章
webdynpro的select_option示例
查看>>
img src 使用 base64 图片数据
查看>>
MapReduce计算每年最高温度
查看>>
Ruby快速入门
查看>>
UVA 12118 Inspector's Dilemma(连通性,欧拉路径,构造)
查看>>
一台电脑同时运行多个tomcat配置方法
查看>>
让文本框只能输入数字
查看>>
pwnable.kr 之 passcode write up
查看>>
多任务之协程浅谈
查看>>
Qt Creator快捷键
查看>>
idea中lombok的使用
查看>>
网站集成支付宝在线支付
查看>>
mac下安装appium
查看>>
js ---- 函数防抖
查看>>
js call 和 apply
查看>>
CentOS 6.5下Percona Xtrabackup的安装错误解决方案
查看>>
VCS双机+oracle 11gR2+ASM主机名修改
查看>>
转:// LINUX下为ORACLE数据库设置大页--hugepage
查看>>
Linux文件权限与属性详解 之 chattr & lsattr
查看>>
负载均衡集群之LVS配置命令
查看>>