日志记录~log4.net
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".txt"" />
<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".txt"" />
<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".txt"" />
<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".txt"" />
<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".txt"" />
<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".txt"" />
<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".txt"" />
<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".txt"" />
<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".txt"" />
<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".txt"" />
<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的更多相关文章
- .net错误日志记录(log4)
Log4 web.config <!--这段放前面--> <configSections> <section name="log4net" type= ...
- log4net--不可多得的开源日志记录组件
log4net--不可多得的开源日志记录组件 1 前奏 一直在用log4net日志工具,却没时间写个日志给大家分享一下这个工具,趁最近比较空些,好好分享一下这个工具. 2 说明 Log4net介绍就不 ...
- SpringBoot之日志记录-专题四
SpringBoot之日志记录-专题四 六.日志管理 6.1使用log4j记录日志 6.1.2新建log4j配置文件 文件名称log4j.properties #log4j.rootLogger=CO ...
- 基于AOP和ThreadLocal实现日志记录
基于AOP和ThreadLocal实现的一个日志记录的例子 主要功能实现 : 在API每次被请求时,可以在整个方法调用链路中记录一条唯一的API请求日志,可以记录请求中绝大部分关键内容.并且可以自定义 ...
- 前端学HTTP之日志记录
前面的话 几乎所有的服务器和代理都会记录下它们所处理的HTTP事务摘要.这么做出于一系列的原因:跟踪使用情况.安全性.计费.错误检测等等.本文将谥介绍日志记录 记录内容 大多数情况下,日志的记录出于两 ...
- RMS Server打开或关闭日志记录
原文: https://technet.microsoft.com/zh-cn/library/cc732758 在 Active Directory Rights Management Servic ...
- 从零开始编写自己的C#框架(20)——框架异常处理及日志记录
最近很忙,杂事也多,所以开发本框架也是断断续续的,终于在前两天将前面设定的功能都基本完成了,剩下一些小功能遗漏的以后发现再补上.接下来的章节主要都是讲解在本框架的基础上进行开发的小巧. 本框架主要有四 ...
- PHP日志记录规范PSR-3
.note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...
- 利用AOP与ToStringBuilder简化日志记录
刚学spring的时候书上就强调spring的核心就是ioc和aop blablabla...... IOC到处都能看到...AOP么刚开始接触的时候使用在声明式事务上面..当时书上还提到一个用到ao ...
随机推荐
- TypeScript简单的代码片段
TypeScript中,接口.接口实现.函数重载: interface IThing{ name:string; age:number; sayHello:{ (name:string):string ...
- JQuery学习笔记系列(二)----
jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多).其中也提供了很多函数来更加简洁的实现复杂的功能. 事件切换函数toggle ...
- 杭电1019 Least Common Multiple【求最小公倍数】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1019 解题思路:lcm(a,b)=a*b/gcd(a,b) 反思:最开始提交的时候WA,以为是溢出了, ...
- (转)微服务架构 互联网保险O2O平台微服务架构设计
http://www.cnblogs.com/Leo_wl/p/5049722.html 微服务架构 互联网保险O2O平台微服务架构设计 关于架构,笔者认为并不是越复杂越好,而是相反,简单就是硬道理也 ...
- 如何在vue里面正确的引用 jquery 和 第三方插件
vue-cli webpack全局引入jquery(jq通过npm安装的并非本地文件) 1.首先在package.json里加入, dependencies:{ "jquery" ...
- bootstrapvalidator使用,重置校验
1.html页面需要注意的是验证字段需要用form-group包裹.需要引用相应的css和js. <form id="jobForm" role="form&quo ...
- Python爬虫4------图片爬虫
import urllib.request import re keyname="短裙" key=urllib.request.quote(keyname) headers=(&q ...
- 【BZOJ3451】Tyvj1953 Normal - 点分治+FFT
题目来源:NOI2019模拟测试赛(七) 非原题面,题意有略微区别 题意: 吐槽: 心态崩了. 好不容易场上想出一题正解,写了三个小时结果写了个假的点分治,卡成$O(n^2)$ 我退役吧. 题解: 原 ...
- 用div布局,页面copyright部分始终居于
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content=&q ...
- POJ 2395 Out of Hay( 最小生成树 )
链接:传送门 题意:求最小生成树中的权值最大边 /************************************************************************* & ...