概述

本文主要简单说明如何使用Log4Net进行日志记录,在程序开发过程中记录日志的优点:

  • 它可以提供应用程序运行时的精确环境,可供开发人员尽快找到应用程序中的Bug;
  • 一旦在程序中加入了Log 输出代码,程序运行过程中就能生成并输出日志信息而无需人工干预。
  • 日志信息可以输出到不同的地方(控制台,文件等)以备以后研究之用。

关于Log4Net的官方说明:

The Apache log4net library is a tool to help the programmer output log statements to a variety of output targets. log4net is a port of the excellent Apache log4j™ framework to the Microsoft® .NET runtime. We have kept the framework similar in spirit to the original log4j while taking advantage of new features in the.NET runtime。

【粗略翻译】Apache log4net 类库是一个帮助程序员输出日志状态到多种目标平台。log4net 是优秀的 Apache log4jTM 框架在微软.Net平台的一个实现。在保持原有log4j的思想的前提下,同时利用.Net的新特性。

Log4Net 在程序中使用,可以通过配置文件,进行配置,也可以通过程序代码进行定义。本文主要讲解一下通过配置的方式实现

配置文件结构,如下图所示:

配置文件可以配置在App.config中【编译后会生成对应的[程序名].exe.config】,也可以配置在独立的xml文件中。

如果配置在独立的xml文件中,需要在Assembly.cs中增加一句说明,如下所示:

[assembly: log4net.Config.DOMConfigurator(ConfigFile = "Log4NetConfig.xml", ConfigFileExtension = "xml", Watch = true)]

如果配置在App.config中,除了配置log4net节点外,还要对节点进行声明,即要增加configSection节点【放在根节点的第一个元素】,如下所示

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>

生成的日志文件内容,如下图所示:

核心代码

代码如下:

 using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; [assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace DemoLog4Net
{
/// <summary>
/// 日志记录
/// </summary>
public class LogHelper
{
/// <summary>
/// 日志实例
/// </summary>
private static ILog logInstance=LogManager.GetLogger("testApp"); public static void WriteLog(string message ,LogLevel level) {
switch (level) {
case LogLevel.Debug:
logInstance.Debug(message);
break;
case LogLevel.Error:
logInstance.Error(message);
break;
case LogLevel.Fatal:
logInstance.Fatal(message);
break;
case LogLevel.Info:
logInstance.Info(message);
break;
case LogLevel.Warn:
logInstance.Warn(message);
break;
default:
logInstance.Info(message);
break;
}
}
} public enum LogLevel {
Debug=,
Error=,
Fatal=,
Info=,
Warn=
}
}

独立配置文件如下:

 <?xml version="1.0" encoding="utf-8" ?>
<log4net>
<root>
<level value="DEBUG" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="ConsoleAppender" />
</root>
<logger name="testApp">
<level value="DEBUG" />
</logger>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
<param name="File" value="${TMO}log-file.txt" />
<StaticLogFileName value="false"/>
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header] "/>
<param name="Footer" value="[Footer] "/>
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
</log4net>

附加:

如何设置环境变量:

System.Environment.SetEnvironmentVariable("TMO", DateTime.Now.ToString("yyyyMMdd"));

日志记录优先级如下表所示:

级别 允许的方法 Boolean属性 优先级别
OFF     Highest
FATAL void Fatal(...); bool IsFatalEnabled;  
RROR void Error(...); bool IsErrorEnabled;  
WARN void Warn(...); bool IsWarnEnabled;  
INFO void Info(...); bool IsInfoEnabled;  
DEBUG void Debug(...); bool IsDebugEnabled;  
ALL     Lowest
 

备注:

log4net确实是一个应用广泛且简单好用的日志记录框架,本文只是简单的说明,后续工作中会继续研究其他的功能

C# 利用Log4Net进行日志记录的更多相关文章

  1. Log4Net异常日志记录在asp.net mvc3.0的应用

    前言 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.本文主要是简单的介绍如何在Visual ...

  2. Log4Net异常日志记录在asp.net mvc3.0的应用(转载)

    这篇博客写的很好:http://www.cnblogs.com/qianlifeng/archive/2011/04/22/2024856.html 前言 log4net是.Net下一个非常优秀的开源 ...

  3. 【改进】用Log4net建立日志记录

    上一篇随笔中只使用了普通的文件读写来进行日志的写入,正如很多朋友说的,频繁的对文件进行读写会造成很多的问题,代码缺少边界控制和操作控制,没有对资源进行管理,是非常典型的bad code. 然后经过前辈 ...

  4. 【转】使用Log4Net进行日志记录

    首先说说为什么要进行日志记录.在一个完整的程序系统里面,日志系统是一个非常重要的功能组成部分.它可以记录下系统所产生的所有行为,并按照某种规范表达出来.我们可以使用日志系统所记录的信息为系统进行排错, ...

  5. 利用log4net创建日志文件时过滤日志,这是坑还是?

    前言 网上貌似没有太多关于log4net过滤日志的资料,在研究过程中发现一点小问题,这里做下记录,希望对后续有用到的童鞋起到一丢丢帮助作用. log4net日志过滤 由于是在.NET Core中使用, ...

  6. winform 应用log4net做日志记录到mysql

    1.nuget装log4net 2.nuget控件台装 mysql.data Install-Package mysql.data -version 6.8.3 (太高的版本用不了,切记) 3.修改a ...

  7. C# 利用log4net 把日志写入到数据库表中

    效果图: 1:第一步创建SQL表结构  CREATE TABLE [dbo].[LogDetails] (  [LogID] int NOT NULL IDENTITY(1,1) ,  [LogDat ...

  8. C# 利用log4net 把日志写入到数据库

    效果图: 1:第一步创建SQL表结构   CREATE TABLE [dbo].[LogDetails] (   [LogID] int NOT NULL IDENTITY(1,1) ,   [Log ...

  9. webAPI中使用log4net进行日志记录

    1.从nuget下载log4net 2.根据需求配置web.config,或者另外写一个log4net.config文件,各个节点的意义详细查询api <section name="l ...

随机推荐

  1. 课程五(Sequence Models),第二 周(Natural Language Processing & Word Embeddings) —— 0.Practice questions:Natural Language Processing & Word Embeddings

    [解释] The dimension of word vectors is usually smaller than the size of the vocabulary. Most common s ...

  2. Python Selenium 常用方法总结(不断补充)

    还有此篇内容也丰富Selenium常见元素定位方法和操作的学习介绍 selenium Python 总结一些工作中可能会经常使用到的API. 1.获取当前页面的Url 方法:current_url 实 ...

  3. C++版 - 剑指offer 面试题63:二叉搜索树的第k个结点(二叉树中序遍历的应用) 题解

    面试题 63:二叉搜索树的第k个结点 题目:给定一颗二叉搜索树,请找出其中的第k大的结点.例如, 5 / \ 3 7 /\ /\ 2 4 6 8 (见下面的图1) 中,按结点数值大小顺序第三个结点的值 ...

  4. Servlet & JSP系列文章总结

    前言 谢谢大家的捧场,真心感谢我的阅读者. @all 下一期,重点在  数据结构和算法  ,希望给大家带来开心.已经出了几篇,大家爱读就是我的开心. Servlet & JSP系列总结 博客, ...

  5. ajax实现文档导出及下载

    做导出一直遇到个问题就是不能用ajax实现一步导出文档,即导出加下载.今天突然想到可以分开来做就上网搜了下,发现一篇比较不错的文章(http://www.cnblogs.com/zj0208/p/59 ...

  6. 【Bootstrap系列】详解Bootstrap-table

    本篇文章将与大家分享bootstrap-table插件,借助于它实现基本的增删改查,导入导出,分页,父子表等. 至于其他技术,如冻结表头,列排列,行拖动,列拖动等,会在后续文章中与大家分享. 一    ...

  7. MyBatis源码解析(七)——DataSource数据源模块之托管数据源

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6675700.html 1 回顾 之前介绍的非池型与池型数据源都是MyBatis自己定义的内 ...

  8. UnicodeDecodeError: 'ascii' codec can't decode byte

    这个问题遇到过很多次了,但是每次都没记住,用完就忘了,这次记录下. 通过关键词谷歌一下: 解决方案: # encoding=utf8 import sys reload(sys) sys.setdef ...

  9. 详细分析MySQL的日志(一)

    官方手册:https://dev.mysql.com/doc/refman/5.7/en/server-logs.html 不管是哪个数据库产品,一定会有日志文件.在MariaDB/MySQL中,主要 ...

  10. webpack 配置文件相关解说

    博客地址:https://ainyi.com/10 webpack - 什么是webpack: WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它 ...