日志记录~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 ...
随机推荐
- salt-master迁移
1.在迁移到的目标机器上先安装salt-master 2.把原master机器上的/etc/salt/pki目录打包发送到迁移的机器上的同等目录下面 3.在原master机器上批量修改minion的配 ...
- Iterator和for...of
Iterator和for...of 什么是Iterator ES6中的Map 和 Set ,再加上之前的数组和对象,这样就有了四种数据集合,用户可以组合使用它们,定义自己的数据结构.这时,我们就需要一 ...
- GCJ 2008 Round 1A Minimum Scalar Product( 水 )
链接:传送门 题意:给两个向量 v1 = { x1 , x2 , x3 , x4 .... } , v2 = { y1 , y2 , y3 , y4 ...... } 允许任意交换 v1 和 v2 各 ...
- nyoj8-一种排序
一种排序 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复:还知道这个长方形的宽和长,编号.长.宽都是整数:现 ...
- 树状数组求LIS
我真的是咸鱼啊 多少年前的基础了我竟然才弄明白,哭 用树状数组维护<=x的最上上升子序列的最大值即可啊Orz 我真的菜的一笔啊! #include <bits/stdc++.h> u ...
- yii2-dingtalk 钉钉群机器人
说明 群机器人是钉钉群的高级扩展功能.群机器人可以将第三方服务的信息聚合到群聊中,实现自动化的信息同步.目前,大部分机器人在添加后,还需要进行Webhook配置,才可正常使用(配置说明详见操作流程中的 ...
- FreeMarker 语法 list
一.java 代码 @Test public void testFreeMarker() throws Exception { //1.创建一个模板文件 //2.创建一个Configuration对象 ...
- 关于excel导入、导出(POI)
当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际的开发中, ...
- HDU 4394 BFS
M2%10x=N (x=0,1,2,3....) 给出N.找到最小的满足条件的M 因为:N的个位仅仅由M的个位决定.N十位由M的个位和十位决定,N的百位由M的个位十位百位决定.以此类推 全部从个位開始 ...
- 动态为TextView控件设置drawableLeft图标,并设置间距
效果图: 重要属性: textView.setCompoundDrawablePadding(4);//设置图片和text之间的间距 textView.setPadding(-5, 0, 0, 0); ...