C#中使用Log4记录日志
具体步骤如下:
- 从网上下载log4net对应.net版本的dll
- 在C#项目中引用该dll
- 创建log4net对应的配置文件
- 在程序中使用
log4net的配置文件如下:
- <?xml version="1.0" encoding="utf-8"?>
- <log4net>
- <appender name="Log4Name" type="log4net.Appender.RollingFileAppender">
- <!--日志路径-->
- <param name="File" value="F:\Log2015\StorageSystem\Log4Name\log.log" />
- <!--是否是向文件中追加日志-->
- <param name="AppendToFile" value="true" />
- <!--log保留个数-->
- <param name="MaxSizeRollBackups" value="200" />
- <!--单个日志文件大小-->
- <param name="MaximumFileSize" value="5MB" />
- <!--日志文件名是否是固定不变的-->
- <param name="StaticLogFileName" value="false" />
- <!--日志文件名格式为:2008-08-31.log-->
- <DatePattern value="yyyy-MM-dd HH'时.log'"></DatePattern>
- <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
- <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
- <param name="RollingStyle" value="Size" />
- <layout type="log4net.Layout.PatternLayout">
- <param name="ConversionPattern" value="记录时间:%date%n线程ID:[%thread] %n日志级别:%-5level%n记录位置:%location%n异常:%exception%n消息:%message%newline%n------------------------------------------%n" />
- </layout>
- <filter type="log4net.Filter.LoggerMatchFilter">
- <param name="LoggerToMatch" value="Log4Name" />
- </filter>
- <filter type="log4net.Filter.DenyAllFilter" />
- </appender>
- <root>
- <!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) -->
- <level value="DEBUG" />
- <appender-ref ref="Log4Name" />
- </root>
- </log4net>
创建LogHelper如下:
- public class LogHelper
- {
- private static ILog log=null;
- public static ILog Log
- {
- get
- {
- if (log == null)
- {
- //log4.config表示log4的配置文件
- string fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config", "log4.config");
- log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(fileName));//修改日志配置无需重启程序,自动加载
- //Log4Name表示配置文件中的日志名称
- log = LogManager.GetLogger("Log4Name");
- }
- return log;
- }
- }
- }
使用方式如下:
- LogHelper.Log.Error("出错了哇");
创建的日志如图:
配置文件里面内容比较多,可以查阅相关文档进行详细配置!
另外,有时候我们需要把不同级别的文件放到不同的目录,首先配置文件如下:
- <?xml version="1.0" encoding="utf-8"?>
- <log4net>
- <appender name="AccesssService_Err" type="log4net.Appender.RollingFileAppender">
- <!--日志路径-->
- <param name="File" value="Errors\log.log" />
- <!--是否是向文件中追加日志-->
- <param name="AppendToFile" value="true" />
- <!--log保留个数-->
- <param name="MaxSizeRollBackups" value="200" />
- <!--单个日志文件大小-->
- <param name="MaximumFileSize" value="5MB" />
- <!--日志文件名是否是固定不变的-->
- <param name="StaticLogFileName" value="false" />
- <!--日志文件名格式为:2008-08-31.log-->
- <DatePattern value="yyyy-MM-dd HH'时.log'"></DatePattern>
- <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
- <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
- <param name="RollingStyle" value="Size" />
- <layout type="log4net.Layout.PatternLayout">
- <param name="ConversionPattern" value="记录时间:%date%n线程ID:[%thread] %n日志级别:%-5level%n记录位置:%location%n消息描述:%property{Message}%n异常:%exception%n消息:%message%newline%n------------------------------------------%n" />
- </layout>
- <filter type="log4net.Filter.LevelRangeFilter">
- <levelMin value="WARN" />
- <levelMax value="FATAL" />
- </filter>
- <filter type="log4net.Filter.DenyAllFilter" />
- </appender>
- <appender name="AccesssService_info" type="log4net.Appender.RollingFileAppender">
- <!--日志路径-->
- <param name="File" value="MyLogs\log.log" />
- <!--是否是向文件中追加日志-->
- <param name="AppendToFile" value="true" />
- <!--log保留个数-->
- <param name="MaxSizeRollBackups" value="200" />
- <!--单个日志文件大小-->
- <param name="MaximumFileSize" value="5MB" />
- <!--日志文件名是否是固定不变的-->
- <param name="StaticLogFileName" value="false" />
- <!--日志文件名格式为:2008-08-31.log-->
- <DatePattern value="yyyy-MM-dd HH'时.log'"></DatePattern>
- <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
- <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
- <param name="RollingStyle" value="Size" />
- <layout type="log4net.Layout.PatternLayout">
- <param name="ConversionPattern" value="记录时间:%date%n线程ID:[%thread] %n日志级别:%-5level%n记录位置:%location%n消息描述:%property{Message}%n异常:%exception%n消息:%message%newline%n------------------------------------------%n" />
- </layout>
- <filter type="log4net.Filter.LevelRangeFilter">
- <levelMin value="DEBUG" />
- <levelMax value="INFO" />
- </filter>
- <filter type="log4net.Filter.DenyAllFilter" />
- </appender>
- <logger name="gdLog4net" additivity="false">
- <level value="DEBUG" />
- <appender-ref ref="AccesssService_Err" />
- <appender-ref ref="AccesssService_info" />
- </logger>
- </log4net>
LogHelper代码如下:
- public class LogHelper
- {
- private static ILog log = null;
- public static ILog Log
- {
- get
- {
- if (log == null)
- {
- //log4.config表示log4的配置文件
- string fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config", "log4.config");
- log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(fileName));
- log = LogManager.GetLogger("gdLog4net");
- }
- return log;
- }
- }
- }
1.主要是log实例化有变化。通过GetLogger方法获取xml配种中gdLog4net的Logger
2.xml中定义了logger,关于logger和root,可以参考文章:https://www.cnblogs.com/zhangchenliang/p/4546352.html 的后面部分内容,大概意思就是说root其实就是一个顶级的logger,所有其他logger都默认继承这个root。如果需要让logger阻断和root的联系,可以将logger的additivity设置为false。
C#中使用Log4记录日志的更多相关文章
- Java项目中使用log记录日志的一些总结
本文介绍了一下自己在Java项目中使用log的一些总结,从日志的作用.日志的选用.日志级别介绍.日志记录的一些最佳实践几个方面阐述. 日志的作用 主要作用包括: 1.出问题后定位当时问题 2.显示程序 ...
- 撰写一篇博客要求讲述四则运算2的设计思想,源程序代码、运行结果截图、编程总结分析,并按照PSP0级的要求记录开发过程中的时间记录日志。
一.撰写一篇博客要求讲述四则运算2的设计思想,源程序代码.运行结果截图.编程总结分析,并按照PSP0级的要求记录开发过程中的时间记录日志. 1.设计思想: ①创建test.jsp建立第一个前端界面,提 ...
- spring boot 学习(六)spring boot 各版本中使用 log4j2 记录日志
spring boot 各版本中使用 log4j2 记录日志 前言 Spring Boot中默认日志工具是 logback,只不过我不太喜欢 logback.为了更好支持 spring boot 框架 ...
- .NET中使用NLog记录日志
以前小编记录日志使用的是Log4Net,虽然好用但和NLog比起来稍显复杂.下面小编就和大伙分享一下NLog的使用方式. 引用NLog.Config 在使用NLog之前,我们要首先添加对NLog.Co ...
- JAVA中使用LOG4J记录日志(转)
在项目开发中,记录错误日志是一个很有必要功能.一是方便调试:二是便于发现系统运行过程中的错误:三是存储业务数据,便于后期分析: 在java中,记录日志,有很多种方式. 比如,自己实现. 自己写类,将日 ...
- JAVA中使用LOG4J记录日志
在项目开发中,记录错误日志是一个很有必要功能.一是方便调试:二是便于发现系统运行过程中的错误:三是存储业务数据,便于后期分析: 在java中,记录日志,有很多种方式. 比如,自己实现. 自己写类,将日 ...
- Java使用Log4记录日志
我们在系统使用中,为了方便查找问题,因此需要记录操作的日志,而目前比较成熟稳定的程序日志记录方式就是Log4,本人也是菜鸟,然后再学习研究中就记录一下使用方式,以方便今后查阅,同时本文章参考了博客园: ...
- C#中使用Log4Net记录日志
https://www.cnblogs.com/W--Jing/p/8125652.html 实例参考 https://www.cnblogs.com/soundcode/p/4866078.html ...
- Asp.Net Core中使用NLog记录日志
2019/10/28, Asp.Net Core 3.0, NLog 4.6.7, NLog.Web.AspNetCore 4.9.0 摘要:NLog在asp.net网站中的使用,NLog日志写入数据 ...
随机推荐
- centos添加epel源
1. rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm 粗体部分需要根据自己的 ...
- EntityFramework包含作用
System.Data.Entity.Infrastructure.DbQuery的引用需要加入上面那个包
- 好用的在线web页面测试,移动页面测试工具webpagetest使用图文教程
好用的在线web页面测试,移动页面测试工具webpagetest使用图文教程 http://www.webpagetest.org/ 1.打开主页,输入网址,点击 START TEST 按钮开始测试 ...
- 分享三个USB抓包软件---Bus Hound,USBlyzer 和-USBTrace(转)
源:分享三个USB抓包软件---Bus Hound,USBlyzer 和-USBTrace Bus Hound官方下载地址:http://perisoft.net/bushound/Bus Hound ...
- P4555 [国家集训队]最长双回文串
P4555 [国家集训队]最长双回文串 manacher 用manacher在处理时顺便把以某点开头/结尾的最长回文串的长度也处理掉. 然后枚举. #include<iostream> # ...
- 01: requests模块
目录: 1.1 requests模块简介 1.2 使用requests模块发送get请求 1.3 使用requests模块发送post请求 1.4 requests.request()参数介绍 1.1 ...
- 02: tornado进阶篇
目录:Tornado其他篇 01: tornado基础篇 02: tornado进阶篇 03: 自定义异步非阻塞tornado框架 04: 打开tornado源码剖析处理过程 目录: 1.1 自定制t ...
- 01: tornado基础篇
目录:Tornado其他篇 01: tornado基础篇 02: tornado进阶篇 03: 自定义异步非阻塞tornado框架 04: 打开tornado源码剖析处理过程 目录: 1.1 Torn ...
- 认识epoll
linux下的epoll(7)函数,其有着良好的就绪事件通知机制.Epoll 是被linux2.6开始引进的,但是不被其他的类UNIX系统支持,它提供了一种类似select或poll函数的机制:a. ...
- sqlite3 的一些整理和补充
一,sqlite3数据库打开时的返回值及其所代表的含义 返回值 描述 返回值 描述 SQLITE_OK=0 返回成功 SQLITE_FULL=13 数据库满,插入失败 SQLITE_ERROR=1 S ...