也用 Log4Net 之将自定义属性记录到文件中 (三)
也用 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既然已经考虑到了 ...
- Log4Net + Log4Mongo 将日志记录到MongoDb中
实现: 将日志保存在MongoDb中: 自定义日志字段: 日志按照日期拆分集合: 第一部分:将日志保存在MongoDb中 新建控制台程序Log4MongoDemo 通过NuGet安装Log4Net ( ...
- socket传数据并记录到文件中
最近在新项目中要通过socket传一些数据,下面是程序: 功能: 将客户端发送的json数据写入到日志文件中,如果数据不是json的,丢弃. 程序如下: #!/usr/bin/env python # ...
- 也用 Log4Net 之将日志记录到数据库的后台实现 (二)
也用 Log4Net 之将日志记录到数据库的后台实现 (二) 大家下午好,昨天讲了配置,今天我们讲讲后台实现,在完成了后台实现后,我们才能真正意义上的解决把自定义属性字段值录入到数据库中. 在开写之 ...
- 也用 Log4Net 之将日志记录到数据库的配置 (一)
也用 Log4Net 之将日志记录到数据库的配置 (一) 前段时间我一直想做一个通用一点的日志记录系统,可以便于不同的业务组调用进行日志记录及分析.本来打算着自己下手写一个,后面发现各业务组可能会需 ...
- Log4Net 之将日志记录到数据库的后台实现 (二)
原文:Log4Net 之将日志记录到数据库的后台实现 (二) 大家下午好,昨天讲了配置,今天我们讲讲后台实现,在完成了后台实现后,我们才能真正意义上的解决把自定义属性字段值录入到数据库中. 在开写之前 ...
- Log4Net 之将日志记录到数据库的配置 (一)
原文:Log4Net 之将日志记录到数据库的配置 (一) 前段时间我一直想做一个通用一点的日志记录系统,可以便于不同的业务组调用进行日志记录及分析.本来打算着自己下手写一个,后面发现各业务组可能会需要 ...
- asp.net Web项目中使用Log4Net进行错误日志记录
使用log4net可以很方便地为应用添加日志功能.应用Log4net,开发者可以很精确地控制日志信息的输出,减少了多余信息,提高了日志记录性能.同时,通过外部配置文件,用户可以不用重新编译程序就能 ...
- log4net 自定义日志级别记录多个日志
程序中原来只记录一个日志,现在我要写一个用户操作日志,需要与原来的日志分开,在config文件中一阵折腾无果(要么写不全,要么写重了,反正没办法完美分离,要么与现存代码没办法完美兼容),差点放弃准备自 ...
随机推荐
- MVC学习系列——参考
C#进阶系列——WebApi接口传参不再困惑:传参详解 http://www.cnblogs.com/landeanfen/p/5337072.html
- [译] ASP.NET 生命周期 – ASP.NET 应用生命周期(一)
概述 ASP.NET 平台定义了两个非常重要的生命周期.第一个是 应用生命周期 (application life cycle),用来追踪应用从启动的那一刻到终止的那一刻.另一个就是 请求生命周期 ...
- Increase SharePoint Execution Timeout
<system.web> <compilation batch="false" batchTimeout="600" maxBatchSize ...
- js 判断对象相等
文笔不是很好,一直在博客园属于那种只看不说的那种,有次心血来潮,想把自己的一些心得记录下来,我认认真真写了大半个小时,谁知一点保存,会话超时然后我的东西不知道去哪里,当时想死的心都有,写博客也就没那个 ...
- bnuoj 20832 Calculating Yuan Fen(暴力模拟)
http://www.bnuoj.com/bnuoj/problem_show.php?pid=20832 [题意]: 给你一串字符串,求一个ST(0<ST<=10000),对字符串中字符 ...
- Object-C单元测试&MOCK(摘录精选)
断言测试类型: 下面一共18个断言(SDK中也是18个,其含义转自ios UnitTest 学习笔记,真心佩服原文的博主): XCTFail(format…) 生成一个失败的测试: XCTAssert ...
- 在SpringMVC利用MockMvc进行单元测试
spring在线文档:https://docs.spring.io/spring/docs/current/javadoc-api/index.html?index-files/index-13.ht ...
- CrackMe_001
本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注册机的东西. 其中,文章中按照如下逻辑编排(解决如 ...
- 【leetcode】Permutations II (middle)
Given a collection of numbers that might contain duplicates, return all possible unique permutations ...
- EL表达式对数组、集合操作
el表达式是通过${key}的方式获取对象中的值.在el表达式中有如下几个隐含的对象,pageScope,requestSope,sessionScope,applicationScope,如果要取$ ...