点滴积累【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 ...
随机推荐
- 记一个有趣的Java OOM!
原文:https://my.oschina.net/u/1462914/blog/1630086 引言 熟悉Java的童鞋,应该对OOM比较熟悉.该类问题,一般都比较棘手.因为造成此类问题的原因有很多 ...
- Git 对比 SVN
转自:http://www.aqee.net/5-fundamental-differences-between-git-svn/ 我是一开始就用Mercurial, Git这类的系统.(现在已经百分 ...
- .net 4.5如何使用Async和Await进行异步编程
通过使用异步编程,可避免出现性能瓶颈,并提高应用程序的整体响应.然而,技术编写异步应用程序的传统方法过于复杂,这使得异步程序难以编写,调试和维护. Visual Studio2012引入了一个简单的开 ...
- 如何使用SQLMAP绕过WAF
WAF(web应用防火墙)逐渐成为安全解决方案的标配之一.正因为有了它,许多公司甚至已经不在意web应用的漏洞.遗憾的是,并不是所有的waf都是不可绕过的!本文将向大家讲述,如何使用注入神器SQLMa ...
- pymongo 目标计算机积极拒绝
今天在使用pymongo连接服务器上的mongodb数据库时出现该问题 其实原因是mongodb本身配置只允许本机连接数据库 打开mongod.conf即mongodb的配置文件 一般来说是vim / ...
- Jupyter Notebook 快捷键
Jupyter Notebook 快捷键 从命令模式进入编辑模式需按 Enter 键,从编辑模式切换到命令模式需按Esc 键. Jupyter Notebook 是一个交互式笔记本程序, 其有丰富的快 ...
- 【Docker】mesos如何修改hostport默认端口范围?
1.marathon文档:https://mesosphere.github.io/marathon/docs/native-docker.html Static port mapping: It's ...
- Shiro(4)默认鉴权与自定义鉴权
=========默认鉴权======== 过滤链中定义: <!-- 过滤链定义 --> <property name="filterChainDefinitions&qu ...
- UVA 10441 - Catenyms(欧拉道路)
UVA 10441 - Catenyms 题目链接 题意:给定一些单词,求拼接起来,字典序最小的,注意这里的字典序为一个个单词比过去,并非一个个字母 思路:欧拉回路.利用并查集判联通,然后欧拉道路判定 ...
- 在单进程单线程或单进程多线程下实现log4cplus写日志并按大小切割
基于脚本配置来过滤log信息 除了通过程序实现对log环境的配置之外.log4cplus通过PropertyConfigurator类实现了基于脚本配置的功能.通过 脚本能够完毕对logger.app ...