【改进】用Log4net建立日志记录

上一篇随笔中只使用了普通的文件读写来进行日志的写入,正如很多朋友说的,频繁的对文件进行读写会造成很多的问题,代码缺少边界控制和操作控制,没有对资源进行管理,是非常典型的bad code。

然后经过前辈们的提点,今天使用了Log4net进行日志的写入,发现非常的便捷,同时也集成了对于日志的控制,减少因为日志写入而发生的一系列不该有的错误。

网上也有很多教程,在此,结合我的教训,我也厚颜无耻的贴出自己的实现步骤,欢迎前辈们指正!!!

app.config配置文件,我是直接写在系统的app.config文件里面的,新建一个config配置文件会无法识别,也不知道为什么,求前辈指教

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    </configSections>
    <log4net>
        <root>
            <level value="INFO"/>
            <!--文件形式记录日志-->
            <appender-ref ref="RollingLogFileAppender"/>
        </root>
        <appender  name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
            <!--日志位置-->
            <file value="Log\\" />
            <!--日志名称-->
            <datePattern value="yyyy-MM-dd‘.txt‘"/>
            <!--最小线程锁-->
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
            <!-- 追加到文件-->
            <appendToFile value="true"/>
            <!-- 滑动记录日志-->
            <RollingStyle value="Date"/>
            <!--非固定的日志名称-->
            <staticLogFileName value="false"/>
            <!--备份日志数目 -->
            <param name="MaxSizeRollBackups" value="100"/>
            <!--日志格式-->
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="记录时间:【%date】 [%t]%-5p  %n - %m%n"/>
            </layout>
        </appender>
    </log4net>
    <!--程序自带启动配置文件-->
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    </startup>
</configuration>

以上配置每天会新建一个日志文件,我觉得这样子会方便管理,也方便查看。

接下来,我们新建一个记录日志的公共类,来供其他操作使用我们的日志记录。

using System;
using System.Reflection;
using log4net;
using log4net.Config;

[assembly: XmlConfigurator(Watch = true)]
namespace DataBindingDemo.Helper
{
    public static class LogHelper
    {
        /// <summary>
        /// 记录错误日志
        /// </summary>
        /// <param name="ex"></param>
        public static void LogError(Exception ex)
        {
            var type = MethodBase.GetCurrentMethod().DeclaringType;
            var log = LogManager.GetLogger(type);
            log.Error(ex);
        }

        /// <summary>
        /// 记录普通日志
        /// </summary>
        /// <param name="info"></param>
        public static void LogInfo(string info)
        {
            var type = MethodBase.GetCurrentMethod().DeclaringType;
            var log = LogManager.GetLogger(type);
            log.Info(info);
        }
    }
}

在这里,我只使用了两种日志的记录格式。

有需要的同学可以根据自己的需要进行调整。

问题:在 LogManager.GetLogger(type); 中的type不能为null,可是通过反射去获取方法类型我只会反射到上一层,不会反射到调用方法的层。也就是说这里type几乎没什么用。网上初略找了找也没有找到对应的详细解释。求前辈指点。

使用方法

LogHelper.LogInfo("记录第一个日志");

这样就能记录下我们需要的日志了。

疑问:通过配置只能把各种Log记录在一个文件夹下面,如果我想把日志分类,不同的log和关键log,错误log,记录在不同的文件夹中,在Log4net中想不到怎么去实现,求前辈再指点!

跪谢!

时间: 2024-10-06 06:40:26

【改进】用Log4net建立日志记录的相关文章

Log4Net异常日志记录在asp.net mvc3.0的应用

前言 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.本文主要是简单的介绍如何在Visual Studio2010(Asp.Net Mvc3.0)中使用log4net快速创建系统日志,如何扩展以输出自定义字段. 用户可以从http://logging.apache.org/log4net/下载log4net的源代码.解压软件包后,在解压的src目录下将log4net.sln载入Visual

在asp.net core的项目中通过log4net添加日志记录到本地文件

=============================================== 2020/2/25_第1次修改                       ccb_warlock =============================================== 由于之前的时间都忙于项目的业务开发,对于log4net的使用一直是“拿来主义”,仅仅用在了调试时输出到控制台看结果,而没有深究配置文件的参数和具体的机制. 正巧这段时间项目进度没有那么紧张,我也有时间来完善框

C# log4net实现日志记录

转载自: 柄棋先生http://www.cnblogs.com/wangsaiming/archive/2013/01/11/2856253.html 第一步:下载Log4Net 下载地址:http://logging.apache.org/log4net/download_log4net.cgi 把下载的  log4net-1.2.11-bin-newkey解压后,如下图所示: 双击bin文件夹 双击net文件夹,选择针对.NET FramerWork的不同版本 找到相应版本的log4net.

asp.net Web项目中使用Log4Net进行错误日志记录

使用log4net可以很方便地为应用添加日志功能.应用Log4net,开发者可以很精确地控制日志信息的输出,减少了多余信息,提高了日志记录性能.同时,通过外部配置文件,用户可以不用重新编译程序就能改变应用的日志行为,使得用户可以根据情况灵活地选择要记录的信息. 那么我们如何在Web项目中使用Log4Net呢? 一.基本配置 1.下载Log4Net,地址如下:http://logging.apache.org/log4net/download_log4net.cgi,如下图所示: 2.下载到本地后

log4net 添加自定义日志到数据库

添加操作日志到数据库举例: (一)建立数据库的操作日志表,如下我建立了一个简单的日志表 (二)配置文件中的配置如下 <log4net> <!--错误日志记录数据库--> <logger name="OperateDB"> <level value="INFO"/> <appender-ref ref="AdoNetAppender_OperToSql" /> </logger>

转:使用log4net完成程序异常日志记录(使用SQLite数据库记录和普通文本记录)

http://www.cnblogs.com/kyo-yo/archive/2010/06/11/use-log4net-to-log-exception.html 在前端时间开发的时候由于需要将异常保存到数据库中,所以就到网上搜了下专门的日志记录工具,一搜果然很多,比如:log4net,NLog,EntLib Logging等等,但是还是log4net名气最大,所以就下载下来试用了一番,果然很方便,其涵盖了所有常用的日志记录方式具体的可以看下表: AdoNetAppender 将日志记录到数据

log4net.NoSql +ElasticSearch 实现日志记录

前言: 前两天在查找如何扩展log4net的日志格式时找到一个开源项目Log4net.NoSql,它通过扩展Appender实现了把日志输出到ElasticSearch里面.顺藤摸瓜,发现涉及的项目还挺多,于是打算学习一下,记录在此. 项目一句话简介,详情点击链接去项目主页查看,最后提供打包下载: 1.log4net.nosql A collection of log4net Appenders to NoSQL data stores. Currently only ElasticSearch

日志记录类库log4net的使用总结

log4net是一个开源的日志记录类库,经过配置后可以自动抓取程序中的错误.异常信息,并写入磁盘,也可以在异常发生时执行其他指定的操作,比如:通知某人右键.写入数据库等.这里写个ASP.NET MVC4应用LogNet的Demo: 1.建立ASP.NET MVC4网站,在web.config中写入log4net的配置文件(就是添加两个节点) 1 <configSections> 2 <!-->需要添加第一个的节点<--> 3 <section name="

使用log4net无法将日志记录插入mysql数据库解决办法

写在前面 今天没事研究了下,将日志文件写入mysql数据库,因为新公司用的数据库也是mysql,项目中需要将日志信息写入数据库,没办法,就研究了下.在使用过程中遇到一个很蛋疼的问题.最后解决了,郁闷了半天.这里做一下记录,以免再犯. 之前写个这方面的文章,关于配置信息,可参考我的这篇文章:Log4Net日志记录两种方式 解决办法 问题就出在我直接将log4net写入数据库的配置文件log4net.config直接复制过来在项目中使用了,当然是修改了连接字符串,提供程序等与mysql相关的配置.配