日志插件 log4net 的使用

文本格式说明

可以记载的日志类别包括:FATAL(致命错误)、ERROR(一般错误)、WARN(警告)、INFO(一般信息)、DEBUG(调试信息)。

文本参数说明

%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息 
%n(new line):换行 
%d(datetime):输出当前语句运行的时刻 
%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数 
%t(thread id):当前语句所在的线程ID 等同于 %thread 
%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等 
%c(class):当前日志对象的名称,例如: 
        模式字符串为:%-10c -%m%n 
        代码为: 
        ILog log=LogManager.GetLogger(“Exam.Log”); 
        log.Debug(“Hello”); 
        则输出为下面的形式: 
        Exam.Log       - Hello 
%L:输出语句所在的行号 
%F:输出语句所在的文件名 
%-数字:表示该项的最小长度,如果不够,则用空格填充 
%newline: 错误详情 
%message: 自定义输出信息 
%logger: 类 
%property: 属性

以下为个人定义的模板

%n========== 
%n【日志级别】%-5level 
%n【记录时间】%date 
%n【线程编号】[%thread] 
%n【执行时间】[%r]毫秒 
%n【出错文件】%F 
%n【出错行号】%L 
%n【出错的类】%logger 属性[%property{NDC}] 
%n【错误描述】%message 
%n【错误详情】%newline

输出示例:

========== 
【日志级别】ERROR 
【记录时间】2012-11-08 15:49:37,625 
【线程编号】[10] 
【执行时间】[180]毫秒 
【出错文件】C:\Users\Administrator\Documents\Visual Studio 2010\Projects\ConsoleApplication5\ConsoleApplication5\Program.cs 
【出错行号】24 
【出错的类】ConsoleApplication5.Program 属性[(null)] 
【错误描述】错误 
【错误详情】 
System.DivideByZeroException: 尝试除以零。 
   在 ConsoleApplication5.Program.Main(String[] args) 位置 C:\Users\Administrator\Documents\Visual Studio 2010\Projects\ConsoleApplication5\ConsoleApplication5\Program.cs:行号 20

========== 
【日志级别】ERROR 
【记录时间】2012-11-08 15:49:37,666 
【线程编号】[10] 
【执行时间】[221]毫秒 
【出错文件】C:\Users\Administrator\Documents\Visual Studio 2010\Projects\ConsoleApplication5\ConsoleApplication5\Program.cs 
【出错行号】28 
【出错的类】ConsoleApplication5.Program 属性[(null)] 
【错误描述】error 
【错误详情】 
System.Exception: 发生了一个异常

使用说明:

配置文件:

节点: <configuration>中添加

  <log4net>
    <!--定义输出到文件中-->
    <appender name="SysAppender" type="log4net.Appender.RollingFileAppender">
      <!--日志的路径-->
      <file value="Logs/Log4Net/" />
      <!--是否覆盖,默认是追加true-->
      <appendToFile value="true"/>
      <rollingStyle value="Composite"/>
      <!--文件名称-->
      <DatePattern value="yyyy-MM-dd‘.log‘"></DatePattern>
      <!--设置无限备份=-1 ,最大备份数为1000-->
      <param name="MaxSizeRollBackups" value="1000"/>
      <!--每个文件的大小-->
      <param name="MaximumFileSize" value="500KB"/>
      <!--名称是否可以更改为false为可以更改-->
      <param name="StaticLogFileName" value="false"/>
      <layout type="log4net.Layout.PatternLayout">
        <!--输出格式-->
        <conversionPattern value="%n==========
%n【日志级别】%-5level
%n【记录时间】%date
%n【线程编号】[%thread]
%n【执行时间】[%r]毫秒
%n【出错文件】%F
%n【出错行号】%L
%n【出错的类】%logger 属性[%property{NDC}]
%n【错误描述】%message
%n【错误详情】%newline"/>
      </layout>
    </appender>
    <!--定义输出到控制台命令行中-->
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%n==========
%n【日志级别】%-5level
%n【记录时间】%date
%n【线程编号】[%thread]
%n【执行时间】[%r]毫秒
%n【出错文件】%F
%n【出错行号】%L
%n【出错的类】%logger 属性[%property{NDC}]
%n【错误描述】%message
%n【错误详情】%newline"/>
      </layout>
    </appender>
    <!--定义输出到windows事件中-->
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%n==========
%n【日志级别】%-5level
%n【记录时间】%date
%n【线程编号】[%thread]
%n【执行时间】[%r]毫秒
%n【出错文件】%F
%n【出错行号】%L
%n【出错的类】%logger 属性[%property{NDC}]
%n【错误描述】%message
%n【错误详情】%newline"/>
      </layout>
    </appender>
    <!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。-->
    <root>
      <!--文件形式记录日志-->>
      <appender-ref ref="SysAppender"/>
      <!--控制台控制显示日志-->
      <appender-ref ref="ConsoleAppender"/>
      <!--Windows事件日志-->
      <!--<appender-ref ref="EventLogAppender"/>-->
      <!-- 如果不启用相应的日志记录,可以通过这种方式注释掉
      <appender-ref ref="AdoNetAppender_Access" />
      -->
    </root>

  </log4net>

代码中:

引用

using log4net; 
using System.Reflection

在命名空间中添加[红色的内容]

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 
namespace ConsoleApplication5

调用示例:

using System;
using System.Collections.Generic;
using System.Text;
using log4net;
using System.Reflection;

[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建日志记录组件实例
            ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
            //记录严重错误
            log.Fatal("严重错误");
            log.Fatal("严重错误", new Exception("发生了一个致命错误"));
            //记录错误日志
            log.Error("错误");
            log.Error("错误", new Exception("发生了一个异常"));
            //记录警告信息
            log.Warn("警告");
            log.Error("警告", new Exception("有一个警告信息"));
            //记录一般信息
            log.Info("一般信息");
            log.Error("一般信息", new Exception("发出一个一般信息"));
            //记录调试信息
            log.Debug("调试信息");
            log.Error("调试信息", new Exception("发生了一个调试信息"));
            Console.Read();
        }
    }
}
时间: 2024-10-09 07:07:13

日志插件 log4net 的使用的相关文章

基于log4net的日志组件扩展分装,实现自动记录交互日志 XYH.Log4Net.Extend

背景: 随着公司的项目不断的完善,功能越来越复杂,服务也越来越多(微服务),公司迫切需要对整个系统的每一个程序的运行情况进行监控,并且能够实现对自动记录不同服务间的程序调用的交互日志,以及通一个服务或者项目中某一次执行情况的跟踪监控 根据log4net的现有功能满足不了实际需求,所以需要以log4net为基础进行分装完善,现在分装出了一个基础的版本,如有不妥之处,多多指点功能简介: 该组件是在log4net的基础上,进行了一定的扩展封装实现的自动记录交互日志功能 该组件的封装的目的是解决一下几个

搭建一套自己实用的.net架构(2)【日志模块-log4net】

先谈谈简单的模块,日志.在系统中日志模块是必须的,什么系统日志,操作日志,调试日志.这里用的是log4net. 对log4net还不熟悉的小伙伴们赶快去搜索基础教程哦, 我这里就不温故了. 那么有人要问了,log4net确实很强大,而且我们也会用.还要单独写一篇文章来介绍,有必要吗? 我简单的举两个场景: 1:log4net写入DB 还需要在 log4net中配置数据库连接字符串,   我想log4net 和 我的 connectionStrings 用1个配置不行吗? 2:log4net写入参

c#的日志插件NLog基本使用

本文介绍c#的日志插件NLog 安装插件 创建logger 日志级别 书写日志信息 配置 包装器 布局 安装插件 直接下载插件包 Install-Package NLog.Config 创建logger 使用LogManager创建Logger实例,最好一个类里面一个Logger实例 写法一 这种写法,记录的日志文件,显示的logger名字,是命名空间加上logger所在类的类名,如 ConsoleApp1.Program private static Logger mylogger = Log

[Dubbo开发]Dubbo日志插件实现(未打包)

本文需要实现的是一个Dubbo的日志插件,日志插件的原理如上图所示. 一.原理 简单的Dubbo生产者和消费者实现服务调用的原理为: ①生产者在注册中心上注册服务: ②消费者在注册中心上订阅服务: ③一旦建立了订阅,消费者和生产者将进行点对点的通信: 此时会产生一个问题:如果作为第三方需要对服务的调用过程进行日志记录(有实际生产需求),那么将失去对调用服务的控制. 于是,在Dubbo简单生产者和消费者的基础上,增加一个日志服务器(本质上也是一个Dubbo生产者),并使用Dubbo拦截器实现日志的

log4net日志插件的使用

1.安装log4net 2.引用 3.配置(web.config文件) <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <log4net> <!--信息日志配置--> <appender name=

[转]Log4Net日志插件配置详解

log4net是一款优秀的第三方日志框架,可以很容易的加载到开发项目中(引用log4net的dll,再配置些基本参数即可),帮助程序员把日志信息输出到各种不同的目标,常见的有文本.数据库.windows日志.邮件.内存缓冲区等目标. 首先需要log4net的dll(源码中dll版本是1.2.10.0),引用到程序中,然后再配置下配置文件,配置文件如下: [html] view plain copy <?xml version="1.0"?> <configuratio

日志组件Log4Net

1 <?xml version="1.0" encoding="utf-8"?> 2 <configuration> 3 <configSections> 4 <!--添加自定义节点:log4net type:解析类名,程序集名(log4net.dll)--> 5 <section name="log4net" type="log4net.Config.Log4NetConfigur

统一日志系统 Log4Net/ExceptionLess

一.   写在前面 本文Log4Net介绍了基础的方式,大数据量生产环境不能使用,中等日志量请日志单库. 希望爱技术的你不要错过exceptionless和ELK 第四节开始简单配置大牛们推荐的了ExceptionLess, 一款开源分布式日志系统. 日志系统对于任何项目都是必不可少的,无论对于测试阶段的debug,性能测试,执行时间,操作记录还是线上的问题排查,访问记录等,日志系统都扮演着重要的角色.本篇分享的目的是能帮助需要的人快速搭建自己的LogSystem.,仅供参考. 先上个图呗,自认

日志组件log4net学习总结

记录的日志类别主要有FATAL(致命错误).ERROR(一般错误).WARN(警告).INFO(一般信息).DEBUG(调试信息)五种. 1.在配置文件中添加以下配置节,并在顶级节点<configuration>下增加<log4net>子节点. <configSections> <section name ="log4net" type="log4net.Config.Log4NetConfigurationSectionHandle