log4net--不可多得的开源日志记录组件
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--不可多得的开源日志记录组件的更多相关文章
- 【干货】.NET开发通用组件发布(四) 日志记录组件
组件介绍和合作开发 http://www.cnblogs.com/MrHuo/p/MrHuoControls.html 日志记录组件功能介绍 通过基类Logger,实现了文本记录日志和数据库记录日志两 ...
- 日志记录组件[Log4net]详细介绍
转载:http://www.cnblogs.com/liwei6797/archive/2007/04/27/729679.html 因为工作中有要用到Log记录,找到一篇不错的文章,就转了过来. 一 ...
- C#Log4net日志记录组件的使用
一.Log4Net介绍 Log4net是基于.NET开发的一款非常著名的记录日志开源组件.它通过一套XML配置的日志引擎,将日志分不同的等级,分别是:FATAL . ERROR. WARN. INFO ...
- 以HTML为表现的日志记录组件
日志搬家:http://www.loogn.net/blog/Article.aspx?id=21 关于日志记录,如果你不想随用随写,又不想用log4net的话,也许你可以了解一下这个! 我也是个很懒 ...
- Elmah 日志记录组件
http://www.cnblogs.com/jys509/p/4571298.html 简介 ELMAH(Error Logging Modules and Handlers)错误日志记录模块和处理 ...
- log4net.NoSql +ElasticSearch 实现日志记录
前言: 前两天在查找如何扩展log4net的日志格式时找到一个开源项目Log4net.NoSql,它通过扩展Appender实现了把日志输出到ElasticSearch里面.顺藤摸瓜,发现涉及的项目还 ...
- 转:使用log4net完成程序异常日志记录(使用SQLite数据库记录和普通文本记录)
http://www.cnblogs.com/kyo-yo/archive/2010/06/11/use-log4net-to-log-exception.html 在前端时间开发的时候由于需要将异常 ...
- .Net Log4Net配置多文件日志记录
其他配置详情在网上都可以找到,但是很多看着都晕,本人就记录一下如何使用: 1.按不同级别(官方说明)可记录的日志级别有: Info.Warn.Error.Debug 2.可以按着四个配置四个输出日志路 ...
- .Net Core(.NET6)中接入Log4net和NLog进行日志记录
一.接入Log4net 1.按日期和大小混合分割日志 nuget包安装 log4net Microsoft.Extensions.Logging.Log4Net.AspNetCore 配置文件 配置文 ...
随机推荐
- 【poj3422】 Kaka's Matrix Travels
http://poj.org/problem?id=3422 (题目链接) 题意 N*N的方格,每个格子中有一个数,寻找从(1,1)走到(N,N)的K条路径,使得取到的数的和最大. Solution ...
- bzoj3295: [Cqoi2011]动态逆序对(树套树)
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...
- Hibernate学习-在线书城后台管理系统的设计
写在前面:小编经历了昨天一晚上加今天一整天的“不吃不喝(夸张点…总之就是把时间全分享给TA了)”终于把程序的问题全部解决了,小编现在的心情十分的开森,开森,开森,Happy,话不多说,直接进入正题: ...
- PHPCMS \phpcms\modules\member\index.php 用户登陆SQL注入漏洞分析
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述2. 漏洞触发条件 0x1: POC http://localhost/p ...
- SQL查询——同一张表的横向与纵向同时比较
表名:student 表结构及数据: +----+--------+---------+------+------------+--------------+---------+ | id | nam ...
- Django admin coercing to Unicode: need string or buffer, tuple found
见 http://stackoverflow.com/questions/29762306/django-admin-coercing-to-unicode-need-string-or-buffer ...
- node项目换了环境node_modules各种报错
依赖文件里,看的出来有些是 ELF 的文件,就是说有些文件是可执行程序,不是拿 js 写的,所以说这部分程序不能适合 Linux .从路径来看,这部分程序的源代码是js写的,但实际调用的是js编译之后 ...
- CSS3中的animation动画
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- String 类相关知识
1.常用方法 1)判断字符串是否为空 public boolean isEmpty()2)获取字符串长度 public int length()3)截取子子串 public String substr ...
- 添加JavaScrip
本章内容: 加载外部脚本:添加嵌入脚本:JavaScrip事件 1,脚本类型:外部文件(使用纯文本格式)加载的脚本:嵌入在页面中的脚本. 加载外部脚本的方法 <body><scrip ...