log4net--不可多得的开源日志记录组件

  • 1 前奏

    一直在用log4net日志工具,却没时间写个日志给大家分享一下这个工具,趁最近比较空些,好好分享一下这个工具。
  • 2 说明

    Log4net介绍就不多说,这里说下他的特点:

    1.程序中如果加入了Log输出代码,程序运行过程中就能生成并输出日志信息而无需人工干预。

    2.日志信息可以输出到不同的地方(文件中,控制台中,Windows事件日志,数据库等)
  • 3 开始

    Log4net的官网:官方网站:http://logging.apache.org/log4net/ , 英文好的孩子可以多去官网上瞅瞅,我们可以去官网下载源代码或者dll文件。



    下载文件后,将压缩包解压,我们可以看到解压后的文件

打开bin目录后,还会看到一个目录

双击“net”目录,我们可以看到各个版本号的文件夹,打开对应自己.net版本的文件,将dll文件引入到项目中去。

  • 4 编码

    配置config目录
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<!--定义输出到文件中-->
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<!--定义文件存放位置-->
<file value="D:/log4netfile.txt" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd-HH:mm:ss" />
<layout type="log4net.Layout.PatternLayout">
<!--输出格式-->
<!--样例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info-->
<conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline" />
</layout>
</appender>
<!--将错误信息插入SQLServer数据库数据链接 插入数据库-->
<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
<bufferSize value="10"/>
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<!--数据连接串-->
<connectionString value="server=(local);database=hyoav10_pro_gdcrm;user id=sa;password=sa!@#$%^*(sa;"/>
<!--生成表的SQL语句-->
<!-- CREATE TABLE [dbo].[Log](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Date] [datetime] NOT NULL,
[Thread] [varchar](255) COLLATE Chinese_PRC_CI_AS NOT NULL,
[Level] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[Logger] [varchar](255) COLLATE Chinese_PRC_CI_AS NOT NULL,
[Message] [varchar](4000) COLLATE Chinese_PRC_CI_AS NOT NULL,
[Exception] [varchar](2000) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]-->
<!--插入数据库的SQL语句-->
<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)"/>
<!--定义各个字段-->
<!--日志的时间-->
<parameter>
<parameterName value="@log_date"/>
<dbType value="DateTime"/>
<layout type="log4net.Layout.RawTimeStampLayout"/>
</parameter>
<!--线程ID-->
<parameter>
<parameterName value="@thread"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread"/>
</layout>
</parameter>
<!--日志等级-->
<parameter>
<parameterName value="@log_level"/>
<dbType value="String"/>
<size value="50"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level"/>
</layout>
</parameter>
<!--检测的类名-->
<parameter>
<parameterName value="@logger"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger"/>
</layout>
</parameter>
<!--错误信息-->
<parameter>
<parameterName value="@message"/>
<dbType value="String"/>
<size value="4000"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message"/>
</layout>
</parameter>
<!--异常信息-->
<parameter>
<parameterName value="@exception"/>
<dbType value="String"/>
<size value="2000"/>
<layout type="log4net.Layout.ExceptionLayout"/>
</parameter>
</appender>
<!--定义输出到控制台命令行中-->
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<!--定义输出到windows事件中-->
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<!--启动记录日志类型-->
<root>
<level value="ERROR"/>
<!--文件形式记录日志-->
<appender-ref ref="LogFileAppender"/>
<!--插入数据库-->
<appender-ref ref="ADONetAppender" />
<!--<appender-ref ref="ConsoleAppender"/>
<appender-ref ref="EventLogAppender"/>-->
</root>
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>

紧接着,我们把类也写出来。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; [assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace TestLog4Net
{
public class Log
{
/// <summary>
/// 自定义错误信息
/// </summary>
/// <param name="t">错误的类</param>
/// <param name="ex">错误信息</param>
public static void WriteLog(Type t, Exception ex)
{
log4net.ILog log = log4net.LogManager.GetLogger(t);
log.Error("错误", ex);
}
/// <summary>
/// 错误信息
/// </summary>
/// <param name="t">错误的类</param>
/// <param name="msg">错误信息</param>
public static void WriteLog(Type t, string msg)
{
log4net.ILog log = log4net.LogManager.GetLogger(t);
log.Error(msg);
}
}
}

好了,我们可以开始测试我的成果了

写入测试的代码

      //第一种记录用法
//(1)第一个参数是类名称
//(2)第二个参数是字符串信息
Log.WriteLog(typeof(FormMain), "测试Log4Net日志是否写入");
//第二种记录用法
//(1)第一个参数是类名称
//(2)第二个参数是需要捕捉的异常块
//try {
//}catch(Exception ex){
// LogHelper.WriteLog(typeof(FormMain), ex);
//}

好,我们可以开始测试了,执行代码,我们会在数据库和txt文档中可以看到错误日志。

数据库错误日志:

txt文档错误日志:

好了,我们的log4.net开源日志组件就好了,源代码下载:

下载地址

log4net--不可多得的开源日志记录组件的更多相关文章

  1. 【干货】.NET开发通用组件发布(四) 日志记录组件

    组件介绍和合作开发 http://www.cnblogs.com/MrHuo/p/MrHuoControls.html 日志记录组件功能介绍 通过基类Logger,实现了文本记录日志和数据库记录日志两 ...

  2. 日志记录组件[Log4net]详细介绍

    转载:http://www.cnblogs.com/liwei6797/archive/2007/04/27/729679.html 因为工作中有要用到Log记录,找到一篇不错的文章,就转了过来. 一 ...

  3. C#Log4net日志记录组件的使用

    一.Log4Net介绍 Log4net是基于.NET开发的一款非常著名的记录日志开源组件.它通过一套XML配置的日志引擎,将日志分不同的等级,分别是:FATAL . ERROR. WARN. INFO ...

  4. 以HTML为表现的日志记录组件

    日志搬家:http://www.loogn.net/blog/Article.aspx?id=21 关于日志记录,如果你不想随用随写,又不想用log4net的话,也许你可以了解一下这个! 我也是个很懒 ...

  5. Elmah 日志记录组件

    http://www.cnblogs.com/jys509/p/4571298.html 简介 ELMAH(Error Logging Modules and Handlers)错误日志记录模块和处理 ...

  6. log4net.NoSql +ElasticSearch 实现日志记录

    前言: 前两天在查找如何扩展log4net的日志格式时找到一个开源项目Log4net.NoSql,它通过扩展Appender实现了把日志输出到ElasticSearch里面.顺藤摸瓜,发现涉及的项目还 ...

  7. 转:使用log4net完成程序异常日志记录(使用SQLite数据库记录和普通文本记录)

    http://www.cnblogs.com/kyo-yo/archive/2010/06/11/use-log4net-to-log-exception.html 在前端时间开发的时候由于需要将异常 ...

  8. .Net Log4Net配置多文件日志记录

    其他配置详情在网上都可以找到,但是很多看着都晕,本人就记录一下如何使用: 1.按不同级别(官方说明)可记录的日志级别有: Info.Warn.Error.Debug 2.可以按着四个配置四个输出日志路 ...

  9. .Net Core(.NET6)中接入Log4net和NLog进行日志记录

    一.接入Log4net 1.按日期和大小混合分割日志 nuget包安装 log4net Microsoft.Extensions.Logging.Log4Net.AspNetCore 配置文件 配置文 ...

随机推荐

  1. Linux的#和$区别

    [#]代表 root权限[$]代表普通用户 如果更改了/etc/profile , 或~/.bashrc等文档,可以用任何符号来代替它们. linux窗口下的[root@locate~]其中的[~]代 ...

  2. [NOIP2014] 提高组 洛谷P2296 寻找道路

    题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通. 2 .在满足条 ...

  3. 偶然发现的Unity3d,两点之间的距离计算。

    无意间查了一下Vector3的API,发现了一个方法. magnitude  Returen the length of vector(Read Only). 然后就试了一下这个方法. Vector3 ...

  4. TypeScript Class(类)

    传统的JavaScript注重用函数和基于原型的继承来创建可复用的组件,但这可能让用习惯面对对象方式的程序员感到棘手,因为他们的继承和创建对象都是由类而来的.从JavaScript的下一个版本,ECM ...

  5. Setting up Django and your web server with uWSGI and nginx

    https://uwsgi.readthedocs.io/en/latest/tutorials/Django_and_nginx.html Setting up Django and your we ...

  6. JavaWeb---总结(九)通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片  1 package gacl. ...

  7. 利用WSCF进行契约先行的Web Services开发

    http://www.cnblogs.com/goody9807/archive/2007/06/05/772107.html 什么是契约先行(Contract-First)? 如果说一个新的软件开发 ...

  8. BZOJ2458: [BeiJing2011]最小三角形

    类似分治最近点对的方法乱搞一下就行. #include<bits/stdc++.h> #define N 200010 #define M (s+t>>1) using nam ...

  9. SQL 字段保留下划线后部分

    select  SUBSTRING(b.SUMMARY,0,charindex('_',b.SUMMARY))as SUMMARY  from UltimusDB.dbo.INCIDENTS b

  10. Java数据结构——迭代器