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. 最小环 hdu1599 poj1734

    最小环用floyd改编. hdu1599特殊一些.要求至少有三个不同的点,并且除了起点与终点重合外,中间不能有环.有点很奇怪,最大值不能为0x3f3f3f3f. poj1374就没那么讲究. //hd ...

  2. SqlServer与MySql 系统表查询自建表数据

    SqlServer: SELECT * FROM sys.sysobjects WHERE type='U' ORDER BY name SELECT * FROM sys.syscolumns WH ...

  3. ubuntu安装-Caffe依赖

    参考链接:http://my.oschina.net/u/939893/blog/163921 1. 安装numpy相对简单,以下命令可以完成 apt-get install python-numpy ...

  4. ubuntu16.04下编译安装OpenCV

    一: 预先配置 为使OpenCV的安装在编译时更完备,预先安装好所有的开发平台: 二:编译OpenCV 在OpenCV官网下载UNIX的源码包: 安装一下软件: sudo apt-get instal ...

  5. Python Django中QQ邮箱授权码问题

    Python Django中QQ邮箱授权码问题 系统及软件版本如下: Ubuntu Kylin 16.04 Python 3.5.1 Django 1.9.7 PyCharm Community Ed ...

  6. javascript中创建对象和实现继承

    # oo ##创建对象 1. 原型.构造函数.实例之间的关系 * 原型的construct->构造函数:调用isPrototypeOf(obj)方法可以判定和实例的关系:  * 构造函数的pro ...

  7. ES6的let命令

    1.let命令所在的代码块内有效: 2.循环的计数器,就很合适使用let命令:(for循环还有一个特别之处,就是循环语句部分是一个父作用域,而循环体内部是一个单独的子作用域.) 例如:如下会输出十次s ...

  8. [NOI2005]瑰丽华尔兹_动态规划_单调队列

    Code: #include<cstdio> #include<cstring> #include<deque> #include<algorithm> ...

  9. java 文件夹不存在的解决方案

    使用new File(path).mkdirs()创建所需路径,几十有多层不存在的路径也可以直接创建,切记方法名以s结尾,不带s的智能创建一层不存在的目录,不能自动创建多层目录结构.

  10. php-fpm优化处理

    php-fpm.conf有两个至关重要的参数:一个是”max_children”,另一个是”request_terminate_timeout”. 我的两个设置的值一个是”40″,一个是”900″,但 ...