首页 技术 正文
技术 2022年11月8日
0 收藏 944 点赞 1,273 浏览 4145 个字

原文地址:http://www.cnblogs.com/zdh8675/p/3645556.html

这几天刚好在调整一个项目,把一些自己不是很清楚的东西先试验一下,这篇文章主要是对我在项目中需要使用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 在多层项目中的使用小记

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);
}
}
}
上一篇: lightoj 1013
下一篇: Retrofit研究1
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,960
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,484
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,330
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,113
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,745
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,779