效果:

描述:

利用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. 手机在线更新系统MySQL数据库服务器参数优化mycnf,16G内存8核CPU,

    业务场景: 后台支持手机在线更新系统,db服务器内存16G,8核,dell的pc服务器. qps: 200个左右 tps: 1个左右 一分钟50几个 sort_buffer_size = 32M 大了 ...

  2. 【chrome】在做项目使用chrome调试的时候,调整Console的位置

    在新的电脑上安装了谷歌浏览器 ,然后在调试系统的时候,发现console这个控制台,模拟调试js的位置无法显示到source以下, 解决问题: 怎么样让console控制台显示到sources下,在查 ...

  3. Unity-EasyTouch插件之One Finger

    这节课,我们主要讲下单个手指的测试.比如单击啊,双击啊,拖动,单手滑动等. 单击: public class TouchTest : MonoBehaviour { // Subscribe to e ...

  4. Netty游戏服务器之六服务端登录消息处理

    客户端unity3d已经把消息发送到netty服务器上了,那么ServerHandler类的public void channelRead(ChannelHandlerContext ctx, Obj ...

  5. 关于Java代码优化的44条建议!

    关于Java代码优化的N条建议! 本文是作者:五月的仓颉 结合自己的工作和平时学习的体验重新谈一下为什么要进行代码优化.在修改之前,作者的说法是这样的: 就像鲸鱼吃虾米一样,也许吃一个两个虾米对于鲸鱼 ...

  6. Vmware 14.0 版本中安装Ubuntu 17.10版本无法调整分辨率的问题

    装完ubuntu后发现在vmware中选择了查看-自动调整大小-自适应客户机,虚拟机也无法随着窗口大小来切换分辨率,其实是因为WAYLAND限制了. 1. 先安装vim sudo apt-get in ...

  7. Python Matplotlib绘制气温图表

    代码中数据从 www.wunderground.com/history/ 下载 #coding=utf-8 import csv from datetime import datetime from ...

  8. MongoDB分片集群节点状态stateStr:RECOVERING解决

    1.关闭一直处于RECOVERING状态的mongodb server /opt/mongodb/mongodb-linux-x86_64-2.4.8/bin/mongo  127.0.0.1:220 ...

  9. java web 拦截器、过滤器理解

    1.首先要明确什么是拦截器.什么是过滤器 1.1 什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加 ...

  10. onmouseout,mouseover经过子元素也触发的问题解决方案

    在mouseout与mouseover的冒泡问题上,相信有很多朋友都遇到过.今天这里就总结一下 关于mouseover和mouseout冒泡问题的解决方案: 首先,看下event.relatedTar ...