效果:

描述:

利用log4net组件进行错误日志的记录,log4net记录错误的方式我所了解的有4种,No.1 文本形式记录日志,No.2存储到数据库形式记录日志,No.3控制台控制显示日志,No.4Windows事件日志。本文所采用的是第一种形式------文本形式记录日志。

首先,引用log4net.dll文件,然后创建一个config文件,进行配置日志的相关信息,比如:配置路径,以及错误的显示形式等。然后创建一个Global.asax应用程序文件,用于第一次访问时执行配置文件。然后创建一个类,进行错误日志的整理,然后调用这个类进行写入日志。

代码:

配置文件(log.config)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<log4net>
<root>
<level value="ALL" />
<!--文件形式记录日志-->
<appender-ref ref="RollingLogFileAppender" />
</root>
<!--输出到文件中-->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--保存路径-->
<file value="log\\Log-" />
<!--是否续写-->
<appendToFile value="true" />
<!--按照文件的大小进行变换日志文件-->
<rollingStyle value="Date" />
<!--保留的log文件数量 超过此数量后 自动删除之前的 好像只有在 按Size分割时有效-->
<param name="MaxSizeRollBackups" value="100"/>
<param name="StaticLogFileName" value="false"/>
<param name="DatePattern" value="yyyy-MM-dd&quot;.log&quot;"/>
<encoding value="utf-8" />
<!--最小锁定模型以允许多个进程可以写入同一个文件-->
<lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" />
<!--
<maxSizeRollBackups value="10" />
<maximumFileSize value="1MB" />
-->
<layout type="log4net.Layout.PatternLayout">
<param name="conversionPattern" value="时间:%d%n线程:[%t]%n类型:%-5p%n标题:%c%n内容:%m%n——————————%n" />
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
</appender>
</log4net>
</configuration>

应用程序(Global.asax)

protected void Application_Start(object sender, EventArgs e)
{
log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(Server.MapPath("~") + @"\log.config"));
}

处理日志(logHelper.cs)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace log4net_Write
{
public class logHelper
{
/// <summary>
/// 生成日志信息——Fatal(致命错误)
/// </summary>
/// <param name="message">日志内容</param>
public static void Fatal(string message)
{
log4net.ILog log = log4net.LogManager.GetLogger("Fatal");
if (log.IsFatalEnabled)
{
log.Fatal(message);
}
log = null;
} /// <summary>
/// 生成日志信息——Fatal(致命错误)
/// </summary>
/// <param name="name">名称</param>
/// <param name="message">日志内容</param>
public static void Fatal(string name, string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(name);
if (log.IsFatalEnabled)
{
log.Fatal(message);
}
log = null;
} /// <summary>
/// 生成日志信息——Error(一般错误)
/// </summary>
/// <param name="message">日志内容</param>
public static void Error(string message)
{
log4net.ILog log = log4net.LogManager.GetLogger("Error");
if (log.IsErrorEnabled)
{
log.Error(message);
}
log = null;
} /// <summary>
/// 生成日志信息——Error(一般错误)
/// </summary>
/// <param name="name">名称</param>
/// <param name="message">日志内容</param>
public static void Error(string name, string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(name);
if (log.IsErrorEnabled)
{
log.Error(message);
}
log = null;
} /// <summary>
/// 生成日志信息——Warn(警告)
/// </summary>
/// <param name="message">日志内容</param>
public static void Warn(string message)
{
log4net.ILog log = log4net.LogManager.GetLogger("Warn");
if (log.IsWarnEnabled)
{
log.Warn(message);
}
log = null;
} /// <summary>
/// 生成日志信息——Warn(警告)
/// </summary>
/// <param name="name">名称</param>
/// <param name="message">日志内容</param>
public static void Warn(string name, string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(name);
if (log.IsWarnEnabled)
{
log.Warn(message);
}
log = null;
} /// <summary>
/// 生成日志信息——Info(一般信息)
/// </summary>
/// <param name="message">日志内容</param>
public static void Info(string message)
{
log4net.ILog log = log4net.LogManager.GetLogger("Info");
if (log.IsInfoEnabled)
{
log.Info(message);
}
log = null;
} /// <summary>
/// 生成日志信息——Info(一般信息)
/// </summary>
/// <param name="name">名称</param>
/// <param name="message">日志内容</param>
public static void Info(string name, string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(name);
if (log.IsInfoEnabled)
{
log.Info(message);
}
log = null;
} /// <summary>
/// 生成日志信息——Debug(调试信息)
/// </summary>
/// <param name="message">日志内容</param>
public static void Debug(string message)
{
log4net.ILog log = log4net.LogManager.GetLogger("Debug");
if (log.IsDebugEnabled)
{
log.Debug(message);
}
log = null;
} /// <summary>
/// 生成日志信息——Debug(调试信息)
/// </summary>
/// <param name="name">名称</param>
/// <param name="message">日志内容</param>
public static void Debug(string name, string message)
{
log4net.ILog log = log4net.LogManager.GetLogger(name);
if (log.IsDebugEnabled)
{
log.Debug(message);
}
log = null;
}
}
}

调用

   protected void btn_Click(object sender, EventArgs e)
{
try
{
int intStr = Convert.ToInt32(tb.Text);
tb2.Text = "转换成功:" + intStr.ToString();
}
catch (Exception ex)
{
//logHelper.Error(ex.ToString());
//logHelper.Debug(ex.ToString());
//logHelper.Fatal(ex.ToString());
//logHelper.Info(ex.ToString());
logHelper.Warn("warn名称", ex.ToString());
}
}

Demo下载:

http://files.cnblogs.com/files/xinchun/GetLog2.zip

点滴积累【C#】---使用log4net组件记录错误日志(以文本形式记录)的更多相关文章

  1. ASP.NET MVC中Log4Net记录错误日志的使用

    第一.在管理NuGet程序包 =>下载 Log4Net 第二.在web.config配置Log4Net 1:在<configuration>节点下 <configSection ...

  2. WebForm应用log4net记录错误日志——使用线程列队写入

    我的项目结构如下图: 日志帮助类库需要log4net包:工具—NuGet包管理器—管理解决方案NuGet程序包 线程日志帮助类 FlashLogger.cs 代码 using System; usin ...

  3. ASP.NET记录错误日志的方式

    程序记录错误日志是一种看起来对一般用户没什么作用,但对程序开发者用处很大的东西,它能查出错误或异常的程序马迹.那么,常用的记录错误日志的方式有哪些呢? 大多数情况下使用的是 1.直接记录为txt/xm ...

  4. AspNetCore 使用log4net+IExceptionFilter 记录错误日志

    错误日志的好处我就不说了,大家都心里有数,那今天浩子就给大家说一说基本的错误日志吧这次通过log4net记录日志. 原来写过一个关于Nlog的日志框架,传送门为:https://www.cnblogs ...

  5. asp.net mvc中加入log4net记录错误日志

    直接上代码示例:https://share.weiyun.com/aff36f2547514cfefe129ebb8ccb28ef 首先添加加log4net的dll,推荐用nuget.... 贴上配置 ...

  6. ASP.NET - 记录错误日志

    不需要像log4net/Nlog/Common Logging配置,简单好用. 不用增加声明logger对象,可记录当前执行状况. 可以定义 维护功能模板的开发人员,以便用功能模块对于开发人员. 出处 ...

  7. ASP.NET 配置log4net启用写错误日志功能

    http://www.cnblogs.com/yeminglong/archive/2013/05/21/3091192.html 首先我们到apche的官网下载log4net的项目编译得到log4n ...

  8. C# 记录错误日志

    程序的错误日志如何记录下来? 可以在遇到异常时,Catch异常,然后把异常的信息输出到txt文件中即可 /// <summary> /// 错误日志 /// </summary> ...

  9. (转)处理SQL中的异常并记录错误日志

    原文地址 创建错误日志表: ),ErrState ),ErrLine )) --创建错误日志记录存储过程: CREATE PROCEDURE ErrorLog AS SELECT ERROR_NUMB ...

随机推荐

  1. ArcGIS 10.2 三维分析工具箱部分工具不能用

    如在以下面的方式操作时发现弹出错误提示, “ Unable to execute the selected tool”... 问题解决方法为: 点击Extensions...,然后把下图中的选项全部勾 ...

  2. 【mybatis】mybatis中放置IN查询拼接sql过长,IN查询进行分批次查询的处理

    需要使用的切割list集合的工具类,链接:https://www.cnblogs.com/sxdcgaq8080/p/9376947.html 处理逻辑,原本的一个LIst,进行切割,循环进行myba ...

  3. SpringMVC中拦截器的使用

    什么是拦截器 拦截器通常一般指的是通过拦截从浏览器发往服务器的一些请求来完成某些功能的一段程序代码一般在一个请求发生之前,发生时,发生后我们都可以对请求进行拦截 拦截器可以做什么 拦截器可以用于权限验 ...

  4. 第七章Openwrt安装服务器环境php+uhttpd+mysql

    在前面的文章中刷openwrt.配置网络环境.挂载u盘都配置成功了之后,下面的操作就变得简单起来!!!! 1. putty连接到路由器 2. 安装php opkg install php5-fastc ...

  5. 使用weinre调试手机页面

    阅读目录 介绍Weinre 安装Weinre 通过Weinre调试页面 启动target 介绍Weinre Weinre(Web Inspector Remote),是一种远程调试工具.功能与Fire ...

  6. iOS:quartz2D绘图

    Quartz-2D:绘图 一.介绍: •Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境   •Quartz 2D API可以实现许多功能,如基于路径的绘图.透明度.阴影 ...

  7. Android获取wifi MAC,关闭的wifi不能获取

    最近一直在尝试着在Android上通过ndk用C++获取本机MAC地址,但是用ioctl(SIOCGIFHWADDR)时,一直返回值小于0,即获取不到接口信息.刚开始我以为是自己漏掉了哪些访问权限,所 ...

  8. vue项目如何实现剪切板功能--vue-clipboard2

    一.vue项目利用vue-clipboard2实现剪切板的功能 1.安装vue-clipboard2插件:cnpm install --save vue-clipboard2 2.main.js添加 ...

  9. 解决python pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query')

    解决python pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query') 学习了:ht ...

  10. 转:windows BAT 批处理脚本教程

    转自:http://www.cnblogs.com/mq0036/p/3412171.html BAT 批处理脚本教程 第一章 批处理基础第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文 ...