内容转载自:https://www.cnblogs.com/youring2/archive/2011/04/27/2030424.html

1.引用log4net.dll

2.在AssemblyInfo.cs中添加初始化:

[assembly: log4net.Config.XmlConfigurator(ConfigFile
= "log4net.config", Watch = true)]

3.添加配置文件,内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<log4net>
<root>
</root>
<logger name="OneCardRequest">
<level value="INFO" />
<appender-ref ref="rollingRequestFile" />
</logger>
<logger name="OneCardResult">
<level value="INFO" />
<appender-ref ref="rollingResultFile" />
</logger>
<logger name="OneCardException">
<level value="ERROR" />
<appender-ref ref="rollingExceptionFile" />
</logger>
<logger name="InfoLog">
<level value="ALL" />
<appender-ref ref="rollingInfoFile" />
</logger>
<appender name="rollingRequestFile" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" type="" value="Log/Request/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyyMMdd" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%n[%d] %c %n%m%n%n" />
<param name="Header" value="-----------BEGIN-----------" />
<param name="Footer" value="------------END------------" />
</layout>
</appender>
<appender name="rollingResultFile" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" type="" value="Log/Result/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyyMMdd" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%n[%d] %c %n%m%n%n" />
<param name="Header" value="-----------BEGIN-----------" />
<param name="Footer" value="------------END------------" />
</layout>
</appender>
<appender name="rollingExceptionFile" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" type="" value="Log/Exception/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyyMMdd" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%n[%d] %c %n%m%n%n" />
<param name="Header" value="-----------BEGIN-----------" />
<param name="Footer" value="------------END------------" />
</layout>
</appender>
<appender name="rollingInfoFile" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" type="" value="Log/Info/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyyMMdd" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%n[%d] %c %n%m%n%n" />
<param name="Header" value="-----------BEGIN-----------" />
<param name="Footer" value="------------END------------" />
</layout>
</appender>
</log4net>
</configuration>

4.添加Log4netHelper类:

    public class log4netHelper
{
/// <summary>
/// 追加一条一卡通处理异常日志信息
/// </summary>
/// <param name="id">请求ID</param>
/// <param name="ex">异常</param>
/// <param name="attachMessage">附加信息</param>
public static void Exception(string id, Exception ex, string attachMessage)
{
log4net.ILog log = log4net.LogManager.GetLogger("OneCardException");
if (log.IsErrorEnabled)
{
string strMessage = string.Format("RequestID:{0}\r\nMesssage:{1}\r\nStackTrace:{2}\r\nAttachMessage:{3}", id, ex.Message, ex.StackTrace, attachMessage);
log.Error(strMessage);
}
log = null;
}
/// <summary>
/// 追加一条一卡通请求日志信息
/// </summary>
/// <param name="id">请求ID</param>
/// <param name="ip">请求的IP地址</param>
/// <param name="datetime">时间</param>
/// <param name="strParam">请求时传入的参数</param>
public static void RequestLog(string id, string ip, string datetime, string strParam)
{
log4net.ILog log = log4net.LogManager.GetLogger("OneCardRequest");
if (log.IsInfoEnabled)
{
string strMessage = string.Format("RequestID:{0}\r\nIP:{1}\r\nDateTime:{2}\r\nParam:{3}", id, ip, datetime, strParam);
log.Info(strMessage);
}
log = null;
}
/// <summary>
/// 追加一条一卡通处理结果日志
/// </summary>
/// <param name="id">请求ID</param>
/// <param name="datetime">时间</param>
/// <param name="strResult">处理结果</param>
public static void ResultLog(string id, string datetime, string strResult)
{
log4net.ILog log = log4net.LogManager.GetLogger("OneCardResult");
if (log.IsInfoEnabled)
{
string strMessage = string.Format("RequestID:{0}\r\nDateTime:{1}\r\nParam:{2}", id, datetime, strResult);
log.Info(strMessage);
}
log = null;
}
/// <summary>
/// 追加一条普通的日志信息
/// </summary>
/// <param name="message">日志内容</param>
public static void Info(string message)
{
log4net.ILog log = log4net.LogManager.GetLogger("InfoLog");
if (log.IsInfoEnabled)
{
log.Info(message);
}
log = null;
} }

log4net用法实例的更多相关文章

  1. php中的curl使用入门教程和常见用法实例

    摘要: [目录] php中的curl使用入门教程和常见用法实例 一.curl的优势 二.curl的简单使用步骤 三.错误处理 四.获取curl请求的具体信息 五.使用curl发送post请求 六.文件 ...

  2. 【转】Log4net用法

    Log4net用法 http://www.cnblogs.com/hfliyi/archive/2012/05/20/2510783.html

  3. 上传文件及$_FILES的用法实例

    Session变量($_SESSION):�php的SESSION函数产生的数据,都以超全局变量的方式,存放在$_SESSION变量中.1.Session简介SESSION也称为会话期,其是存储在服务 ...

  4. C++语言中cin cin.getline cin.get getline gets getchar 的用法实例

    #include <iostream> #include <string> using namespace std; //关于cin cin.getline cin.get g ...

  5. Union all的用法实例sql

    ---Union all的用法实例sqlSELECT TOP (100) PERCENT ID, bid_user_id, UserName, amount, createtime, borrowTy ...

  6. 【转】javascript入门系列演示·三种弹出对话框的用法实例

    对话框有三种 1:只是提醒,不能对脚本产生任何改变: 2:一般用于确认,返回 true 或者 false ,所以可以轻松用于 if...else...判断 3: 一个带输入的对话框,可以返回用户填入的 ...

  7. php strpos 用法实例教程

    定义和用法该strpos ( )函数返回的立场,首次出现了一系列内部其他字串. 如果字符串是没有发现,此功能返回FALSE . 语法 strpos(string,find,start) Paramet ...

  8. 【JSP】三种弹出对话框的用法实例

    对话框有三种 1:只是提醒,不能对脚本产生任何改变: 2:一般用于确认,返回 true 或者 false ,所以可以轻松用于 if...else...判断 3: 一个带输入的对话框,可以返回用户填入的 ...

  9. python多线程threading.Lock锁用法实例

    本文实例讲述了python多线程threading.Lock锁的用法实例,分享给大家供大家参考.具体分析如下: python的锁可以独立提取出来 mutex = threading.Lock() #锁 ...

随机推荐

  1. HDFS读写流程(重点)

    @ 目录 一.写数据流程 举例: 二.异常写流程 读数据流程 一.写数据流程 ①服务端启动HDFS中的NN和DN进程 ②客户端创建一个分布式文件系统客户端,由客户端向NN发送请求,请求上传文件 ③NN ...

  2. JavaScript的参数是按照什么方式传递的?

    1.基本类型传递方式 <script> var a = 1; function test(x) { x = 10; console.log(x); } test(a); // consol ...

  3. Django setting设置 常用设置

    目录 Django配置文件基本设置 前言 setting配置汇总 一.APP路径 二.数据库配置 三.sql语句展示 四.静态文件目录 五.media文件配置 六.数据库中的UserInfo(用户表) ...

  4. python数据处理(七)之数据探索和分析

    1.探索数据 1.1 安装agate库 1.2 导入数据 1.3 探索表函数 a.排序 b.最值,均值 c.清除缺失值 d.过滤 e.百分比 1.4 连结多个数据集 a.捕捉异常 b.去重 c.缺失数 ...

  5. 数据可视化之DAX篇(二十六)Power BI度量值:滚动聚合

    https://zhuanlan.zhihu.com/p/85996745 上一篇文讲了累计聚合,这篇文章继续讲一下滚动聚合,比如常用的MAT计算,Moving Annual Total,滚动年度总计 ...

  6. 网络编程-UDP、TCP

    总结

  7. 史上最强vue总结~万字长文---面试开发全靠它了

    vue框架篇 vue的优点 轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十kb: 简单易学:国人开发,中文文档,不存在语言障碍 ,易于理解和学习: 双向数据绑定:保留了angular ...

  8. mysql groupby 字段合并问题(group_concat)

    在我们的日常mysql查询中,我们可能会遇到这样的情况: 对表中的所有记录进行分类,并且我需要得到每个分类中某个字段的全部成员. 上面的话,大家看起来可能不太好懂,下面举一个例子来给大家说明. 现在我 ...

  9. Interllij Idea 环境必要配置

    必要设置:https://blog.csdn.net/weixin_43378248/article/details/84673406 1. @Autowired 取消错误提示 (1)选择file - ...

  10. 题解 CF296B 【Yaroslav and Two Strings】

    题目 传送门 题目大意 如果两个只包含数字且长度为 \(n\) 的字符串 \(s\) 和 \(w\) 存在两个数字 \(1≤i,j≤n\),使得 \(s_i<w_i,s_j>w_j\) , ...