中新网 2 月 1 日电(IT 频道秦辰)按此前国家测绘地理信息局印发的《关于进一步加强互联网地图服务资质管理工作的通知》(下文简称《通知》)要求,今日起未申请...

2023-05-16

最近自己在做一个小东西,用log4net日志组件来记录日志,自己在前人的基础上加工总结,拿出来给大家分享一下,不足之处大拿们使劲拍砖,感激不尽!

第一步:配置config文件

    为了方便管理,把log4net的配置文件从web.config中分离,新建一个名为log4net.config的文件,内容如下:

View Code

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <log4net debug="false">
  3 
  4    <!--按日期分割日志文件 一天一个-->
  5   <appender name="LogFileAppenderByDate" type="log4net.Appender.RollingFileAppender" >
  6 
  7     <!--是否续写-->
  8     <param name="AppendToFile" value="true" />
  9     <!--最小锁定模型以允许多个进程可以写入同一个文件-->
 10     <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
 11     <param name="StaticLogFileName" value="true" />
 12     <!--保存路径-->
 13     <param name="File" value="F:\Log\\" />
 14     <param name="DatePattern" value="yyyy-MM-dd.LOG" />
 15     <param name="StaticLogFileName" value="false" />
 16     <param name="RollingStyle" value="Date" />
 17     <layout type="log4net.Layout.PatternLayout">
 18       <param name="ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
 19     </layout>
 20   </appender>
 21   
 22   <!--按日志容量分割日志文件 10KB一个-->
 23   <appender name="LogFileAppenderBySize" type="log4net.Appender.RollingFileAppender" >
 24 
 25     <!--是否续写-->
 26     <param name="AppendToFile" value="true" />
 27     <!--最小锁定模型以允许多个进程可以写入同一个文件-->
 28     <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
 29 
 30     <param name="StaticLogFileName" value="true" />
 31 
 32     <!--按照文件的大小进行变换日志文件-->
 33     <param name="RollingStyle" value="Size" />
 34     <param name="File" value="LogData\\log.txt" />
 35     <!--单个文件最大数量 好像只有在 按Size分割时有效-->
 36     <param name="MaximumFileSize" value="10KB"/>
 37     <!--保留的log文件数量 超过此数量后 自动删除之前的   好像只有在 按Size分割时有效-->
 38     <param name="MaxSizeRollBackups" value="2" />
 39     
 40     <param name="StaticLogFileName" value="false" /> 
 41     <layout type="log4net.Layout.PatternLayout">
 42       <param name="ConversionPattern" value="发生时间:%d %n事件级别:%level %n相关类名:%c%n程序文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
 43     </layout>
 44   </appender>  
 45   <!--记录日志到数据库-->
 46   <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
 47     <bufferSize value="100" />
 48     <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
 49     <connectionString value="data source=GAS-HECHEN;initial catalog=dsc141051_db;integrated security=false;persist security info=True;User ID=sa;Password=000000" />
 50     <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
 51     <parameter>
 52       <parameterName value="@log_date" />
 53       <dbType value="DateTime" />
 54       <layout type="log4net.Layout.RawTimeStampLayout" />
 55     </parameter>
 56     <parameter>
 57       <parameterName value="@thread" />
 58       <dbType value="String" />
 59       <size value="255" />
 60       <layout type="log4net.Layout.PatternLayout">
 61         <conversionPattern value="%thread" />
 62       </layout>
 63     </parameter>
 64     <parameter>
 65       <parameterName value="@log_level" />
 66       <dbType value="String" />
 67       <size value="50" />
 68       <layout type="log4net.Layout.PatternLayout">
 69         <conversionPattern value="%level" />
 70       </layout>
 71     </parameter>
 72     <parameter>
 73       <parameterName value="@logger" />
 74       <dbType value="String" />
 75       <size value="255" />
 76       <layout type="log4net.Layout.PatternLayout">
 77         <conversionPattern value="%logger" />
 78       </layout>
 79     </parameter>
 80     <parameter>
 81       <parameterName value="@message" />
 82       <dbType value="String" />
 83       <size value="4000" />
 84       <layout type="log4net.Layout.PatternLayout">
 85         <conversionPattern value="%message" />
 86       </layout>
 87     </parameter>
 88     <parameter>
 89       <parameterName value="@exception" />
 90       <dbType value="String" />
 91       <size value="2000" />
 92       <layout type="log4net.Layout.ExceptionLayout" />
 93     </parameter>
 94   </appender> 
 95   <root>
 96     <level value="INFO" />
 97     <!--启用按日期分割-->
 98     <appender-ref ref="LogFileAppenderByDate" />
 99     <!--启用按容量分割-->
100     <!--<appender-ref ref="LogFileAppenderBySize" />-->
101     <!--启用保存到数据库-->
102     <!--<appender-ref ref="AdoNetAppender" />-->
103   </root>
104 </log4net>  

    内容主要配置日志的输出方式:1、按日期生成  2、按文件大小 生成  3、把日志保存到数据库文件。最后root节点是设置启动哪种方式来保存日志,以及设置日志的级别

第二步:把Log4Net.config文件添加到项目启动项

        在website或winform 项目下的Global.asax.cs类的Application_Start()方法下添加加载日志配置文件代码

View Code

1        void Application_Start(object sender, EventArgs e)
2         {
3             // Code that runs on application startup
4             log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(Server.MapPath("/Log4Net.config")));
5         }  

第三步:在类库里添加日志帮助类LogHelper

        添加辅助类的目的:1、方便各个类库及项目直接调用,不用每个项目里都添加log4net的引用

                                2、为了支持根据自己配置的日志输出格式和输出方式 输出日志(configPath 用来传入日志配置路径)

View Code

 1     /// <summary>
 2 /// 日志辅助类
 3 /// </summary>
 4     public class LogHelper
 5     {
 6         private static ILog log;
 7         private static LogHelper logHelper = null;
 8         /// <summary>
 9 /// 初始化
10 /// </summary>
11 /// <returns></returns>
12         public static ILog GetInstance()
13         {
14             logHelper = new LogHelper(null);
15 
16             return log;
17         }
18         /// <summary>
19 /// 初始化
20 /// </summary>
21 /// <param name="configPath"></param>
22 /// <returns></returns>
23         public static ILog GetInstance(string configPath)
24         {
25             logHelper = new LogHelper(configPath);
26 
27             return log;
28         }
29         /// <summary>
30 /// 构造函数
31 /// </summary>
32 /// <param name="configPath"></param>
33         private LogHelper(string configPath)
34         {
35             if (!string.IsNullOrEmpty(configPath))
36             {
37                 log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
38                 log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(configPath));
39             }
40             else
41             {
42                 log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
43             }
44         }
45 
46     }  


第四步:在项目里应用日志

           

View Code

ILog log = LogHelper.GetInstance();
log.Fatal("Fatal");  

或者


ILog log = LogHelper.GetInstance(configPath);
log.Fatal("diaoxw");  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

中新网 2 月 1 日电(IT 频道秦辰)按此前国家测绘地理信息局印发的《关于进一步加强互联网地图服务资质管理工作的通知》(下文简称《通知》)要求,今日起未申请... 的相关文章

  • mybatis-plus引入依赖报错Maven Missing artifact xxx:jar

    mybatis plus在添加依赖时可能会出现某个jar包下载有问题 xff0c 同时第一行出错提示maven中无法下载 xff08 xsi schemaLocation xff09 或jar包下载出错 右键项目 gt maven gt u
  • C++语言程序设计

    C 43 43 语言程序设计 如需转载请标明出处 xff1a http blog csdn net itas109 文章目录 C 43 43 语言程序设计1 语言概述1 1 字符集合1 2 词法记号关键字标识符文字操作符 运算符 分隔符空白
  • 查看C语言库函数源码

    查看C语言库函数源码 如需转载请标明出处 xff1a http blog csdn net itas109 文章目录 查看C语言库函数源码1 visual studio2 glibc3 llvm4 其他 例如查找string h头文件中的s
  • CSerialPort教程(9) - CSerialPort输出详细调试信息及日志

    CSerialPort教程 9 CSerialPort输出详细调试信息及日志 前言 CSerialPort项目是基于C 43 43 的轻量级开源跨平台串口类库 xff0c 用于实现跨平台多操作系统的串口读写 CSerialPort项目的开源
  • NodeJS输出内存使用信息到日志

    NodeJS输出内存使用信息到日志 如需转载请标明出处 xff1a http blog csdn net itas109 前言 内存信息是应用程序非常重要的信息 xff0c 尤其是在排查内存相关问题的时候 本文将介绍NodeJS如何输出内存
  • 使用Node.js版本管理工具管理多个Node.js版本

    使用Node js版本管理工具管理多个Node js版本 前言 本地开发时 xff0c 有时需要多个Node js版本进行验证 xff0c 因此需要一个Node js版本管理工具 Node js版本管理工具有很多 xff0c 如fnm nv
  • gitbook通过markdown制作电子书

    gitbook通过markdown制作电子书 环境 xff1a gitbook cli 2 3 2 2017 07 14 gitbook 3 2 3 2017 08 03 Node js 10 24 1 2021 04 06 npm 6 1
  • mdbook通过markdown制作电子书(代替gitbook)

    mdbook通过markdown制作电子书 代替gitbook 环境 xff1a mdbook v0 4 28 前言 gitbook制作电子书大家已经非常熟悉了 xff0c 但是对于gitbook工具官方已经不再维护了 xff0c 而且环境
  • 解决ubuntu 22.04 vmware无法共享文件问题

    解决ubuntu 22 04 vmware无法共享文件问题 环境 xff1a vmware 16 2 OS ubuntu 22 04 问题 安装完ubuntu 22 04后 xff0c vmtool安装报错 xff0c 无法使用共享文件和屏
  • 查看Android模拟器的实时日志

    查看Android模拟器的实时日志 环境 xff1a OS windows 10 adb 1 0 41 1 下载ADB https dl google com android repository platform tools latest
  • 心情不好

    今天知道了一个非常非常不好的消息 xff0c 突然感觉自己活得很窝囊 xff01 xff01 xff01 xff01 当兄弟有事需要帮忙的时候自己有了无能为力的感觉 所以 xff0c 要变强 xff0c 就算不为了自己 xff0c 也要为了
  • VS2019使用VLD(Visual Leak Detector)检测CPP内存泄漏

    VS2019使用VLD Visual Leak Detector 检测CPP内存泄漏 环境 xff1a 编译器 VS2019 VLD 2 5 1 前言 在windows平台下 xff0c VLD Visual Leak Detector 是
  • windows上Git Bash支持常用命令gcc tree zip wget cmake ninja

    windows上Git Bash支持常用命令gcc tree zip wget cmake ninja 前言 Git Bash基于MinGW64 提供了win32下的linux命令环境 xff0c 如ls cat tar等 但是Git Ba
  • MSVC和MinGW导出的.dll.a和.lib相互调用

    MSVC和MinGW导出的 dll a和 lib相互调用 如需转载请标明出处 xff1a http blog csdn net itas109 环境 xff1a OS windows 10 MinGW64 x86 64 8 1 0 rele
  • windows下源码编译QuickJS动态库

    windows下源码编译QuickJS动态库 如需转载请标明出处 xff1a http blog csdn net itas109 技术交流Q xff1a 129518033 前言 QuickJS是一个小型并且可嵌入的Javascript引
  • C/C++内存泄漏概述、分析、防范和排查

    C C 43 43 内存泄漏概述 分析 防范和排查 如需转载请标明出处 xff1a http blog csdn net itas109 技术交流Q xff1a 129518033 1 概念 狭义上 xff0c 内存泄漏是指动态分配的内存未
  • Linux使用asan排查C/C++内存泄漏

    Linux使用asan排查C C 43 43 内存泄漏 如需转载请标明出处 xff1a https blog csdn net itas109 技术交流 xff1a 129518033 环境 xff1a OS Ubuntu 20 04 Ce
  • windows下使用umdh定位C++内存泄漏

    windows下使用umdh定位C 43 43 内存泄漏 如需转载请标明出处 xff1a https blog csdn net itas109 技术交流 xff1a 129518033 环境 xff1a OS windows 10 190
  • Dear ImGui结合CMake实现基于GLFW和OpenGL3的入门级hello world代码

    Dear ImGui结合CMake实现基于GLFW和OpenGL3的入门级hello world代码 如需转载请标明出处 xff1a https blog csdn net itas109 技术交流 xff1a 129518033 环境 x
  • C++常用第三方库

    C 43 43 常用第三方库 如需转载请标明出处 xff1a https blog csdn net itas109 技术交流 xff1a 129518033 1 框架 Boost 通用C 43 43 标准库 Boost 5 6k 2023

随机推荐

  • windows下源码编译和使用TCMalloc

    windows下源码编译和使用TCMalloc 环境 xff1a OS windows 10 编译器 xff1a vs2019 cmake 3 22 1 tcmalloc gperftools 2 10 前言 TCMalloc是Google
  • SRM340

    本来想比赛的 可是睡着了 5555555555555 CssPropertyConverter http www topcoder com stat c 61 problem statement amp pm 61 7503 amp rd
  • 干货丨MapReduce的工作流程是怎样的?

    MapReduce编程模型开发简单且功能强大 xff0c 专门为并行处理大规模数据量而设计 xff0c 接下来 xff0c 我们通过一张图来描述MapReduce的工作过程 xff0c 如下图所示 在图中 xff0c MapReduce的工
  • gerrit中 refs/for 和 refs/heads

    简单点说 xff0c 就是refs for mybranch需要经过code review之后才可以提交 xff1b refs heads mybranch不需要code review 如 xff1a 如果需要code review xff
  • 大学生创业团队组建的几点建议

    大学生创业是一条不归路 xff0c 创业的道路上充满了荆棘 道路虽然艰苦 xff0c 但很充实 如果就业 考研 考公务员是按常规出牌 xff0c 那么创业就是非常规出牌了 如果一个人要想成功 xff0c 我个人认为必须要按 非常规出牌 我自
  • bash: service: command not found(service命令未找到的) 错误的解决方法

    今天碰到一个问题 xff0c 问题如下 xff1a 在启动named服务时 xff0c 出现下面错误提示 xff1a bash service command not found lt wbr gt lt wbr gt 于是我到网上去一搜了
  • 多线程加速图像模板匹配

    多线程加速图像模板匹配 2010年09月05日 多线程加速图像模板匹配 首先这是个没有什么很好的结局的故事 所以下面这点文字不是为了表现一个怎么怎么好的结果 xff0c 而是整个让人头疼的过程 多线程加速算法的实现 xff0c 不是对于算法
  • 老公爱吃的菜(策略模式)

    将策略的上下文的构造函数换用简单工厂模式的话就将业务对象封装起来了 xff0c 客户端就只要了解Boy这个对象就ok了 xff0c 不需要自己去声明接口DreamGir的业务对象l 上下文 public class Boy private
  • Ubuntu 启动图形用户界面

    1 按ALT 43 CTRL 43 F1切换到字符界面 2 按ALT 43 CTRL 43 F7切换到图形界面 如果想 Ubuntu 在每次啟動到 command prompt xff0c 可以輸入以下指令 echo false sudo
  • AdaBoost中利用Haar特征进行人脸识别算法分析与总结1——Haar特征与积分图

    目前因为做人脸识别的一个小项目 xff0c 用到了AdaBoost的人脸识别算法 xff0c 因为在网上找到的所有的AdaBoost的简介都不是很清楚 xff0c 让我看看头脑发昏 xff0c 所以在这里打算花费比较长的时间做一个关于Ada
  • 汉化Windows Azure上的虚拟机

    目前海外Azure上的Windows虚拟机都是英文版 采用英文版可能遇到的问题是某些中文软件会产生乱码 为了支持中文 xff0c 需要做以下配置 xff1a 装中文语言包 xff1a 让VM可以支持zh CN字符集 xff0c 支持中文输入
  • 我看到过的最恐怖的一个接口:

    org springframework beans factory Interface InitializingBean All Known Implementing Classes AbstractAspectJAdvice Abstra
  • 写给恋爱中的男孩

    顶 写给恋爱中的男孩 xff08 包括女孩都要看哈 xff09 其实很多男孩子都不知道 xff0c 女孩子在冲他们发火后自己却转过身不断啜泣 其实很多男孩子都不知道 xff0c 女孩子从来不会真正生他们的气 xff0c 因为她是真的喜欢他在
  • A connection attempt failed because the connected party did not properly ..

    学PHP不久 xff0c 以前用的是人家搭好的环境AMPServer和NMPServer xff0c 但是是PHP5 2的 xff0c 想用PHP5 3的新特性啊 xff0c 就自己搭环境 xff0c 没想到遇到的问题还真不少 xff0c
  • Image 的 getRGB方法

    第一次自己翻译文章 xff0c 翻译不到位的地方忘体谅 xff01 废话少说直接上东西了 函数原型 public void getRGB int rgbData intoffset intscanlength intx inty intwi
  • pads 覆铜 设计 设置

    第十三节 覆铜 Copper Pouring 许多印制电路板 Printed Circuit Board 设计系统支持各种类型覆铜 Copper Pouring 或区域填充方式 xff0c 但是很少能够达到PADS Layout 的覆铜 C
  • SQLServer和VS的安装顺序

    1 种方法 先装SQLServer2005后装vs2005 2 只装vs2005 然后因为vs2005里面已经有了一个SQLServer的express版本了 不过里面没有装上管理工具 这个时候你只需要去给它装一个Microsoft SQL
  • Java多线程示例:4个售票员卖1000张火车票

    售票员 import java util Iterator import java util Map public class TicketSaler implements Runnable private Map lt String Bo
  • 格雷码的实现 (google 面试题)

    问题 xff1a 产生n位元的所有格雷码 格雷码 Gray Code 是一个数列集合 xff0c 每个数使用二进位来表示 xff0c 假设使用n位元来表示每个数字 xff0c 任两个数之间只有一个位元值不同 例如以下为3位元的格雷码 xff
  • 中新网 2 月 1 日电(IT 频道秦辰)按此前国家测绘地理信息局印发的《关于进一步加强互联网地图服务资质管理工作的通知》(下文简称《通知》)要求,今日起未申请...

    最近自己在做一个小东西 xff0c 用log4net日志组件来记录日志 xff0c 自己在前人的基础上加工总结 xff0c 拿出来给大家分享一下 xff0c 不足之处大拿们使劲拍砖 xff0c 感激不尽 xff01 第一步 xff1a 配置