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开源日志组件就好了,源代码下载:

下载地址

最新文章

  1. bootstrap1
  2. 【转】Java Web 项目获取运行时路径 classpath
  3. Java-马士兵动态代理模式
  4. Windows Phone 一、XAML基础语法
  5. 【原】运动版的轮播图,有左右按钮和单独分页,原生JS版
  6. Ue4全景图制作设想
  7. shell 中的&gt;文件重定向符 和 标准输入、输出、错误以及 2&amp;1 的含义*
  8. /storage/sdcard, /sdcard, /mnt/sdcard 三者的区别
  9. 常用CentOS 6/7 扩展源
  10. C/C++中的常成员函数
  11. ice grid 第一篇
  12. 基于jquery 的分页插件,前端实现假分页效果
  13. Window检测网络连接情况
  14. 关于mpvue 切换页面数据没清空
  15. 友善RK3399/NanoPC-T4开发板wiringPi Python库访问GPIO外设实例讲解 -【申嵌视频】
  16. UI自动化之元素定位(xpath、css)
  17. pip的更新问题
  18. Vue(基础五)_vue中用ref和给dom添加事件的特殊情况
  19. mgo mode说明
  20. Python3基础 frozenset 使用list创建frozenset

热门文章

  1. bzoj3295: [Cqoi2011]动态逆序对(cdq分治)
  2. codeforces 723B:Text Document Analysis
  3. PowerDesigner中Table视图同时显示Code和Name
  4. Java文件处理:分离全国省市县ID(数据来自和风天气)
  5. BZOJ3224 普通平衡树
  6. 基于WS-BPEL2.0的服务组合研究
  7. sql lock
  8. 闭包-&gt;类的实例数组排序
  9. JQuery------.load()从服务器获取数据并加载到某个类的方法
  10. c#找不到类型或命名空间名称“Word”