1. 添加Log4net引用

2. 添加配置文件

Log.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<log4net>
<logger name="Log4NetTest">
<level value="ERROR"/>
<appender-ref ref="Log4NetTestAppender" />
<!--Log4NetTestAppender和下面进行对应-->
</logger> <logger name="RYJ.Crm.Quartz">
<level value="ERROR"/>
<appender-ref ref="QuartzAppender" />
</logger> <logger name="RYJ.Crm.Services">
<level value="ERROR"/>
<appender-ref ref="ServiceAppender" />
</logger> <logger name="RYJ.Crm.ExternalService">
<level value="ERROR"/>
<appender-ref ref="ExternalServiceAppender" />
</logger> <logger name="RYJ.Crm.HeartBeat">
<level value="DEBUG"/>
<appender-ref ref="HeartBeatAppender" />
</logger> <logger name="RYJ.Crm.System">
<level value="ERROR"/>
<appender-ref ref="SystemAppender" />
</logger> <logger name="RYJ.Crm.UrlFilter">
<level value="DEBUG"/>
<appender-ref ref="UrlFilterAppender" />
</logger> <logger name="NHibernate">
<level value="OFF"/>
<appender-ref ref="NHibernateAppender" />
</logger> <logger name="RYJ.Return">
<level value="DEBUG"/>
<appender-ref ref="ReturnAppender" />
</logger> <logger name="RYJ.Crm.Event">
<level value="DEBUG"/>
<appender-ref ref="EventAppender" />
</logger> <logger name="RYJ.Crm">
<level value="ERROR"/>
<appender-ref ref="EmailAppender" />
</logger> <!--返回值异常日志记录-->
<appender name="Log4NetTestAppender" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" value="Logs/Log4NetTest/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy-MM-dd&quot;.txt&quot;" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
</appender> <!--返回值异常日志记录-->
<appender name="ReturnAppender" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" value="Logs/Return/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy-MM-dd&quot;.txt&quot;" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
</appender> <!--事件异常日志记录-->
<appender name="EventAppender" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" value="Logs/Event/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy-MM-dd&quot;.txt&quot;" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
</appender> <!--系统异常日志记录-->
<appender name="SystemAppender" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" value="Logs/System/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy-MM-dd&quot;.txt&quot;" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
</appender> <!--调度日志记录-->
<appender name="QuartzAppender" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" value="Logs/Quartz/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy-MM-dd&quot;.txt&quot;" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
</appender> <!--Service日志记录-->
<appender name="ServiceAppender" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" value="Logs/Service/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy-MM-dd&quot;.txt&quot;" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
</appender> <!--调用外部服务日志记录-->
<appender name="ExternalServiceAppender" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" value="Logs/ExternalService/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy-MM-dd&quot;.txt&quot;" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
</appender> <!--HeartBeat日志记录-->
<appender name="HeartBeatAppender" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" value="Logs/HeartBeat/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy-MM-dd&quot;.txt&quot;" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
</appender> <!--UrlFilter日志记录-->
<appender name="UrlFilterAppender" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" value="Logs/UrlFilter/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy-MM-dd&quot;.txt&quot;" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
</appender> <!--NHibernate日志记录-->
<appender name="NHibernateAppender" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" value="Logs/NHibernate/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy-MM-dd&quot;.txt&quot;" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
</appender> <!--邮箱设置-->
<appender name="EmailAppender" type="log4net.Appender.SmtpAppender">
<!-- SMTP 验证方式 -->
<authentication value="Basic" />
<to value="" />
<from value="service@daishu360.com" />
<username value="service@daishu360.com" />
<password value="DSpuhui360.cn" />
<subject value="【本地环境】CRM后台API错误异常" />
<!--邮件服务端-->
<smtpHost value="smtp.exmail.qq.com"/>
<bufferSize value="" />
<lossy value="true" />
<!--这里我设置的是Error ,会接收(FATAL和ERROR日志)你可以根据自己的需要设置Log4net支持多种级别的日志。优先级从高到低依次排列如下:FATAL > ERROR > WARN > INFO > DEBUG-->
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="OFF"/>
</evaluator>
<!--输出格式-->
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
</appender>
</log4net>
</configuration>

Web.config

 <!--log4net日志配置文件-->
<add key="log4net" value="config/log4net/log.config" />

3. 注册lognet

  protected void Application_Start()
{ //注册lognet
var log4NetFileName = FilePath(ConfigurationManager.AppSettings["log4net"]);
if (File.Exists(log4NetFileName))
{
XmlConfigurator.ConfigureAndWatch(new FileInfo(log4NetFileName));
}
}
private static string FilePath(string name)
{
if (string.IsNullOrEmpty(name))
{
return string.Empty;
} return string.Format("{0}/{1}", AppDomain.CurrentDomain.BaseDirectory.TrimEnd('\\', '/'), name.TrimStart('\\', '/'));
}

4. 编写Helper

using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace Log4NetTest
{
public static class Log4NetUtility
{
/// <summary>
/// 写日志
/// </summary> public static void WriteLog(this string message, string name, Log4NetType logType = Log4NetType.Info)
{
var log = GetLog(name);
if (log == null)
{
return;
} if (logType == Log4NetType.Debug)
{
log.Debug(message);
return;
} if (logType == Log4NetType.Error)
{
log.Error(message);
return;
} if (logType == Log4NetType.Fatal)
{
log.Debug(message);
return;
} if (logType == Log4NetType.Info)
{
log.Info(message);
return;
} log.Warn(message);
} /// <summary>
/// 写异常日志
/// </summary>
public static void WriteLog(this Exception exception, string name)
{
var log = GetLog(name);
if (log == null)
{
return;
} WriteLog(exception, log);
} /// <summary>
/// 写异常日志
/// </summary>
private static void WriteLog(Exception exception, ILog log)
{
if (exception == null)
{
return;
} log.Error(exception); WriteLog(exception.InnerException, log);
} /// <summary>
/// 获取日志对象
/// </summary>
public static ILog GetLog(string name)
{
var logger = LogManager.GetLogger(name);
return logger;
}
} /// <summary>
/// Log4Net类型枚举
/// </summary>
public enum Log4NetType
{
/// <summary>
/// 字段Debug
/// </summary> Debug, /// <summary>
/// 字段Error
/// </summary>
Error, /// <summary>
/// 字段Info
/// </summary>
Info, /// <summary>
/// 字段Fatal
/// </summary>
Fatal, /// <summary>
/// 字段Warn
/// </summary>
Warn
} /// <summary>
/// 类名称:Log4NetName
/// 命名空间:DaiShu.Crm.Utility
/// 类功能:日志名称
/// </summary>
public class Log4NetName
{
/// <summary>
/// 字段UrlFilter
/// </summary>
public const string Log4NetTest = "Log4NetTest"; /// <summary>
/// 字段UrlFilter
/// </summary>
public const string UrlFilter = "RYJ.Crm.UrlFilter"; /// <summary>
/// 字段System
/// </summary>
public const string System = "RYJ.Crm.System"; /// <summary>
/// 字段Quartz
/// </summary>
public const string Quartz = "RYJ.Crm.Quartz"; /// <summary>
/// 字段Service
/// </summary>
public const string Service = "RYJ.Crm.Services"; /// <summary>
/// 字段ExternalService
/// </summary>
public const string ExternalService = "RYJ.Crm.ExternalService"; /// <summary>
/// 字段Return
/// </summary>
public const string Return = "RYJ.Return"; /// <summary>
/// 字段HeartBeat
/// </summary>
public const string HeartBeat = "RYJ.Crm.HeartBeat"; /// <summary>
/// 字段Event
/// </summary>
public const string Event = "RYJ.Crm.Event";
}
}

调用演示

            try
{
int n=int.Parse("aaa");
}
catch (Exception ex)
{
ex.WriteLog(Log4NetName.Log4NetTest);
}

下载源码

日志记录~log4.net的更多相关文章

  1. .net错误日志记录(log4)

    Log4 web.config <!--这段放前面--> <configSections> <section name="log4net" type= ...

  2. log4net--不可多得的开源日志记录组件

    log4net--不可多得的开源日志记录组件 1 前奏 一直在用log4net日志工具,却没时间写个日志给大家分享一下这个工具,趁最近比较空些,好好分享一下这个工具. 2 说明 Log4net介绍就不 ...

  3. SpringBoot之日志记录-专题四

    SpringBoot之日志记录-专题四 六.日志管理 6.1使用log4j记录日志 6.1.2新建log4j配置文件 文件名称log4j.properties #log4j.rootLogger=CO ...

  4. 基于AOP和ThreadLocal实现日志记录

    基于AOP和ThreadLocal实现的一个日志记录的例子 主要功能实现 : 在API每次被请求时,可以在整个方法调用链路中记录一条唯一的API请求日志,可以记录请求中绝大部分关键内容.并且可以自定义 ...

  5. 前端学HTTP之日志记录

    前面的话 几乎所有的服务器和代理都会记录下它们所处理的HTTP事务摘要.这么做出于一系列的原因:跟踪使用情况.安全性.计费.错误检测等等.本文将谥介绍日志记录 记录内容 大多数情况下,日志的记录出于两 ...

  6. RMS Server打开或关闭日志记录

    原文: https://technet.microsoft.com/zh-cn/library/cc732758 在 Active Directory Rights Management Servic ...

  7. 从零开始编写自己的C#框架(20)——框架异常处理及日志记录

    最近很忙,杂事也多,所以开发本框架也是断断续续的,终于在前两天将前面设定的功能都基本完成了,剩下一些小功能遗漏的以后发现再补上.接下来的章节主要都是讲解在本框架的基础上进行开发的小巧. 本框架主要有四 ...

  8. PHP日志记录规范PSR-3

    .note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...

  9. 利用AOP与ToStringBuilder简化日志记录

    刚学spring的时候书上就强调spring的核心就是ioc和aop blablabla...... IOC到处都能看到...AOP么刚开始接触的时候使用在声明式事务上面..当时书上还提到一个用到ao ...

随机推荐

  1. (转载) android studio library生成jar包和aar的方法总结

    android studio library生成jar包和aar的方法总结 标签: android学习文档jar和aar的使用与生成gradle 2016-11-25 10:39 1782人阅读 评论 ...

  2. RN打包的那些坑儿

    Write By lz: Lz 寄语: RN虐我千百遍, 我待RN如初恋, 坑儿爬多了也就自然了 官方文档: http://reactnative.cn/docs/0.43/signed-apk-an ...

  3. Spark Streaming 整合 Kafka

    一:通过设置检查点,实现单词计数的累加功能 object StatefulKafkaWCnt { /** * 第一个参数:聚合的key,就是单词 * 第二个参数:当前批次产生批次该单词在每一个分区出现 ...

  4. 深入理解DIP、IoC、DI以及IoC容器(转载)

    <转载的这个up的其他的文章也很nice> 这几个词第一眼看,懵逼,第二眼看,更特么懵逼..... 面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序. 其中,OOD有一 ...

  5. CentOS 7添加开机启动服务/脚本

    一.添加开机自启服务 在CentOS 7中添加开机自启服务非常方便,只需要两条命令(以 jenkins 为例):systemctl enable jenkins.service #设置jenkins服 ...

  6. luogu 3467 [POI2008]PLA-Postering 单调栈

    题目描述: Description N个矩形,排成一排. 现在希望用尽量少的矩形海报Cover住它们. Input 第一行给出数字N,代表有N个矩形.N在[1,250000] 下面N行,每行给出矩形的 ...

  7. 【udacity】机器学习-决策树

    Evernote Export 1.监督学习 我们向系统中输出样本,并且告诉系统样本标签(target),系统用我们给出的不同样本的成功与失败的信息,构建它对成功或失败的因素的理解. 2.分类与回归之 ...

  8. NGUI发布后UI层看不见的解决办法

    NGUI发布后UI层看不见的解决办法 提示信息:You can'tplace widgets on a layer different than the UIPanel that manages th ...

  9. 【模板】 非旋转treap

    模板:luogu P3369 [模板]普通平衡树 code: #include <cstdio> #include <cstdlib> const int MAX_N=1000 ...

  10. Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )

    https://blog.csdn.net/buster_zr/article/details/80244542 FTP FTP 是 File Transfer Protocol (文件传输协议)的英 ...