先引入log4net

接着配置configuration文件

<?xml version="1.0"?>
<configuration>

<system.web>
        <compilation debug="true" targetFramework="4.0" />
    </system.web>
 <log4net debug="false">

<!--按日期分割日志文件 一天一个-->
  <appender name="LogFileAppenderByDate" type="log4net.Appender.RollingFileAppender" >
   <!--是否续写-->
   <param name="AppendToFile" value="true" />
   <!--最小锁定模型以允许多个进程可以写入同一个文件-->
   <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
   <param name="StaticLogFileName" value="true" />
   <!--保存路径-->
   <param name="File" value="F:\Log\\" />
   <param name="DatePattern" value="yyyy-MM-dd.LOG" />
   <param name="StaticLogFileName" value="false" />
   <param name="RollingStyle" value="Date" />
   <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
   </layout>
  </appender>

<!--按日志容量分割日志文件 10KB一个-->
  <appender name="LogFileAppenderBySize" type="log4net.Appender.RollingFileAppender" >

<!--是否续写-->
   <param name="AppendToFile" value="true" />
   <!--最小锁定模型以允许多个进程可以写入同一个文件-->
   <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />

<param name="StaticLogFileName" value="true" />

<!--按照文件的大小进行变换日志文件-->
   <param name="RollingStyle" value="Size" />
   <param name="File" value="LogData\\log.txt" />
   <!--单个文件最大数量 好像只有在 按Size分割时有效-->
   <param name="MaximumFileSize" value="10KB"/>
   <!--保留的log文件数量 超过此数量后 自动删除之前的   好像只有在 按Size分割时有效-->
   <param name="MaxSizeRollBackups" value="2" />

<param name="StaticLogFileName" value="false" />
   <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="发生时间:%d %n事件级别:%level %n相关类名:%c%n程序文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
   </layout>
  </appender>
  <!--记录日志到数据库-->
  <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
   <bufferSize value="100" />
   <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
   <connectionString value="Data Source=LKYKJYXG-341C59\LKY;database = ITweb;Integrated security = true;" />
   <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
   <parameter>
    <parameterName value="@log_date" />
    <dbType value="DateTime" />
    <layout type="log4net.Layout.RawTimeStampLayout" />
   </parameter>
   <parameter>
    <parameterName value="@thread" />
    <dbType value="String" />
    <size value="255" />
    <layout type="log4net.Layout.PatternLayout">
     <conversionPattern value="%thread" />
    </layout>
   </parameter>
   <parameter>
    <parameterName value="@log_level" />
    <dbType value="String" />
    <size value="50" />
    <layout type="log4net.Layout.PatternLayout">
     <conversionPattern value="%level" />
    </layout>
   </parameter>
   <parameter>
    <parameterName value="@logger" />
    <dbType value="String" />
    <size value="255" />
    <layout type="log4net.Layout.PatternLayout">
     <conversionPattern value="%logger" />
    </layout>
   </parameter>
   <parameter>
    <parameterName value="@message" />
    <dbType value="String" />
    <size value="4000" />
    <layout type="log4net.Layout.PatternLayout">
     <conversionPattern value="%message" />
    </layout>
   </parameter>
   <parameter>
    <parameterName value="@exception" />
    <dbType value="String" />
    <size value="2000" />
    <layout type="log4net.Layout.ExceptionLayout" />
   </parameter>
  </appender>
  <root>
   <!--设置输出级别-->
   <level value="INFO" />
   <!--启用按日期分割-->
   <appender-ref ref="LogFileAppenderByDate" />
   <!--启用按容量分割-->
   <!--<appender-ref ref="LogFileAppenderBySize" />-->
   <!--启用保存到数据库-->
   <appender-ref ref="AdoNetAppender" />
  </root>
 </log4net>
</configuration>

2.在Global.asax文件下写入代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using System.IO; namespace WebApplication1
{
public class Global : System.Web.HttpApplication
{ void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(Server.MapPath("/log4nethh.config"))); } void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码 } void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码 } void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码 } void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。 } }
}

3.写入LogHelper类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using log4net; namespace WebApplication1
{ /// <summary>
/// 日志辅助类
/// </summary>
public class LogHelper
{
private static ILog log;
private static LogHelper logHelper = null;
/// <summary>
/// 初始化
/// </summary>
/// <returns></returns>
public static ILog GetInstance()
{
logHelper = new LogHelper(null); return log;
}
/// <summary>
/// 初始化
/// </summary>
/// <param name="configPath"></param>
/// <returns></returns>
public static ILog GetInstance(string configPath)
{
logHelper = new LogHelper(configPath); return log;
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="configPath"></param>
private LogHelper(string configPath)
{
if (!string.IsNullOrEmpty(configPath))
{
log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(configPath));
}
else
{
log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
}
} }
}

4.使用Log4net的方法(下面的可以写为一个方法,哪里使用哪里调用。)

 Exception exp = Server.GetLastError();
string strE = "\r\n堆栈:" + exp.StackTrace + "\r " + "Message:" + exp.Message + "\r 来源:" + exp.Source + "\r 来源:" + Request.Url;
Response.Write(strE);
// 在事件日志中记录异常信息
ILog log = LogHelper.GetInstance();
log.Warn(strE);
Server.ClearError();
Server.Transfer("Error.aspx", false);

日志 log4net的更多相关文章

  1. Quartz任务调度 服务日志+log4net打印日志+制作windows服务

    引言 现在许多的项目都需要定时的服务进行支撑,而我们经常用到的定时服务就是Quartz任务调度了.不过我们在使用定时Job进行获取的时候,有时候我们就需要记录一下自定义的日志,甚至我们还会对执行定时J ...

  2. C# 添加日志 log4net

    1.首先在项目中添加Nuget程序包... 2.然后在NuGet窗体中搜索Log4Net,然后点击安装<安装过程可能会持续几分钟,请耐心等待> 3.在项目中添加一个Config文件,如已有 ...

  3. 引用日志log4net.dll的web.config配置

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

  4. LOG4NET日志配置及使用

    Log4net的安装 Install-Package log4net 1.先弄个日志记录的类 /// <summary> /// 使用LOG4NET记录日志的功能,在WEB.CONFIG里 ...

  5. asp.net MVC日志插件Log4Net学习笔记二:保存日志到sqlserver的配置

    1.写到sqlserver的配置: <!--保存到SQLSERVER数据库日志--> <log4net> <appender name="AdoNetAppen ...

  6. C#控制台程序使用Log4net日志组件

    1.Log4net一般都不陌生,但是在配置上不同类型的项目又不相同的地方比如C#控制台程序和C# MVCWeb项目,拿控制台项目为例   项目源码在文章底部 2.首先创建一个控制台程序,引入Log4n ...

  7. log4net 日志配置及使用

    一.log4net按照不同的[LEVEL]级别输出到不同文件 <log4net> <!--错误日志:::记录错误日志--> <!--按日期分割日志文件 一天一个--> ...

  8. log4net生成多个日志文件

    使用Log4Net日志组件时,经常会碰到这样一种场景,我想把错误的日志记录在Error.log文件中,而把操作的日志放在Operation.log文件中 经过几番尝试,终于实现了,在此把Log4Net ...

  9. .NET CORE 控制台应用程序配置log4net日志文件

    使用文件格式记录日志 1.新建一个.NET CORE控制台应用程序,添加log4net.dll引用,打开工具->NuGet包管理器->管理解决方案的NuGet程序包. 2.在NuGet-解 ...

随机推荐

  1. ASP.NET创建三层架构图解详细教程

    1.新建项目 2.创建Visual Studio解决方案 3.再创建项目 4.选择类库类型 5.依次创建bll(业务逻辑层),dal(数据访问层)和model(模型层也可以叫实体层) 6.添加一个网站 ...

  2. 浏览器发送URL的编码特性

    转载自:http://blog.csdn.net/wangjun_1218/article/details/4330244 浏览器发送URL的编码特性 尽管有很多规范URL的标准,例如RFC 3987 ...

  3. [C#] 类型学习笔记二:详解对象之间的比较

    继上一篇对象类型后,这里我们一起探讨相等的判定. 相等判断有关的4个方法 CLR中,和相等有关系的方法有这么4种: (1) 最常见的 == 运算符 (2) Object的静态方法ReferenceEq ...

  4. UVA 10766 Organising the Organisation

    https://vjudge.net/problem/UVA-10766 题意: n个员工,除总经理外每个人只能有一个直接上级 有m对人不能成为直接的上下级关系 规定k为总经理 问员工分级方案 无向图 ...

  5. c# 设置和取消文件夹共享及执行Dos命令

    /// <summary> /// 设置文件夹共享 /// </summary> /// <param name="FolderPath">文件 ...

  6. hdu5909 Tree Cutting

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5909 [题解] 设$f_{x,i}$表示以$x$节点的子树中,权值为$i$的子树个数,其中$x$必选. ...

  7. HDU 1114 Piggy-Bank (dp)

    题目链接 Problem Description Before ACM can do anything, a budget must be prepared and the necessary fin ...

  8. 获取应用版本号,版本名称,包名,AppName,图标,是否是系统应用,获取手机中所有应用,所有进程

    PackageManager packageManager = getPackageManager(); PackageInfo packageInfo; = packageManager.getPa ...

  9. 【shell】shell中各种括号的作用()、(())、[]、[[]]、{}

    一.小括号,圆括号() 1.单小括号 ()    ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有 ...

  10. elk + suricata 实验环境详细安装教程

    1.安装运行suricata,需要*** sudo add-apt-repository ppa:oisf/suricata-stable sudo apt-get update sudo apt-g ...