Log4Net 之将自定义属性记录到文件中 (三)
即解决了将自定义属性记录到数据库之后。一个新的想法冒了出来,自定义属性同样也能记录到文件中吗?答案是肯定的,因为Log4Net既然已经考虑到了数据库记录方式,当然也一定考虑到了其它的记录方式。but how,how,how(这句话来源于电影功夫熊猫)。接下来让我们看看如何将自定义属性记录到文件中。
上菜之前我先做个小补充,首先我们用到的消息载体依然是LogMessage,LogMessage类的代码可以查看"也用 Log4Net 之将日志记录到数据库的配置 (一)"。自定义属性的名称依然是UserID,当然,你可以输出更多自定义属性,自已加就成了。对应该的后台代码依然是我的上一篇文章 "也用 Log4Net 之将日志记录到数据库的后台实现 (二)"。是不是很好,同样的代码可以支持多种日志输出方式,这便是Log4Net的优势之一。
好了,上菜:
<logger name="MisTxtLogger">
<level value="ALL"/>
<appender-ref ref="MisTxtFile" />
</logger>


<!--Txt记录形式-->
<!--信息日志配置-->
<appender name="MisTxtFile" type="log4net.Appender.RollingFileAppender">
<param name="File" value="D:\\MisLog\\" />
<param name="AppendToFile" value="true" />
<param name="MaxFileSize" value="10240" />
<param name="MaxSizeRollBackups" value="100" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd" />
<param name="RollingStyle" value="Date" /> <!--自定义成员 -->
<parameter>
<parameterName value="@UserID" />
<dbType value="Int32" /> <layout type="JJ.Data.LogCommon.CustomLayout">
<conversionPattern value="%UserID" />
</layout> </parameter>
<layout type="JJ.Data.LogCommon.CustomLayout">
<param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c %n%m %n消息描述:%UserID%n" />
</layout>
</appender>


在后台代码中:把加载的配置节点名称改成"MisTxtLogger",就可以应用文本输出的配置了。
_log = log4net.LogManager.GetLogger("MisTxtLogger");
这就是文件记录形式的配置,你记得把他放到配置文件中的 <log4net></log4net>中就可以了。重点来看以下配置,是从上面的配置中截出来的,为了说明方便。


<!--自定义成员 -->
<parameter>
<parameterName value="@UserID" />
<dbType value="Int32" /> <layout type="JJ.Data.LogCommon.CustomLayout">
<conversionPattern value="%UserID" />
</layout> </parameter> <layout type="JJ.Data.LogCommon.CustomLayout">
<param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c %n%m %n消息描述:%UserID%n" />
</layout>


在文本记录形式中,依然要先对自定义属性进行处理,看代码中的“UserID”就是本例中的自定义属性,然后再看它的输入方式:
<layout type="JJ.Data.LogCommon.CustomLayout">
<param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c %n%m %n消息描述:%UserID%n" />
</layout>
消息描述:%UserID,在Log4Net中,%UserID所代表的就是自定义属性的值,当然,%n是换行,%m就等同于%message,即消息内容,其它的%元素 我就不一一讲将解了。可以在网上找到详细资料。
好了,按照上面的配置,现在自定义属性也可以输出到文件中了,是不是很简单。
重点强讲一下:配置的时候一定要小心,因为很多时候日志无法正常输出的原因不是因为代码的问题,而往往是因为配置中的小错误导致的,所以我一直认为Log4Net配置是件可怕的事,一不小心配错了,就无法正常记录日志了。不过它的配置还算是很清晰易懂的。大家刚开始看不懂的时候千万别急。资料看一下,Layout , appendar 等等配置节的含义,然后再去阅读Log4Net的配置文件,你会有种豁然开朗的感觉。
Log4Net 之将自定义属性记录到文件中 (三)的更多相关文章
- 也用 Log4Net 之将自定义属性记录到文件中 (三)
也用 Log4Net 之将自定义属性记录到文件中 (三) 即解决了将自定义属性记录到数据库之后.一个新的想法冒了出来,自定义属性同样也能记录到文件中吗?答案是肯定的,因为Log4Net既然已经考虑 ...
- socket传数据并记录到文件中
最近在新项目中要通过socket传一些数据,下面是程序: 功能: 将客户端发送的json数据写入到日志文件中,如果数据不是json的,丢弃. 程序如下: #!/usr/bin/env python # ...
- js文件中三斜杠注释///reference path的用途
编辑某个js文件时,要想这个js文件出现其他js成员的ide提示,可以在js文件开头使用3个斜杠注释和reference指令的path指向此js文件路径,这样在编写这个js文件时,ide就会自动出现p ...
- Log4Net + Log4Mongo 将日志记录到MongoDb中
实现: 将日志保存在MongoDb中: 自定义日志字段: 日志按照日期拆分集合: 第一部分:将日志保存在MongoDb中 新建控制台程序Log4MongoDemo 通过NuGet安装Log4Net ( ...
- Android 自定义View及其在布局文件中的使用示例
前言: 尽管Android已经为我们提供了一套丰富的控件,如:Button,ImageView,TextView,EditText等众多控件,但是,有时候在项目开发过程中,还是需要开发者自定义一些需要 ...
- mysql 导入 csv文件中数据,只能导入第一行
用workbench导入csv数据,只能导入数据的第一行,也就是标注每一列的列名的那一行.但问题是,每次导入完成时,系统提示已经导入了500条记录(这个文件中的确有500条记录),可是刷新数据库后打开 ...
- 输出 time 命令的结果到文件中
译至:http://unicus.jp/skmk/archives/338 由于输出 time 命令的结果到文件时使用的错误的方式,所以将其记录下来. 环境是bash. 目标 将运行的a.out程序的 ...
- 将Log4net的配置配置到的独立文件中
本文转载:http://blog.csdn.net/wanzhuan2010/article/details/7587780 另外一篇博客:http://grim1980.blog.sohu.com/ ...
- 日志管理-将Log4net的配置配置到的独立文件中
转自:http://www.cnblogs.com/zfanlong1314/p/3662679.html使用log4net已经很久了.但从来没有详情了解log4的参数,及具体使用方法.看了周公的博客 ...
随机推荐
- 【leetcode】Smallest Rotation with Highest Score
题目如下: Given an array A, we may rotate it by a non-negative integer K so that the array becomes A[K], ...
- 字符串截取模板 && POJ 3450、3080 ( 暴力枚举子串 && KMP匹配 )
//截取字符串 ch 的 st~en 这一段子串返回子串的首地址 //注意用完需要根据需要最后free()掉 char* substring(char* ch,int st,int en) { ; c ...
- 判断div里面的子集是否含有特定的类
if($('#BankCardId .card').length){ alert("请绑定银行卡"); } if ($('#user-20130011 #age-20130011' ...
- Activiti的流程实例及挂起激活(七)
1.1什么是流程实例 参与者(可以是用户也可以是程序)按照流程定义内容发起一个流程,这就是一个流程实例.是动态的.流程定义和流程实例的图解: 1.2启动流程实例 流程定义部署在 activiti 后, ...
- 【bzoj1398】Vijos1382寻找主人 Necklace
*题目描述: 给定两个项链的表示,判断他们是否可能是一条项链. *输入: 输入文件只有两行,每行一个由0至9组成的字符串,描述一个项链的表示(保证项链的长度是相等的). *输出: 如果两条项链不可能同 ...
- 【bzoj3926】[Zjoi2015]诸神眷顾的幻想乡
*题目描述: 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日. 粉丝们非常热情,自发组织表演了一系列节目给幽香看.幽香当然也 ...
- AT2370 Piling Up
https://www.luogu.org/jump/atcoder/2370 题解 答案不是\(2^{2m}\)因为每轮的第一次取球可能会不够. 我们可以设\(dp[i][j]\)表示到了第\(i\ ...
- iOS-Swizzle
最后更新:2017-06-21 一.先说结论 void swizzleMethod(Class cls, SEL originalSelector, SEL swizzledSelector) { M ...
- Oracle--利用监听器日志监控访问该数据库的客户端IP
服务器10.10.10.168 数据库seineebs 客户端 10.10.10.14 用户guipeng.zhang 查看监听器状态: 在本机利用PL/SQL工具连接该数据库 查看监听器日志:一 ...
- [CSP-S模拟测试]:辣鸡(ljh) (暴力)
题目描述 辣鸡$ljh\ NOI$之后就退役了,然后就滚去学文化课了.然而在上化学课的时候,数学和化学都不好的$ljh$却被一道简单题难住了,受到了大佬的嘲笑.题目描述是这样的:在一个二维平面上有一层 ...