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的配置文件,你会有种豁然开朗的感觉。

原文地址:https://www.cnblogs.com/lonelyxmas/p/11650738.html

时间: 2024-11-13 08:02:42

Log4Net 之将自定义属性记录到文件中 (三)的相关文章

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

也用 Log4Net  之将自定义属性记录到文件中 (三)  即解决了将自定义属性记录到数据库之后.一个新的想法冒了出来,自定义属性同样也能记录到文件中吗?答案是肯定的,因为Log4Net既然已经考虑到了数据库记录方式,当然也一定考虑到了其它的记录方式.but how,how,how(这句话来源于电影功夫熊猫).接下来让我们看看如何将自定义属性记录到文件中. 上菜之前我先做个小补充,首先我们用到的消息载体依然是LogMessage,LogMessage类的代码可以查看"也用 Log4Net  之

log4net 不同模块,记录不同文件夹方法

如题: 如果红字的不写,所有的logger都会继承root.所有的日志都会记录一个主要的日志文件里,现在加了红字的,红字部分的只记录到自己相对应的目录里 <log4net debug="false"> <!---不继承root的关系 additivity="false"--> <logger name="CPUDefault" additivity="false"> <level va

查看数据库负载并记录到文件中

查看数据库负载主要是查询数,连接进程数,正在运行的进程如下: #!/bin/bash # screen -D -m -S check_mysql_status sh /path2script/script & while true; do sudo mysql --execute='show global status;' | awk '/Queries/{q=$2} /Threads_connected/{tc=$2} /Threads_running/{printf"%20s %20

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

译至:http://unicus.jp/skmk/archives/338 由于输出 time 命令的结果到文件时使用的错误的方式,所以将其记录下来. 环境是bash. 目标 将运行的a.out程序的输出和其所花的时间重定向到日志文件中 无效的例子1 time ./a.out > logfile time ./a.out | tee logfile 上面的例子是重定向结果到logfile,下面的例子是通过tee把标准输出输出到文件.但是只有time的输出没有被记录到文件中.    这是因为tim

Yii2 将日志记录到数据库中

Yii2默认日志记录到文件中,通过配置log组件来重新将日志保存到数据库中 打开config目录下console.php文件,修改log配置 'log' => [ 'targets' => [ [ 'class' => 'yii\log\DbTarget', 'levels' => ['error', 'warning'], ], ], ], 打开cmd 命令行,进入Yii根目录,开始创建数据库 yii migrate [email protected]/log/migration

将time的结果放入到文件中

缘起 今天看到一个问题,如何把time的执行结果放到文件中,心想直接time sh sleep.sh >output.log不就可以了么.其实大部分返回标准输出的命令都可以这么干,列如:ls >output.log 就会把ls的执行结果放入到output.log中. 那么为什么time命令就不行了呢? 因为:time命令返回的是标准错误输出! 实验准备: 1.有一个sleep.sh脚本,脚本内容如下:2.执行结果如下:3.通过time命令获取脚本执行时间 无效的例子1: time sh sle

python日志添加功能,主要记录程序运行中的日志,统一收集并分析

转自:https://www.cnblogs.com/jsondai/p/9663633.html 一.日志的级别 debug(调试信息) info() warning(警告信息)error(错误信息) critical(致命信息) 从左往右越来越严重 日志等级(level) 描述 DEBUG 最详细的日志信息,典型应用场景是 问题诊断 INFO 信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作 WARNING 当某些不期望的事情发生时记录的信息(

log4net VS2012 日志layout自定义,error日志和info日志分别记录到不同文件中

打开VS中“工具”=>“NuGet程序包管理器”=>“管理解决方案的NuGet程序包”菜单 在“管理NuGet程序包”窗口中,搜索log4net,并安装 有时候,我们在日志中需要记录一些业务数据,如operator等信息,我们新建一个类WebMethodLog,来存放log里面需要用到的信息 public class WebMethodLog { public string operatorNo{get;set;} public string operatorName { get; set;

asp.net Web项目中使用Log4Net进行错误日志记录

使用log4net可以很方便地为应用添加日志功能.应用Log4net,开发者可以很精确地控制日志信息的输出,减少了多余信息,提高了日志记录性能.同时,通过外部配置文件,用户可以不用重新编译程序就能改变应用的日志行为,使得用户可以根据情况灵活地选择要记录的信息. 那么我们如何在Web项目中使用Log4Net呢? 一.基本配置 1.下载Log4Net,地址如下:http://logging.apache.org/log4net/download_log4net.cgi,如下图所示: 2.下载到本地后