原文: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 之将自定义属性记录到文件中 (三)的更多相关文章

  1. 也用 Log4Net 之将自定义属性记录到文件中 (三)

    也用 Log4Net  之将自定义属性记录到文件中 (三)  即解决了将自定义属性记录到数据库之后.一个新的想法冒了出来,自定义属性同样也能记录到文件中吗?答案是肯定的,因为Log4Net既然已经考虑 ...

  2. socket传数据并记录到文件中

    最近在新项目中要通过socket传一些数据,下面是程序: 功能: 将客户端发送的json数据写入到日志文件中,如果数据不是json的,丢弃. 程序如下: #!/usr/bin/env python # ...

  3. js文件中三斜杠注释///reference path的用途

    编辑某个js文件时,要想这个js文件出现其他js成员的ide提示,可以在js文件开头使用3个斜杠注释和reference指令的path指向此js文件路径,这样在编写这个js文件时,ide就会自动出现p ...

  4. Log4Net + Log4Mongo 将日志记录到MongoDb中

    实现: 将日志保存在MongoDb中: 自定义日志字段: 日志按照日期拆分集合: 第一部分:将日志保存在MongoDb中 新建控制台程序Log4MongoDemo 通过NuGet安装Log4Net ( ...

  5. Android 自定义View及其在布局文件中的使用示例

    前言: 尽管Android已经为我们提供了一套丰富的控件,如:Button,ImageView,TextView,EditText等众多控件,但是,有时候在项目开发过程中,还是需要开发者自定义一些需要 ...

  6. mysql 导入 csv文件中数据,只能导入第一行

    用workbench导入csv数据,只能导入数据的第一行,也就是标注每一列的列名的那一行.但问题是,每次导入完成时,系统提示已经导入了500条记录(这个文件中的确有500条记录),可是刷新数据库后打开 ...

  7. 输出 time 命令的结果到文件中

    译至:http://unicus.jp/skmk/archives/338 由于输出 time 命令的结果到文件时使用的错误的方式,所以将其记录下来. 环境是bash. 目标 将运行的a.out程序的 ...

  8. 将Log4net的配置配置到的独立文件中

    本文转载:http://blog.csdn.net/wanzhuan2010/article/details/7587780 另外一篇博客:http://grim1980.blog.sohu.com/ ...

  9. 日志管理-将Log4net的配置配置到的独立文件中

    转自:http://www.cnblogs.com/zfanlong1314/p/3662679.html使用log4net已经很久了.但从来没有详情了解log4的参数,及具体使用方法.看了周公的博客 ...

随机推荐

  1. 【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], ...

  2. 字符串截取模板 && POJ 3450、3080 ( 暴力枚举子串 && KMP匹配 )

    //截取字符串 ch 的 st~en 这一段子串返回子串的首地址 //注意用完需要根据需要最后free()掉 char* substring(char* ch,int st,int en) { ; c ...

  3. 判断div里面的子集是否含有特定的类

    if($('#BankCardId .card').length){ alert("请绑定银行卡"); } if ($('#user-20130011 #age-20130011' ...

  4. Activiti的流程实例及挂起激活(七)

    1.1什么是流程实例 参与者(可以是用户也可以是程序)按照流程定义内容发起一个流程,这就是一个流程实例.是动态的.流程定义和流程实例的图解: 1.2启动流程实例 流程定义部署在 activiti 后, ...

  5. 【bzoj1398】Vijos1382寻找主人 Necklace

    *题目描述: 给定两个项链的表示,判断他们是否可能是一条项链. *输入: 输入文件只有两行,每行一个由0至9组成的字符串,描述一个项链的表示(保证项链的长度是相等的). *输出: 如果两条项链不可能同 ...

  6. 【bzoj3926】[Zjoi2015]诸神眷顾的幻想乡

    *题目描述: 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日. 粉丝们非常热情,自发组织表演了一系列节目给幽香看.幽香当然也 ...

  7. AT2370 Piling Up

    https://www.luogu.org/jump/atcoder/2370 题解 答案不是\(2^{2m}\)因为每轮的第一次取球可能会不够. 我们可以设\(dp[i][j]\)表示到了第\(i\ ...

  8. iOS-Swizzle

    最后更新:2017-06-21 一.先说结论 void swizzleMethod(Class cls, SEL originalSelector, SEL swizzledSelector) { M ...

  9. Oracle--利用监听器日志监控访问该数据库的客户端IP

    服务器10.10.10.168  数据库seineebs 客户端 10.10.10.14  用户guipeng.zhang 查看监听器状态: 在本机利用PL/SQL工具连接该数据库 查看监听器日志:一 ...

  10. [CSP-S模拟测试]:辣鸡(ljh) (暴力)

    题目描述 辣鸡$ljh\ NOI$之后就退役了,然后就滚去学文化课了.然而在上化学课的时候,数学和化学都不好的$ljh$却被一道简单题难住了,受到了大佬的嘲笑.题目描述是这样的:在一个二维平面上有一层 ...