在上一篇文章中,实现了利用Log4Net记录系统中出现的问题。如果同时还需要记录用户操作的监控日志,就需要一些修改

修改Web.Cofig配置文件 ,增加一个logger节点和appender节点,用于监控操作日志配置,并且设置不同的日志文件路径,如下图所示:

<log4net><!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL --><!-- Set root logger level to ERROR and its appenders --><!--<root><level value="ALL"/><appender-ref ref="ErrorLogger"/><appender-ref ref="ErrorLogger"/></root>--><!-- Print only messages of level DEBUG or above in the packages --><logger name="ErrorLogger"><!--这里进一步限制了日志级别,只有在大于等于DEBUG的情况下才会记录日志--><level value="DEBUG"/><appender-ref ref="SysAppender"></appender-ref></logger><appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net" ><!--日志放在项目的App_Data文件夹--><param name="File" value="Logs\\Error\\" /><!--日志以追加形式记录--><param name="AppendToFile" value="true" /><!--日期作为回滚:日期排序--><param name="RollingStyle" value="Date" /><!--设置日志文件名称的生成规则 --><param name="DatePattern" value="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;" /><!--日志文件是否静态:否--><param name="StaticLogFileName" value="false" /><!--日志格式的内容和布局--><layout type="log4net.Layout.PatternLayout,log4net"><param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /><param name="Header" value="
----------------------header--------------------------
" /><param name="Footer" value="
----------------------footer--------------------------
" /></layout></appender><logger name="CommonLogger"><!--这里进一步限制了日志级别,只有在大于等于DEBUG的情况下才会记录日志--><level value="DEBUG"/><appender-ref ref="CommonAppender"></appender-ref></logger><appender name="CommonAppender" type="log4net.Appender.RollingFileAppender,log4net" ><!--日志放在项目的App_Data文件夹--><param name="File" value="Logs\\Common\\" /><!--日志以追加形式记录--><param name="AppendToFile" value="true" /><!--日期作为回滚:日期排序--><param name="RollingStyle" value="Date" /><!--设置日志文件名称的生成规则 --><param name="DatePattern" value="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;" /><!--日志文件是否静态:否--><param name="StaticLogFileName" value="false" /><!--日志格式的内容和布局--><layout type="log4net.Layout.PatternLayout,log4net"><param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /><param name="Header" value="
----------------------header--------------------------
" /><param name="Footer" value="
----------------------footer--------------------------
" /></layout></appender><appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net"><layout type="log4net.Layout.PatternLayout,log4net"><param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /></layout></appender></log4net>

修改Global.asax.cs中Application_Start()方法中原来的队列代码中的这句代码,变为系统问题型日志,如下图所示:

ThreadPool.QueueUserWorkItem(o =>
{while (true){if (MyErrorAttribute.ExceptionQueue.Count > 0){Exception ex = MyErrorAttribute.ExceptionQueue.Dequeue();if (ex != null){log4net.ILog logger = log4net.LogManager.GetLogger("ErrorLogger");//修改为和WebConfig中<logger name="ErrorLogger">一样logger.Error(ex.ToString());}else{Thread.Sleep(50);}}else{Thread.Sleep(50);}}
});

在要监控用户操作的地方,加上如下图中的代码,用来打印监控日志:

    public class HomeController : Controller{public static log4net.ILog log = log4net.LogManager.GetLogger("CommonLogger");//定义为用户监控日志,对应WebConifg中的<logger name="CommonLogger">public ActionResult About(){int result = 0;int x = 1, y = 0;result = x / y;//系统报错日志ViewBag.Message = "Your application description page.";return View();}public ActionResult Contact(){log.Error("好像出错了");//写入自定义的普通监控日志ViewBag.Message = "Your contact page.";return View();}}

使用效果如下图所示:

Common文件夹下的日志:

Error文件夹下的日志:

总结:

Log4Net 有3个主要组件:loggers、appenders 和 layouts。这三个组件一起工作式使得开发者能够根据信息类型和等级level记录信息,以及在运行时控制信息的格式化和信息的的写入位置(如控制台、文件、内存、数据库等)。过滤器帮助这些组件控制追加器(appender)的行为和把对象转换成字符串的对象渲染。

Appender:可以将日志输出到不同的地方,不同的输出目标对应的不同的 Appender,如RollingFileAppender(滚动文件)、AdoNetAppender(数据库)、SmtpAppender(邮件)等。

level(级别):标识这条日志信息的重要级别。None>Fatal>Error>Warn>DEBUG>INFO>ALL.设定一个level,那么低于这个level等级的日志是不会被写到Appender中的。

Log4Net还可以设定多个Appender,可以实现同时将日志记录到文件、数据、发送邮件等:可以设定不同的Appender的不同Level,可以实现普通级别都记录到文件、Error以上级别都发送邮件:可以实现对不同的类设定不同Appender:开可以自定义 Appender,自己实现将Error信息发短信等。

ASP.NET MVC 使用Log4Net在不同目录中记录不同类型的日志相关推荐

  1. asp.net mvc中用 log4net记录日志到数据库中

    1.log4net官网配置相关,创建数据库 http://logging.apache.org/log4net/release/config-examples.html CREATE TABLE [d ...

  2. ASP.NET+MVC+使用+Log4net+记录日志笔记

    前言: 记录系统中的日志,是一个好的项目产品必备的一个环节.每一个产品最终的目的都是要交予客户使用,因为程序员代码的开发水平参差不齐,Bug就成为了项目运维成本最大的因素之一.如何降低项目运维的成本呢 ...

  3. C# Asp.Net6 MVC,Log4net NLog 日志插件应用 及Windows、Liux环境下程序发布

    C# Asp.Net6 MVC,Log4net NLog 日志插件应用 及Windows.Liux环境下程序发布 一. MVC含义 二.数据传输 1.控制器向视图传输数据 三.日志组件Log4net ...

  4. linux发送日志命令,linux:记录不同用户使用的命令发送到指定的目录中(可发送到日志服务器中)...

    一,首先要写一个记录shell执行的每一条命令的脚本,放入到/etc/profile.d/ 目录中 #记录shell执行的每一条命令 export PROMPT_COMMAND='\ if [ -z  ...

  5. ASP.NET MVC 使用 Log4net 记录日志

    Log4net 介绍 Log4net 是 Apache 下一个开放源码的项目,它是Log4j 的一个克隆版.我们可以控制日志信息的输出目的地.Log4net中定义了多种日志信息输出模式.它可以根据需要 ...

  6. ASP.NET MVC使用log4net

    本文介绍如何在ASP.NET MVC中使用log4net来记录日志文件. 参考链接: https://www.codeproject.com/Articles/823247/How-to-use-Ap ...

  7. ASP.NET MVC 使用Log4Net记录系统运行中问题

    log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介. 在NuGet程序包中下载log4Net组件, ...

  8. ASP.NET Core使用静态文件、目录游览与MIME类型管理

    前言 今天我们来了解了解ASP.NET Core中的静态文件的处理方式. 以前我们寄宿在IIS中的时候,很多静态文件的过滤 和相关的安全措施 都已经帮我们处理好了. ASP.NET Core则不同,因 ...

  9. mvc怎么单独引用css文件,关于asp.net mvc:如何在剃刀视图中引用.css文件?

    我知道如何在layout.cshtml文件上设置.css文件,但是在每个视图的基础上应用样式表呢? 我在这里的想法是,在layout.cshtml中,您可以使用标记,但在非布局视图中不能这样做.标签在 ...

最新文章

  1. FPGA之道(35)Verilog中的并行与串行语句
  2. asin c语言中 返回值范围_大学C语言考试易错知识点总结
  3. 面试必问:读写一致性,你需要思考的问题
  4. Linux的帧缓冲设备
  5. With you With me
  6. shell获取命令结果返回行数(行个数)
  7. Deepin2014 QT Creator安装
  8. Spark-submit执行流程,了解一下
  9. 有没有想过,你眼中的SQL进阶,别人看来连入门都不是?
  10. CentOS中恢复rm命令误删文件
  11. 前端 java_WEB前端与JAVA的区别
  12. 网络信息安全基本属性
  13. mifs算法 matlab,信息安全工程师教程协议分析深度流检测技术(DFI)真题习题与考点...
  14. python绘制箭头_python如何绘制坐标箭头?
  15. 读论文:(nvdiffrec) Extracting Triangular 3D Models, Materials, and Lighting From Images
  16. office2010 手动卸载和安装提示
  17. FastDB 很难得的一篇分析
  18. 单片机与PC机的交流———基于STM32的串口通信
  19. 王茂斋拳架_王茂斋太极功(接近传奇,从读懂原著开始;吴式太极拳北派宗师王茂斋,门人杨禹廷、刘晚苍、王培生等名家辈出;《太极功源流支派论》《三十二目》)...
  20. ps cs6导出html,Photoshop CS6新功能:软件设置和预置迁移

热门文章

  1. NEO从源码分析看共识协议
  2. Python.with.context-manager
  3. eclipse的tomcat运行mave web项目
  4. libgdx游戏引擎开发笔记(十三)SuperJumper游戏例子的讲解(篇七)----各个物体的创建及其碰撞检测...
  5. Spring的组件赋值以及环境属性@PropertySource
  6. [转载] Java笔试题集锦
  7. c构造函数和析构函数_C ++构造函数和析构函数| 查找输出程序| 套装2
  8. 请写出3个Android布局,一起撸一波干货集中营练练手Android(三)布局+实现篇
  9. centos查找linux大文件,centos中查找出大文件命令汇总
  10. java进一_JAVA小白进:基础入门知识