一、 Log4net是什么、优点

用来记录程序日志,优点:1.提供应用程序运行时的精确环境,可供开发人员尽快找到应用程序中的Bug;2.日志信息可以输出到不同的地方(数据库,文件,邮箱等)。

二、 Log4net的结构

log4net 有四种主要的组件,分别是Logger(记录器), Repository(库), Appender(附着器)以及 Layout(布局).

二、 Log4net的结构

第一步:首先下载log4net.dll并在项目中引用log4net.dll文件。

第二步:在Web.config文件中进行添加configSections的节点

<configSections>

    <!--log4net配置-->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>

第三步:添加log4net配置节点

 <!--log4net日志配置-->
<log4net> <logger name="logerror">
<level value="ERROR" />
<appender-ref ref="ErrorAppender" />
</logger>
<logger name="loginfo">
<level value="INFO" />
<appender-ref ref="InfoAppender" />
</logger>
<!--<logger name="logdebug">
<level value="DEBUG">
<appender-ref ref="DebugAppender" />
</level>
</logger>-->
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="C:\ErrorLog.txt" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="" />
<param name="MaximumFileSize" value="1MB" />
<param name="RollingStyle" value="Size" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%-5p %d [%c] %m%n" />
</layout>
</appender>
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="C:\InfoLog.txt" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="" />
<param name="MaximumFileSize" value="1MB" />
<param name="RollingStyle" value="Size" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%-5p %d [%c] %m%n" />
</layout>
</appender>
<!--<appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="C:\DebugLog.txt" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="" />
<param name="MaximumFileSize" value="1MB" />
<param name="RollingStyle" value="Size" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%-5p %d [%c] %m%n" />
</layout>
</appender>-->
</log4net>

webconfig Code

第四步:添加日记类logHelper

/// <summary>
/// 使用LOG4NET记录日志的功能,在WEB.CONFIG里要配置相应的节点
/// </summary>
public class LogHelper
{
//log4net日志专用
public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");
public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror"); public static void SetConfig()
{
log4net.Config.XmlConfigurator.Configure();
} public static void SetConfig(FileInfo configFile)
{
log4net.Config.XmlConfigurator.Configure(configFile);
}
/// <summary>
/// 普通的文件记录日志
/// </summary>
/// <param name="info"></param>
public static void WriteLog(string info)
{
if (loginfo.IsInfoEnabled)
{
loginfo.Info(info);
}
}
/// <summary>
/// 错误日志
/// </summary>
/// <param name="info"></param>
/// <param name="se"></param>
public static void WriteLog(string info, Exception se)
{
if (logerror.IsErrorEnabled)
{
logerror.Error(info, se);
}
}

LogHelper类 Code

第五步:添加Global.cs配置

void Application_Start(object sender, EventArgs e) 

    {
//在应用程序启动时运行的代码
//初始日志的配置
LogHelper.SetConfig();
}

Global Code

void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
Exception ex = HttpContext.Current.Server.GetLastError();
Base_Teacher teacher = Session[UCSKey.SESSION_LoginInfo] as Base_Teacher; if (teacher != null)
{
//记录错误日志
// LogHelper.WriteErrorLog("\r\n用户ID:" + teacher.YHZH + "\r\n用户名:" + teacher.XM + "\r\n客户机IP:" + Request.UserHostAddress + "\r\n错误地址:" + Request.Url + "\r\n异常信息:" + Server.GetLastError().Message, ex);
//记录普通日志
LogHelper.WriteInfoLog("\r\n用户ID:" + teacher.YHZH + "\r\n用户名:" + teacher.XM + "\r\n客户机IP:" + Request.UserHostAddress + "\r\n错误地址:" + Request.Url + "\r\n错误时间:" + DateTime.Now);
//记录debug日志
// LogHelper.WriteDebugLog("\r\n用户ID:" + teacher.YHZH + "\r\n用户名:" + teacher.XM + "\r\n客户机IP:" + Request.UserHostAddress + "\r\n错误地址:" + Request.Url + "\r\n异常信息:" + Server.GetLastError().Message, ex); }
}

Global Code

第六步:页面中使用

在try catch的catch中调用 loghelper类即可。

总结:

1.webconfig配置要灵活

2.不断调试、多点耐心

tks:

代码参考:http://www.cnblogs.com/ringwang/archive/2012/07/06/2579775.html

保存邮箱是、数据库:http://www.poluoluo.com/jzxy/201311/249970.html

Log4Net简单使用的更多相关文章

  1. winform 下log4net简单应用示例及“缺少log4net引用”的处理方案

    1.添加应用log4net.dll 2.新增log4net.config文件,文件内容如下 <?xml version="1.0" encoding="utf-8& ...

  2. [开源]基于Log4Net简单实现KafkaAppender

    背景 基于之前基于Log4Net本地日志服务简单实现 实现本地日志服务,但是随着项目开发演进,本地日志服务满足不了需求,譬如在预发布环境或者生产环境,不可能让开发人员登录查看本地日志文件分析. Kaf ...

  3. log4net简单配置内容

    首先将log4net.dll下载来,添加到项目引用中: 在assembly文件最后面加(其实没关系的): [assembly: log4net.Config.XmlConfigurator(Confi ...

  4. log4Net 简单配置实用

    <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigu ...

  5. log4net简单用法

    一.NuGet在Server,mvc中添加Common.Logging和common.Logging.Log4Net如下图 二.在Server层创建logger类 <?xml version=& ...

  6. log4net 简单配置

    <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigu ...

  7. C# Log4Net简单使用方法

    log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台.文件.数据库等)的工具. 使用log4net,一个很明显的好处 ...

  8. c#log4net简单好用的配置

    新建文件log4net.config 编辑文件log4net.config <configuration> <configSections> <!--日志记录--> ...

  9. Log4Net 全方位跟踪程序运行

    原文:http://kb.cnblogs.com/page/100968/ 1.Log4Net 简单使用 使用Log4net必须引入log4net.dll 文件,因为log4net 是开源的,所以可以 ...

随机推荐

  1. SQL Server 重新初始化系统数据库中的单引号问题

    在最近的数据库跨机房迁移中,由于硬件的限制,需要滚动式地将数据库一台台迁移到新机房,先在新机房搭建一个新环境,将数据迁移过去,再将旧机房的机器下架搬到新机房,重新配置后用于下一轮的升级,重新配置过程中 ...

  2. JSP的那些事儿(2)---- DWR2.0 的配置和使用

    JSP的那些事儿(2)----DWR2.0 的配置和使用 分类: Web开发 JAVA 2009-04-23 15:43 999人阅读 评论(0) 收藏 举报 jspdwrjavascriptserv ...

  3. 集合使用copy与mutableCopy的区别

    集合(NSArray,NSSet,NSDictionary等)使用copy与mutableCopy的区别是类似的,下面以NSMutableArray.NSArray 为例子验证如下: NSMutabl ...

  4. django with mysql (part-3)

    step01: write second view-function vim views.py step02: configure your ( urls.py ) vim urls.py step0 ...

  5. 前端与Server端(路由)

    路由(前端):原理:只有几个XHR请求,就能实现页面无刷新闪烁更改URL 前端:1. ajax承担数据通信以及相对应的逻辑(交互逻辑) ajax进行数据交互,跟URL打交道,让数据交互的变化反映到UR ...

  6. 从头学Android之Android布局管理:LinerLayout线性布局

    LinerLayout线性布局: 这种布局方式是指在这个里面的控件元素显线性,我们可以通过setOrientation(int orientation)来指定线性布局的显示方式,其值有:HORIZON ...

  7. [原创]IBM BLM模型思维导图

    [原创]IBM BLM模型思维导图 IBM业务领先模型 http://wenku.baidu.com/view/1d1d247af242336c1eb95e3b.html?from=search

  8. Android之判断当前指定App是否在前台

    直接上代码,不多说 //在进程中去寻找当前APP的信息,判断是否在前台运行 private boolean isAppOnForeground() { ActivityManager activity ...

  9. Visual Studio 2013 and .NET 4.6

    I'm trying to set the 4.6 .NET framework for my project and in the settings, as it wasn't listed, I ...

  10. 简述Java内存模型的由来、概念及语义

    JDK5引入了JMM新规范:JSR-133,引入了happens-before/可见性等概念,对synchronized/volatile/final等关键词进行了语义定义.解决了:final变量在构 ...