Log4net 列

配置<configuration>
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections><log4net>
<!--定义输出到文件中-->
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--定义文件存放位置-->
<file value="Log\GALog\GaLog.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="100" />
<maximumFileSize value="1M" />
<staticLogFileName value="true" /><!--<param name="File" value="Log\\LogError\\" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="100" />
<param name="MaxFileSize" value="2M" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyy-MM-dd&quot;.txt&quot;" />
<param name="RollingStyle" value="Date" />--><layout type="log4net.Layout.PatternLayout"><!--每条日志起末的文字说明-->
<header value="=================================================Begin=================================================&#13;&#10;"/>
<footer value="=================================================End===================================================&#13;&#10;"/>
<!--输出格式-->
<!--样例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info-->
<!--<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />-->
<conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline" />
</layout>
</appender>
<!--定义输出到控制台命令行中-->
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<!--定义输出到windows事件中-->
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<!--定义输出到数据库中,这里举例输出到Access数据库中,数据库为C盘的log4net.mdb-->
<appender name="AdoNetAppender_Access" type="log4net.Appender.AdoNetAppender">
<connectionString value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:log4net.mdb" />
<commandText value="INSERT INTO LogDetails ([LogDate],[Thread],[Level],[Logger],[Message]) VALUES (@logDate, @thread, @logLevel, @logger,@message)" />
<!--定义各个参数-->
<parameter>
<parameterName value="@logDate" />
<dbType value="String" />
<size value="240" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date" />
</layout>
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="240" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@logLevel" />
<dbType value="String" />
<size value="240" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="240" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="240" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
</appender>
<!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。-->
<root>
<!--文件形式记录日志-->
<appender-ref ref="LogFileAppender" />
<!--控制台控制显示日志-->
<!--<appender-ref ref="ConsoleAppender" />-->
<!--Windows事件日志-->
<!--<appender-ref ref="EventLogAppender" />-->
<!-- 如果不启用相应的日志记录,可以通过这种方式注释掉
<appender-ref ref="AdoNetAppender_Access" />
-->
</root></log4net></configuration>.CS代码using System;using System.Collections.Generic;
using System.Linq;
using System.Text;[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace ga
{
public class ExceptionLog
{
private static readonly log4net.ILog log =
log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public static void WriteLog(string remark, Exception ex)
{
try
{
log.Error(remark, ex);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}}
}


 

log4net里面的filter类常用的为:
1、DenyAllFilter
拒绝所用的日志输出
<filter type="log4net.Filter.LevelMatchFilter">
<param name="LevelToMatch" value="DEBUG" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
上面的配置是如果日志的输出级别不符合DEBUG要求的话,则不输出任何日志。
2、LevelMatchFilter
这个类里面有两个属性,一个是LevelToMatch这个属性是你要匹配输出日志的级别,比如:
<filter type="log4net.Filter.LevelMatchFilter">
<param name="LevelToMatch" value="DEBUG" />
</filter>
这样的话,只有级别是DEBUG的日志才能输出。
另外这个类还有一个重要的属性就是AcceptOnMatch这个属性是设置如果这个条件匹配的话,是否接受输出打印,比如说:
<filter type="log4net.Filter.LevelMatchFilter">
<param name="LevelToMatch" value="DEBUG" />
</filter>
<filter type="log4net.Filter.StringMatchFilter">
<param name="StringToMatch" value="debug" />
</filter>
如果日志的级别为DEBVG的话,也就是说符合了第一个Filter的条件,日志就输出,则StringMatchFilter就不执行了。如果这样写的话,就会继续向下执行过滤:
<filter type="log4net.Filter.LevelMatchFilter">
<param name="LevelToMatch" value="DEBUG" />
<AcceptOnMatch value="false"></AcceptOnMatch>
</filter>
<filter type="log4net.Filter.StringMatchFilter">
<param name="StringToMatch" value="debug" />
</filter>
如果这样写的话,即使第一个Filter符合了条件则第二个Filter也会继续执行。
3、LevelRangeFilter
配置文件是这样的:
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="ERROR" />
</filter>
4、LoggerMatchFilter
配置文件是这样的:
<filter type="log4net.Filter.LoggerMatchFilter">
<param name="LoggerToMatch" value="Client" />
</filter>
5、StringMatchFilter
配置文件是这样的:
<filter type="log4net.Filter.StringMatchFilter">
<param name="StringToMatch" value="/blog/Client.Program" />
</filter>

转载于:https://www.cnblogs.com/keyyang/p/4137720.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459841.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式系统的开发经验与心得

与近期与InfoQ的一次对话中&#xff0c;Vaughn Vernon分享了一些他在开发分布式系统方面的心得。他特别指出&#xff0c;在分布式系统中&#xff0c;有可能会出现局部故障之类的问题。对于这种类型的问题以及一些其它挑战来说&#xff0c;最佳的应对方式是做好一切准备&#xf…

mysql gtid 还是pxc_记一次 PXC 集群拆分引发的思考

原标题&#xff1a;记一次 PXC 集群拆分引发的思考作者简介冷正磊2018年2月加入去哪儿网 DBA 团队&#xff0c;主要负责机票业务的 MySQL 和 Redis 数据库的运维管理工作&#xff0c;以及数据库自动化运维平台部分功能的开发工作&#xff0c;对数据库技术具有浓厚兴趣&#xff…

一个奇怪的注意事项TNS-12545 TNS-12560 TNS-00515

近来的reportDB无法从一开始就与系统收听&#xff0c;比较奇怪的现象。由于server有听众的一个实例上正常启动&#xff0c;这是不是从开始监听器的实例手动启动是正常的。所以写下来未能找到离奇写的原因。1、故障现象Starting CRON daemondone Oracle 10g auto start/stop Sta…

java_IO总结(一)

所谓IO&#xff0c;也就是Input与Output的缩写。在java中&#xff0c;IO涉及的范围比较大&#xff0c;这里主要讨论针对文件内容的读写 其他知识点将放置后续章节&#xff08;我想&#xff0c;文章太长了&#xff0c;谁都没耐心翻到最后&#xff09; 对于文件内容的操作主要分为…

mysql两张表联查更新语句_sql联合查询语句(两张表)

展开全部sql联合查询语句(两张e69da5e6ba9062616964757a686964616f31333365643662表)是&#xff1a;select A.ID,A.VALUE,A.TYPE,A.NAME,B.KEY,B.ID,B.VALUE,B.NAMEmin(VALUE),max(VALUE) from A left join B on A.ID B.IDwhere B.NAME"你输入的名字"and B.VALUE &g…

TextField对象相关的属性和方法总结

TextField对象相关的属性和方法&#xff0c;内容十分丰富&#xff0c;下面几个表格&#xff1a; 表一 TextField 对象的方法 方法 说明 TextField.addListener 加入接收触发事件如文本域内容变化或滚动变化的监听对象&#xff0c;触发事件可以参看最后一个表。 TextField.getDe…

ocsng mysql connection problem_OCSNG 介绍及其工作原理

OCSNG部署&#xff1a;http://wowking.blog.51cto.com/1638252/994441OCSNG 是什么呢&#xff1f;OCSNG就是Open Computer and Software Inventory Next Generation是一款免费软件&#xff0c;它使用户能够盘点网络工程师的IT资产。OCS-NG收集有关运行OCS客户端程序(“OCS Inve…

hdu--5135--贪心

尽量选边数大的3根木棍来组成一个三角形 一直到无法选取为止 这边计算三角形面积 还是用 海伦公式比较方便 1 #include <iostream>2 #include <algorithm>3 #include <cmath>4 #include <cstring>5 #include <iomanip>6 using namespace std;7 …

动易sitefactory 数据库 mysql msssql_动易SiteFactory配置文件(web.config)常用配置节解读...

配置声明节复制代码代码如下:这个节定义了,web.config文件中将要用到具体配置节点的名称,处理程序等.从这里可以看出,siteFactory里采用.net 企业应用程序块(enterpriseLibrary),里的数据访问块等.urlrewritingnet,是用来进行地址重写的,接着是asp.net ajax 配置节声明,最后有个…

Struts2_2_第一Struts2应用

web.xml文件的配置与1同样。1&#xff09;HelloWorld类的代码&#xff1a; public class HelloWorldAction {private String message;public String getMessage() {return message;}public void setMessage(String message) {this.message message;}public String execute() {…

centos7

一.CentOS下的JDK安装(jdk1.7.0.67) http://www.cnblogs.com/Jenny-sider/p/3898583.html 二.centos下 配置多个tomcat nginx绑定域名和ip http://www.cnblogs.com/Jenny-sider/p/3908254.html 三.centOS 7.0默认使用的是firewall作为防火墙 启动firewall systemctl start fire…

About SOuP

http://www.soup-dev.com - SOuP的强大我不必多说。 - Maya 也可以开发出象houdini这样有趣的节点&#xff0c;这再soup之前是很难想象的。所以说soup的作者Peter的NB之处就在这里&#xff0c;他给人们指出了挖掘Maya潜力的一条路。 - MayaAPI真的是已经把maya能扩展的接口都暴…

mysql 动态sql 解析json数据_在SQL 中生成JSON数据

这段时间接手一个数据操作记录的功能&#xff0c;刚拿到手上的时候打算用EF做&#xff0c;后来经过仔细考虑最后还是觉定放弃&#xff0c;最后思考再三决定&#xff1a;1、以模块为单位分表、列固定(其实可以所有的操作记录都放到同一个表&#xff0c;但是考虑到数据量大的时候…

Microsoft Edge 浏览器开始支持webkit私有样式

微软表示新版的浏览器Edge(spartan)不会再增加新的私有属性&#xff0c;同时移除了部分-ms-属性&#xff0c;但很多标准在没有支持到之前&#xff0c;会使用webkit的api。Edge开发工程师Jacob Rossi列出了一份Edge所支持的webkit api列表。 CSS Core webkitBackgroundwebkitBac…

cemtos7上mysql8两个实例_centos7上配置mysql8的双主互写

注意:1、主库1&#xff1a;10.1.131.75&#xff0c;主库2&#xff1a;10.1.131.762、server-id必须是纯数字&#xff0c;并且主从两个server-id在局域网内要唯一。【主节点1】vi /etc/my.cnf[mysqld]log-binmysql-binserver-id2019001log_slave_updates1重启服务service mysqld…

不属于python数据类型的是_Python不支持的数据类型有( )。

(2) 完成划线处的代码填空: Dim classname(1 To 8000) As String 存储原始数据中的班级名称 Dim selectabc(1 To 8000) As String 存储原始数据选项的值 Dim xiangmu(1 To 8000) As String 存储原始数据选项的序号 Dim n As Integer Private Sub Command…

【Daily Scrum】12-08

因为TFS的一些问题&#xff0c;到现在一直都看不了Sprint 3的burndown and burn rate. 今天的scrum发现这个Sprint期间大家组里的事情都比较多&#xff0c;不过大家还是有很努力地在晚上和周末来完成ASC Master的任务&#xff0c;辛苦~ Member Today’s WorkTomorrow’s WorkFe…

java 字符串转成图片_java 转换图片为字符串,将字符串转换成图片显示

java 转换图片为字符串&#xff0c;将字符串转换成图片显示&#xff0c;该方法只适用于比较小的图片传输&#xff0c;50K以内&#xff1a;try{// 将图片转换成字符串File imgFile new File("f:\\Vista.png");FileInputStream fis new FileInputStream( imgFile );b…

图片延迟加载和滑动翻页

一&#xff1a;预加载 首先&#xff0c;我们需要引用JS&#xff0c; <script src"/Scripts/JQuery.LazyLoad.js"></script>其次&#xff0c;修改img的格式为&#xff1a; <img data-original"/images/img01.png" src"/images/grey.gif…

基本上,把switch,用设计模式代替,肯定是bug和过度设计。想想,本来修改一个文件几行代码可以解决的问题,变成修改3-6个类才能实现一样的功能。不是傻是什么?...

那些迷信设计模式的人&#xff0c;来修改一下这个方法吧。看看你最终的代码膨胀为几倍。。。 1 public virtual PasswordChangeResult ChangePassword(ChangePasswordRequest request)2 {3 if (request null)4 throw new ArgumentNullException(&qu…