从零开始写C# MVC框架之--- 配置log4日志

在框架中配置日志分2步,一个是在帮助项目Zy.Utilities--Zy.Utility.Core中新建log类,封装写入日志方法,还需要在Zy.Utility.Core添加 log4net 的引用

1、log实现类

 1 [assembly: log4net.Config.XmlConfigurator(Watch = true)]
 2 namespace Zy.Utility.Core
 3 {
 4     /// <summary>
 5     /// 日志处理类
 6     /// </summary>
 7     public static class Log
 8     {
 9         public static void Error(string msg)
10         {
11             log4net.ILog log = log4net.LogManager.GetLogger(msg);
12             log.Error(msg);
13         }
14
15         public static void Info(string msg)
16         {
17             log4net.ILog log = log4net.LogManager.GetLogger(msg);
18             log.Info(msg);
19         }
20
21         public static void Warning(string msg)
22         {
23             log4net.ILog log = log4net.LogManager.GetLogger(msg);
24             log.Warn(msg);
25         }
26
27         public static void Error(string msg, Exception ex)
28         {
29             log4net.ILog log = log4net.LogManager.GetLogger(msg);
30             log.Error("Error", ex);
31         }
32
33         public static void Info(string msg, Exception ex)
34         {
35             log4net.ILog log = log4net.LogManager.GetLogger(msg);
36             log.Info("Info", ex);
37         }
38
39         public static void Warning(string msg, Exception ex)
40         {
41             log4net.ILog log = log4net.LogManager.GetLogger(msg);
42             log.Warn("Warning", ex);
43         }
44     }
45 }  

2、在Web项目的web.config中配置log4,配置完后,启动项目后会在ZyCommon-ZyWeb项目中生成一个Log的文件夹

 1 <log4net>
 2     <!--数据日志-->
 3     <appender name="InfoRollingFileAppender" type="log4net.Appender.RollingFileAppender">
 4       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
 5       <param name="File" value="Log\Info\" />
 6       <param name="AppendToFile" value="true" />
 7       <param name="rollingStyle" value="Date" />
 8       <param name="datePattern" value="yyyy-MM-dd.‘Info.log‘" />
 9       <param name="staticLogFileName" value="false" />
10       <layout type="log4net.Layout.PatternLayout">
11         <conversionPattern value="%n%n%n 记录时间:%date %n日志级别:  %-5level %n出错类:%logger  %n错误描述:%message %newline%newline" />
12       </layout>
13       <filter type="log4net.Filter.LevelRangeFilter">
14         <param name="LevelMin" value="INFO" />
15         <param name="LevelMax" value="INFO" />
16       </filter>
17     </appender>
18     <!--错误日志-->
19     <appender name="ErrorRollingFileAppender" type="log4net.Appender.RollingFileAppender">
20       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
21       <param name="File" value="Log\Error\" />
22       <param name="AppendToFile" value="true" />
23       <param name="rollingStyle" value="Date" />
24       <param name="datePattern" value="yyyy-MM-dd.‘error.log‘" />
25       <param name="staticLogFileName" value="false" />
26       <layout type="log4net.Layout.PatternLayout">
27         <conversionPattern value="%n%n%n 记录时间:%date %n日志级别:  %-5level %n出错类:%logger  %n错误描述:%message %newline%newline" />
28       </layout>
29       <filter type="log4net.Filter.LevelRangeFilter">
30         <param name="LevelMin" value="ERROR" />
31         <param name="LevelMax" value="ERROR" />
32       </filter>
33     </appender>
34     <!--调试日志-->
35     <appender name="DebugRollingFileAppender" type="log4net.Appender.RollingFileAppender">
36       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
37       <param name="File" value="Log\Debug\" />
38       <param name="AppendToFile" value="true" />
39       <param name="rollingStyle" value="Date" />
40       <param name="datePattern" value="yyyy-MM-dd.‘debug.log‘" />
41       <param name="staticLogFileName" value="false" />
42       <layout type="log4net.Layout.PatternLayout">
43         <conversionPattern value="%n%n%n 记录时间:%date %n日志级别:  %-5level %n出错类:%logger  %n错误描述:%message %newline%newline" />
44       </layout>
45       <filter type="log4net.Filter.LevelRangeFilter">
46         <param name="LevelMin" value="DEBUG" />
47         <param name="LevelMax" value="DEBUG" />
48       </filter>
49     </appender>
50     <root>
51       <level value="DEBUG" />
52       <!--文件形式记录日志-->
53       <appender-ref ref="ErrorRollingFileAppender" />
54       <appender-ref ref="DebugRollingFileAppender" />
55       <appender-ref ref="InfoRollingFileAppender" />
56     </root>
57   </log4net>  

Log文件夹下分为Debug、Error、Info文件夹,分别写入错误级别不同的日志信息

开发中报错后,错误信息会写入Error文件夹中,按配置规则每天生成一个txt文件夹,调试时也可以写入日志中

原文地址:https://www.cnblogs.com/SUXIAOSHUAI/p/9055208.html

时间: 2024-10-08 13:42:07

从零开始写C# MVC框架之--- 配置log4日志的相关文章

自己动手写PHP MVC框架

来自:yuansir-web.com / [email protected] 代码下载: https://github.com/yuansir/tiny-php-framework PHP的框架众多,对于哪个框架最好,哪个框架最烂,是否应该用框架,对于这些争论在论坛里面都有人争论,这里不做评价, 个人觉得根据自己需求,选中最佳最适合自己MVC框架,并在开发中能够体现出敏捷开发的效果就OK了,作为一个PHPer要提高自己的对PHP和MVC的框架的认识,所以自己写一个MVC框架是很有必要的, 即使不

【EatBook】-NO.3.EatBook.3.JavaArchitecture.2.001-《架构探险:从零开始写Java Web框架》-

1.0.0 Summary Tittle:[EatBook]-NO.3.EatBook.3.JavaArchitecture.2.001-<架构探险:从零开始写Java Web框架>- Style:JavaArchitecture Series:Architecture Publishing House:电子工业 Author: 黄勇 Page Number:349 Since:2017-04-06 End:ing... Total Hours:ing... Degree Of Diffcul

学习如何写PHP MVC框架(1) -- 路由

说到PHP开发web,自然离不开开发框架,开发框架为我们提供了灵活的开发方式,MVC层分离,业务解耦等... 第一篇先来简单点的,说说MVC框架的路由功能... 一般的单入口框架路由都是这样的结构: domain/index.php/classname/functionname/var1/var2 这里的index.php 就被称为入口文件...对于服务器而言,你这里访问的就只有index.php 后面调用的controller 和里面的方法,甚至传值都是在框架内部基于PHP层面实现的. Tal

聊一个自己写的MVC框架

也有个一周没有更新博客了,其实我没有偷懒,因为之前一直在看Spring源码,所以想着去写一个类Spring的框架,也没有给自己定什么高的要求,简单实现MVC.AOP.IOC等功能就行.现在这个框架基本上已经成型了,自己也测试过了,因此拿出来和大家分享一下. 我本文就不写标题了,因为自己的思路是跟着代码走的,所以可能说着说着MVC就跳到DI那一块了.首先我在开始的时候,也是跟随着大部分人的思路,先从DispatcherServlet入手.因为为DispatcherServlet是和用户交互的.和D

Spring 4 官方文档学习(十一)Web MVC 框架之配置Spring MVC

在前面的文档中讲解了Spring MVC的特殊beans,以及DispatcherServlet使用的默认实现.在本部分,你会学习两种额外的方式来配置Spring MVC.分别是:MVC Java config 和  MVC XML namespace. 原文: Section 22.2.1, "Special Bean Types In the WebApplicationContext" and Section 22.2.2, "Default DispatcherSer

自己写一个java的mvc框架吧(三)

自己写一个mvc框架吧(三) 根据Method获取参数并转换参数类型 上一篇我们将url与Method的映射创建完毕,并成功的将映射关系创建起来了.这一篇我们将根据Method的入参参数名称.参数类型来获取参数,并转换参数类型,使其能够符合Method的定义. 事先说明 因为这里只是一个mvc框架的简单实现,仅仅只做到了基本数据类型和基本数据类型包装类的转换,没有做到spring那样的很复杂的数据绑定功能.所以我在代码上面加了比较强的校验. 现在开始写吧 我们从一次http请求中获取参数的时候,

AsMVC:一个简单的MVC框架的Java实现

当初看了<从零开始写一个Java Web框架>,也跟着写了一遍,但当时学艺不精,真正进脑子里的并不是很多,作者将依赖注入框架和MVC框架写在一起也给我造成了不小的困扰.最近刚好看了一遍springMVC的官方文档,对过去一段时间的使用做了一下总结,总结了一些MVC的使用需求,打算自己开坑写一个MVC框架,虽然是重复造轮子的过程,但也是学习提高的过程. 1.我们可能需要一个什么样的MVC框架 (1)用户一:我讨厌配置文件,最好能用注解的全用注解注解,能扫描直接扫描 (2)用户二:最好我导入一个j

自制MVC框架的插件与拦截器基础

上篇谈到我自己写的MVC框架,接下来讲讲插件及拦截器! 在处理一些通用的逻辑最好把它封装一个插件或者拦截器,以便日后可以直接拿过来直接使用.在我的框架中可以通过继承以下抽象类来实现插件或者拦截器. 1. AspectInterceptor抽象类 处理动态织入的AOP拦截器,Stephen.View框架中的拦截器抽象类,所有需要动态拦截器必须实现该类,该拦截器原理是通过aspectsharp实现的.该拦截器适用于控制层的拦截,且要使控制器类支持动态拦截必须给控制器加上DynamicAttribut

Java Web自定义MVC框架详解 (转)

转自:http://blog.csdn.net/jackfrued/article/details/42774459 最近给学生讲Java Web,希望他们能够在学完这部分内容后自己实现一个MVC框架.但是突然发现百度上能搜索到的靠谱的资料并不是很多,有些只是原理没有代码实现,有些有 代码实现但是对于初学者来说理解起来还是比较困难,于是决定把自己讲自定义MVC框架的内容放在这里分享给大家,不仅仅是代码,也有原理和探讨.内容会比 较长,因为我打算用递增的方式讲解如何写一个自定义MVC框架,重点是前