这几天刚好在调整一个项目,把一些自己不是很清楚的东西先试验一下,这篇文章主要是对我在项目中需要使用Log4Net的一些记录。网上有很多相关的教程,但是各有各的说法,我结合我自己这个项目的需要,首先,项目是分多层的,假如每一层都需要加入日志记录,那该怎么办呢,下面是我的一些操作步骤,记录出来和大家分享一下,不足之处希望大家多拍板砖多多指教。

这个截图是我的当前项目的层次结构,首先在Common层先添加log4net.dll的引用(仅需这里添加引用即可),然后创建一个log4net.config(见红色数字2),我当前项目的1、4、5三处的log4net.config都是同一个,至于每层到底debug输出到的文件名是要叫做”DigitalGolf2Bug.txt“呢还是叫”ServiceApiDebug.txt“呢,可以分开在相应的4或者5里面去配,有更多的层也是同理,如果对名称无特别要求的话,那我默认debug是输出到文件”debug.txt“,而error是输出到”error.txt“,而info是输出到文件”info.txt“,之后打开Common层的AssemblyInfo文件,添加红色数字3的那句代码。最后,在红色数字5的log4net.config上点右键,选择“属性”--“复制到输出目录”--“始终复制”,这样就配置就全部搞定了,只需要在你想输出日志的地方调用LogHelper里面的方法即可。

log4net.config 配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!-- 注册log4net -->
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<log4net>
<!-- 定义日志记录器,可多个 -->
<logger name="logerror">
<level value="ERROR" />
<appender-ref ref="LogErrorAppender" />
</logger>
<logger name="logdebug">
<level value="DEBUG" />
<appender-ref ref="LogDebugAppender" />
</logger>
<logger name="loginfo">
<level value="INFO" />
<appender-ref ref="LogInfoAppender" />
</logger> <!-- 输出到错误信息文件 -->
<appender name="LogErrorAppender" type="log4net.Appender.FileAppender">
<param name="File" value="error.txt" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="" />
<!-- 备份日志数目 -->
<param name="MaxFileSize" value="" />
<!-- 日志文件大小10M -->
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyy-MM-dd HH:mm:ss" />
<param name="RollingStyle" value="Date" />
<!-- 创建新文件的方式,Date表示按日期创建,Size是按文件大小,etc -->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%n异常时间:%d%n异常级别:%-5p%n异常内容:%m%n" />
</layout>
</appender> <!-- 输出到调试信息文件 -->
<appender name="LogDebugAppender" type="log4net.Appender.FileAppender">
<param name="File" value="debug.txt" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="" />
<!-- 备份日志数目 -->
<param name="MaxFileSize" value="" />
<!-- 日志文件大小10M -->
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyy-MM-dd HH:mm:ss" />
<param name="RollingStyle" value="Date" />
<!-- 创建新文件的方式,Date表示按日期创建,Size是按文件大小,etc -->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%n调试时间:%d%n调试内容:%m%n" />
</layout>
</appender> <!-- 输出到一般信息文件 -->
<appender name="LogInfoAppender" type="log4net.Appender.FileAppender">
<param name="File" value="info.txt" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="" />
<!-- 备份日志数目 -->
<param name="MaxFileSize" value="" />
<!-- 日志文件大小10M -->
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyy-MM-dd HH:mm:ss" />
<param name="RollingStyle" value="Date" />
<!-- 创建新文件的方式,Date表示按日期创建,Size是按文件大小,etc -->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%n调试时间:%d%n输出内容:%m%n" />
</layout>
</appender>
</log4net>
</configuration>

LogHelper.cs 类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.WebControls; namespace Common
{
public class LogHelper
{
private static readonly log4net.ILog log_err = log4net.LogManager.GetLogger("logerror");
private static readonly log4net.ILog log_debug = log4net.LogManager.GetLogger("logdebug");
private static readonly log4net.ILog log_info = log4net.LogManager.GetLogger("loginfo"); /// <summary>
/// 错误信息记录
/// </summary>
/// <param name="description">简单描述</param>
/// <param name="ex">错误信息</param>
public static void LogError(string description, Exception ex)
{
if (log_err.IsErrorEnabled) log_err.Error(description, ex);
} public static void LogError(object message)
{
if (log_err.IsErrorEnabled) log_err.Error(message);
} /// <summary>
/// 调试信息记录
/// </summary>
/// <param name="message">调试信息</param>
public static void LogDebug(object message)
{
if (log_debug.IsDebugEnabled) log_debug.Debug(message);
} public static void LogDebug(object message, Exception ex)
{
if (log_debug.IsDebugEnabled) log_debug.Debug(message, ex);
} /// <summary>
/// 一般信息记录
/// </summary>
/// <param name="message">一般信息</param>
public static void LogInfo(object message)
{
if (log_info.IsInfoEnabled) log_info.Info(message);
} public static void LogInfo(object message, Exception ex)
{
if (log_info.IsInfoEnabled) log_info.Info(message, ex);
}
}
}

(原创)Log4Net 在多层项目中的使用小记的更多相关文章

  1. (转载)Log4Net 在多层项目中的使用小记

    (原创)Log4Net 在多层项目中的使用小记 这几天刚好在调整一个项目,把一些自己不是很清楚的东西先试验一下,这篇文章主要是对我在项目中需要使用Log4Net的一些记录.网上有很多相关的教程,但是各 ...

  2. Log4Net 在多层项目中的使用小记

    原文地址:http://www.cnblogs.com/zdh8675/p/3645556.html 这几天刚好在调整一个项目,把一些自己不是很清楚的东西先试验一下,这篇文章主要是对我在项目中需要使用 ...

  3. 在 .Net 项目中生成Report小记

    背景 项目为WinForm + WCF 的应用,按照给定格式生成Report,显示在WinForm窗体上并可以导出为PDF和Excel文件. 分析 之前用过DevExpress For WinForm ...

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

      使用log4net可以很方便地为应用添加日志功能.应用Log4net,开发者可以很精确地控制日志信息的输出,减少了多余信息,提高了日志记录性能.同时,通过外部配置文件,用户可以不用重新编译程序就能 ...

  5. C# 在项目中配置Log4net

    我们介绍一下在项目中配置log4net,是Apache基金会旗下的. 无论在什么环境中,配置log4net的逻辑都一样. 1)文件配置 首先在项目加载文件中,配置log4net加载项. 在Web项目中 ...

  6. 在类库项目中使用log4net(RollingFileAppender)记录日志

    1.创建解决方案 2.创建类库项目 3.根据需要修改命名空间,修改(和/或)添加类到类库 4.引用log4net 5.类库项目根目录下创建leg4net配置文件,如D3CallTriggerPlugi ...

  7. log4net.dll配置以及在项目中应用 zt

    1 首先在项目中引用log4net.dll,然后项目中添加一个配置文件log4net.config <?xml version="1.0" encoding="ut ...

  8. 浅谈Log4net在项目中如何记录日志

    一    引入背景 在软件开发周期中,无论是开发中,或是测试中,或是上线后,选择合适的工具监控程序的运行状态至关重要,只有如此,才能更好地排查程序问题和检测程序性能问题等.本篇文章主要与大家分享,如何 ...

  9. VS2010中NET4项目中使用LOG4NET办法

    两年以前项目中是用的log4net.dll是net2.0环境下面的,最近在官网http://logging.apache.org/log4net/download_log4net.cgi找到了net4 ...

随机推荐

  1. 神奇的make自动生成include file的功能

    嗯,今天研究公司makefile的代码,始终搞不明白有一段下载编译依赖的rule recipe(对这个名词不了解请参考make的官方文档)是怎么执行的.明明在执行的时候并指定的target并没有依赖那 ...

  2. 教你用一行Python代码实现并行(转)

    教你用一行Python代码实现并行 本文教你通过一行Python实现并行化. Python在程序并行化方面多少有些声名狼藉.撇开技术上的问题,例如线程的实现和GIL,我觉得错误的教学指导才是主要问题. ...

  3. 第六章 Validating with the Validation API

    CHAPTER 6 Validating with the Validation API Defining and Triggering Validation: An Overview 你可以使用以下 ...

  4. centos7 安装 rabbitmq

    主题 因为自己学习项目可能会用到rabbitmq..我又是第一次学习.以前没安装过.所以简单记录下我在centos7环境下安装rabbitmq的过程步骤,下次可以参考. 步骤 1.杂七杂八的东西 安装 ...

  5. delphi三层架构

    我们的delphi程序很多是以前开发的,采用典型的CS架构,由程序直接连接数据库.现在需要改成在外网可以直接操作软件.先把数据库搬到了阿里云上,测试发现直接连数据库和VPN连接测试速度很慢,直连还容易 ...

  6. Spring <context:annotation-config />讲解

    在基于主机方式配置Spring的配置文件中,你可能会见到<context:annotation-config />这样一条配置,他的作用是向Spring容器注册AutowiredAnnot ...

  7. 深度学习篇——Tensorflow配置(傻瓜安装模式)

    前言 如果你是一个完美主义者,那么请绕过此文,请参考<深度学习篇——Tensorflow配置(完美主义模式)> 安装 pip install tensorflow ok,只要不报错,安装就 ...

  8. ie8、9 post 跨域

    //显示浮层postAjax:function(url,param,callback){ var loadScore = layer_.load(1,{shade: [0.8,'#393D49']}) ...

  9. shell判断文件类型和权限

    shell  判断文件类型. -d 文件 判断该文件是否存在,并且是否为目录(是目录为真) -e文件 判断该文件是否存在(存在为真) -f文件 判断该文件是否存在,并且是否为文件(是普通文件为真) - ...

  10. DPDK收发包全景分析

    前言:DPDK收发包是基础核心模块,从网卡收到包到驱动把包拷贝到系统内存中,再到系统对这块数据包的内存管理,由于在处理过程中实现了零拷贝,数据包从接收到发送始终只有一份,对这个报文的管理在前面的mem ...