Log4Net日志组件使用

                                               Log4Net日志组件使用

概要:LogNet是一套开源的程序日志记录系统,经过配置后可以自动抓取程序中的错误、异常信息,并写入磁盘,也可以在异常发生时执行其他指定的操作

新建一个类库:Logger,封装一个LogHelper.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace myOracle.Logger
{
    using log4net;

        public class LogHelper
        {
            static LogHelper()
            {
                //在第一次使用此类的时候加载配置文件
                SetConfig();
            }

            public static readonly log4net.ILog logError = log4net.LogManager.GetLogger("logerror");
            public static readonly log4net.ILog logInfo = log4net.LogManager.GetLogger("logInfo");
            /// <summary>
            /// 默认配置。按配置文件
            /// </summary>
            public static void SetConfig()
            {
                log4net.Config.XmlConfigurator.Configure();
            }

            /// <summary>
            /// 写信息。
            /// </summary>
            /// <param name="info"></param>
            public static void WriteInfoLog(string info)
            {
                if (logInfo.IsInfoEnabled)
                {
                    logInfo.Info(info);
                }
            }

            /// <summary>
            /// 写异常。
            /// </summary>
            /// <param name="info"></param>
            public static void WriteErrorLog(string errLog)
            {
                if (logError.IsErrorEnabled)
                {
                    logError.Error(errLog);
                }
            }

            /// <summary>
            /// 写警告。
            /// </summary>
            /// <param name="info"></param>
            public static void WriteWarnLog(string warnLog)
            {
                if (logError.IsWarnEnabled)
                {
                    logError.Warn(warnLog);
                }
            }

              /// <summary>
              /// 写日志。出错时会写入
              /// </summary>
              /// <param name="info"></param>
              /// <param name="se"></param>
              public static void WriteErrorLog(string info, Exception se)
              {
                  if (logError.IsErrorEnabled)
                  {
                      logError.Error(info, se);
                  }
              }
        }

}

在我们的UI层中的webconfig配置文件中进行配置:

<?xml version="1.0" encoding="utf-8"?>

<!--
  有关如何配置 ASP.NET 应用程序的详细信息,请访问
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>
  <log4net>
    <!--错误日志配置-->
    <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
      <!--设置文本日志将来是写到网站更目录下的Log\\LogError\\文件夹中,如果没有自动创建-->
      <param name="File" value="Log\\LogError\\"/>
      <!--以追加的方式将后面日志写入到日志文件中-->
      <param name="AppendToFile" value="true"/>
      <!--表示日志文件到达上限值时备份-->
      <param name="MaxSizeRollBackups" value="1000"/>
      <!--表示一个日志文件最大只能写入10M的数据-->
      <param name="MaxFileSize" value="10240"/>
      <!--false:表示日志文件按照一定的规则来生成文件名称,true:表示日志文件名称永远都不会改变-->
      <param name="StaticLogFileName" value="false"/>
      <!--表示日志文件的文件名称以yyyyMMdd-->
      <param name="DatePattern" value="yyyyMMdd"/>
      <param name="RollingStyle" value="Date"/>
      <layout type="log4net.Layout.PatternLayout">
        <!--表示日志文件中的内容输出格式-->
        <param name="ConversionPattern" value="%n异常时间:%d [%t] %n异常级别:%-5p %n异 常 类:%c [%x] %n%m %n "/>
      </layout>
    </appender>
    <!--信息日志配置-->
    <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log\\LogInfo\\"/>
      <!--文件路径-->
      <param name="AppendToFile" value="true"/>
      <param name="MaxFileSize" value="10240"/>
      <param name="MaxSizeRollBackups" value="100"/>
      <param name="StaticLogFileName" value="false"/>
      <param name="DatePattern" value="yyyyMMdd"/>
      <param name="RollingStyle" value="Date"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c [%x] %n%m %n"/>
      </layout>
    </appender>
    <!--控制台-->
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline"/>
      </layout>
    </appender>
    <logger name="logerror">
      <level value="ERROR"/>
      <appender-ref ref="ErrorAppender"/>
    </logger>
    <logger name="logInfo">
      <!--ALL:写错误,警告,信息三种类型的日志,-->
      <level value="INFO"/>
      <appender-ref ref="InfoAppender"/>
    </logger>
  </log4net>
  <connectionStrings>
    <add name="connString" connectionString="Data Source=127.0.0.1/orcl;Persist Security Info=True;User ID=SCOTT;Password=677714"/>
  </connectionStrings>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>

</configuration>

在我们的全局配置文件中进行一个简单的测试:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;

namespace myOracle.UI
{
    using myOracle.Logger;
    public class Global : System.Web.HttpApplication
    {

        protected void Application_Start(object sender, EventArgs e)
        {
            //若不想把lognet配置文件写在web.config中,也可以另外手动指定。
           //XmlConfigurator.Configure(new FileInfo(HttpContext.Current.Server.MapPath("~/App_Data/log4net.config")));
            LogHelper.WriteInfoLog("测试信息日志");
        }

        protected void Session_Start(object sender, EventArgs e)
        {

        }

        protected void Application_BeginRequest(object sender, EventArgs e)
        {

        }

        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {

        }

        protected void Application_Error(object sender, EventArgs e)
        {
            Exception objExp = HttpContext.Current.Server.GetLastError();
           LogHelper.WriteErrorLog("\r\n客户机IP:" + Request.UserHostAddress
               + "\r\n错误地址:" + Request.Url
               + "\r\n异常信息:" + Server.GetLastError().Message, objExp);
        }

        protected void Session_End(object sender, EventArgs e)
        {

        }

        protected void Application_End(object sender, EventArgs e)
        {

        }
    }
}

在我们网站的根目录下会自动生成Log文件下的以日期的名称的日志文本文件:

本文仅用于学习!

END!

时间: 2024-10-13 07:31:05

Log4Net日志组件使用的相关文章

ASP.NET使用log4Net日志组件教程(按日期与按日志大小切割)

对于一个大型网站与系统来说,日志是必备的工具,通过日志你可以非常清楚程序的运行情况,及时得到反馈来解决问题,下面介绍ASP.NET版本的log4Net日志组件是个非常强大的工具,最新版本for .net2.0 1.2.10.0 本人搞了一天,终于知道搞清楚怎样使用了,简单记录一下. 以下介绍的方法是log4net使用单独的配置文件的. 开始行动: 第一步:在项目引用log4net.dll文件 第二步: 在Web.config文件中加入一句代码,位置如下: <configuration>   

.net core 使用log4net日志组件

一个web站点必须要记录日志,否则哪里出错了,完全是黑娃找黑妹,两眼一抹黑. 最常用的就是log4net日志组件.我们可以通过扩展加入日志组件. 第一步:在项目中NuGet log4net包,即 Install-Package log4net: 第二步:添加log4net.config配置文件到项目中: 第三步:在项目中新建一个LogExtension类,代码如下所示: public static partial class LogExtension { //配置文件,我将之放在站点根目录的Co

快速入门系列--Log4net日志组件

Log4net是阿帕奇基金会的非常流行的开源日志组件,是log4j的.NET移植版本,至今已经有11年的历史,使用方便并且非常稳定,此外很重要的一点是其和很多开源组件能很好的组合在一起工作,例如NHibernate等.对于以本地日志为主的中小型的项目,Log4net已经足够使用,当然涉及跨平台的大型分布式系统可以选择Elmah等其他日志组件. 在这里,主要介绍log4net的一些关键知识点,详细内容可见以下链接: 官方配置文档:http://logging.apache.org/log4net/

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

1.Log4net一般都不陌生,但是在配置上不同类型的项目又不相同的地方比如C#控制台程序和C# MVCWeb项目,拿控制台项目为例 2.首先创建一个控制台程序,引入Log4net.dll    --使用NuGet    3.进行一些简单的配置,在App.config文件中配置,如果大家没有App.config文件,可以通过在解决方案中,添加新建项→应用程序配置文件,进行添加. <?xml version="1.0" encoding="utf-8" ?>

log4net日志组件

一.什么是log4net组件 Log4net是基于.net开发的一款非常著名的记录日志开源组件.他最早是2001年7月由NeoWorks Limited启动的项目,基本的框架源于另外的一个非常著名的姐妹组件-log4j.Log4net记录日志的功能非常强大.它可以将日志分不同的等级,比不同的样式,将日志输出到不同的媒介(数据库.文本.控制台.邮件--). 二.log4net的核心内容 Log4net 主要分为5个核心主键: Logger,Appender,Filter,Layout,Object

C#Log4net日志记录组件的使用

一.Log4Net介绍 Log4net是基于.NET开发的一款非常著名的记录日志开源组件.它通过一套XML配置的日志引擎,将日志分不同的等级,分别是:FATAL . ERROR. WARN. INFO . DEBUG.ALL(允许所有的日志请求)和OFF(拒绝所有的日志请求),缺省为DEBUG,前五个可以看到和我们平常在调试应用程序的出错有点类似,在编译器中也会留下如错误.警告之类的提示信息,它们的错误级别不断的降低. 我们接着看Log4net的核心组成部分,Log4net主要由五个部分组成,分

基于log4net的日志组件扩展分装,实现自动记录交互日志 XYH.Log4Net.Extend

背景: 随着公司的项目不断的完善,功能越来越复杂,服务也越来越多(微服务),公司迫切需要对整个系统的每一个程序的运行情况进行监控,并且能够实现对自动记录不同服务间的程序调用的交互日志,以及通一个服务或者项目中某一次执行情况的跟踪监控 根据log4net的现有功能满足不了实际需求,所以需要以log4net为基础进行分装完善,现在分装出了一个基础的版本,如有不妥之处,多多指点功能简介: 该组件是在log4net的基础上,进行了一定的扩展封装实现的自动记录交互日志功能 该组件的封装的目的是解决一下几个

Asp.net core 使用log4net作为日志组件,记录日志到本地。

原文:Asp.net core 使用log4net作为日志组件,记录日志到本地. GitHub demo :https://github.com/zhanglilong23/Asp.NetCore.Demo 1:引入包?首先使用Nuget引入log4net包,版本应>= 2.0.7 2:实现 ILogger 接口 public class Log4NetLogger : ILogger { private readonly ILog _log; private ILoggerRepository

如何在通用权限管理系统中集成log4net日志功能

开发人员都知道,在系统运行中要记录各种日志,自己写一个日志功能,无论是在效率还是功能扩展上来说都不是很好,目前大多用的是第三方的日志系统,其中一个非常有名,用的最多的就是log4net.下面是关于这个组件的介绍 ”Log4net是基于.net开发的一款非常著名的记录日志开源组件.最早是2001年7月由NeoWorks Limited启动的项目,基本的框架源, 于另外的一个非常著名的姐妹组件-log4j.现由Apache组织开发与维护.此日志架构是可灵活扩展,且通过配置文件来设置日志的属性及输出,