点滴积累【C#】---使用log4net组件记录错误日志(以文本形式记录)
效果:

描述:
利用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".log""/>
<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组件记录错误日志(以文本形式记录)的更多相关文章
- ASP.NET MVC中Log4Net记录错误日志的使用
第一.在管理NuGet程序包 =>下载 Log4Net 第二.在web.config配置Log4Net 1:在<configuration>节点下 <configSection ...
- WebForm应用log4net记录错误日志——使用线程列队写入
我的项目结构如下图: 日志帮助类库需要log4net包:工具—NuGet包管理器—管理解决方案NuGet程序包 线程日志帮助类 FlashLogger.cs 代码 using System; usin ...
- ASP.NET记录错误日志的方式
程序记录错误日志是一种看起来对一般用户没什么作用,但对程序开发者用处很大的东西,它能查出错误或异常的程序马迹.那么,常用的记录错误日志的方式有哪些呢? 大多数情况下使用的是 1.直接记录为txt/xm ...
- AspNetCore 使用log4net+IExceptionFilter 记录错误日志
错误日志的好处我就不说了,大家都心里有数,那今天浩子就给大家说一说基本的错误日志吧这次通过log4net记录日志. 原来写过一个关于Nlog的日志框架,传送门为:https://www.cnblogs ...
- asp.net mvc中加入log4net记录错误日志
直接上代码示例:https://share.weiyun.com/aff36f2547514cfefe129ebb8ccb28ef 首先添加加log4net的dll,推荐用nuget.... 贴上配置 ...
- ASP.NET - 记录错误日志
不需要像log4net/Nlog/Common Logging配置,简单好用. 不用增加声明logger对象,可记录当前执行状况. 可以定义 维护功能模板的开发人员,以便用功能模块对于开发人员. 出处 ...
- ASP.NET 配置log4net启用写错误日志功能
http://www.cnblogs.com/yeminglong/archive/2013/05/21/3091192.html 首先我们到apche的官网下载log4net的项目编译得到log4n ...
- C# 记录错误日志
程序的错误日志如何记录下来? 可以在遇到异常时,Catch异常,然后把异常的信息输出到txt文件中即可 /// <summary> /// 错误日志 /// </summary> ...
- (转)处理SQL中的异常并记录错误日志
原文地址 创建错误日志表: ),ErrState ),ErrLine )) --创建错误日志记录存储过程: CREATE PROCEDURE ErrorLog AS SELECT ERROR_NUMB ...
随机推荐
- python 数据分析 Matplotlib常用图表
Matplotlib绘图一般用于数据可视化 常用的图表有: 折线图 散点图/气泡图 条形图/柱状图 饼图 直方图 箱线图 热力图 需要学习的不只是如何绘图,更要知道什么样的数据用什么图表展示效果最好 ...
- 判断 Selite中标存在或者字段存在的方法
判断表存在的方法很简单,网上很多: SELECT COUNT(*) FROM sqlite_master where type='table' and name='%s'" % tname; ...
- 【UEditor】关于导入ueditor-1.1.3.jar的问题---
最近做一个项目,使用了百度的富文本框,本来是很简便易用的东西,在回显给富文本框的时候, var ue = UE.getEditor('container'); var noticeContent = ...
- 小程序把图片转换成base64
1.首先需要到upng.js,然后upng.js需要pako.js,先一并下载了 2.然后就可以直接用了,具体代码如下: <!--pages/base/base.wxml--> <c ...
- 在JAVA中,如何计算两个日期的月份差
package com.forezp.util; import org.joda.time.DateTime; import org.joda.time.Months; import org.joda ...
- Openshift 节点添加和删除
1.节点添加 在新节点上编辑yum源/etc/yum.repo.d/ocp.repo /etc/hosts在主和节点上都加上相应信息 编辑host文件,加入 [OSEv3:children] mast ...
- Jenkins环境初步配置
为研究在kubernetes上的CICD,先在物理环境下安装个JenKins热热身. 安装Jenkins 在官网https://jenkins.io/下载war包,我的是http://mirrors. ...
- 12.线程通信CyclicBarrier
CountDownLatch 监听某个线程的初始化,等待初始化执行完毕后,通知主线程工作.延迟.阻塞的是主线程,在单个线程中. CyclicBarrier 针对多个线程.线程池,多个线程初始化准备之后 ...
- raymarching
http://www.michaelwalczyk.com/blog/2017/5/25/ray-marching https://kosmonautblog.wordpress.com/2017/0 ...
- jstl表达式引用文件
<script type="text/javascript" src="<c:url value="/resources/js/common/jqu ...