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


    (原创)Log4Net 在多层项目中的使用小记

    这几天刚好在调整一个项目,把一些自己不是很清楚的东西先试验一下,这篇文章主要是对我在项目中需要使用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="100" />
    <!-- 备份日志数目 -->
    <param name="MaxFileSize" value="10240" />
    <!-- 日志文件大小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="100" />
    <!-- 备份日志数目 -->
    <param name="MaxFileSize" value="10240" />
    <!-- 日志文件大小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="100" />
    <!-- 备份日志数目 -->
    <param name="MaxFileSize" value="10240" />
    <!-- 日志文件大小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>

    复制代码
    <?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="100" />
          <!-- 备份日志数目 -->
          <param name="MaxFileSize" value="10240" />
          <!-- 日志文件大小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="100" />
          <!-- 备份日志数目 -->
          <param name="MaxFileSize" value="10240" />
          <!-- 日志文件大小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="100" />
          <!-- 备份日志数目 -->
          <param name="MaxFileSize" value="10240" />
          <!-- 日志文件大小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);
    }
    }
    }

    复制代码
    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);
            }
        }
    }
    复制代码

    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);
    }
    }
    }

  • 相关阅读:
    java_IO流之 NIO
    No enclosing instance of type Outer is accessible. Must qualify the allocation with an enclosing instance of type Outer (e.g. x.new A() where x is an instance of Outer)
    JAVA I/O流 之入门
    10年老司机经验总结--程序员兼职的那些事
    python 去除html 超链接href 如何实现?
    《模式分类(原书第二版)》pdf格式下载电子书免费下载
    通知-招财猫问题通知专用
    Centos6.5 安装 python3.5 虚拟环境 virtualenvwrapper
    5.区块链平台以太坊从入门到精通之 以太网区块链网络
    4.区块链平台以太坊从入门到精通之 以太币
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3648563.html
Copyright © 2020-2023  润新知