zoukankan      html  css  js  c++  java
  • log4net 的配置问题和使用扩展的TGLOG.DLL


    <root>

    <level value="WARN" />

    <appender-ref ref="LogFileAppender" />

    <appender-ref ref="ConsoleAppender" />

    </root>

    <logger name="testApp.Logging">

    <level value="info"/>

    <appender-ref ref="LogFileAppender" />

    </logger>

    在程序中调用的时候

    我是写成这样:

    log4net.ILog log = log4net.LogManager.GetLogger("testApp.Logging");

    log.Info("info");

    在输出日志的时候,名称为testApp.Logging 的LOGGER,就会以它为判断条件,忽律<ROOT>中level value 的等级;

    输出结果是日志和控制台;

    如果配置中没有LOGGER,就会以<ROOT>中level value 等级判定,程序中调用级别比level value 高的,才触发ROOT下的写日志!!

     <logger>

    支持的属性:

    name

    必须的,logger的名称

    additivity

    可选,取值是truefalse,默认值是true。设置为false时将阻止父logger中的appender

    支持的子元素:

    appender-ref

    0个或多个,要引用的appender的名字。

    level

    最多一个。 只有在这个级别或之上的事件才会被记录。

    param

    0个或多个, 设置一些参数。

     
            在<LOGGER>节下配置上 
    <!--为FALSE阻止ROOT中的日志事件发生,默认为TRUE-->
          <additivity value ="false"/>
    以后:
     
    会阻止发生在<ROOT>中日志事件,从而只根据<LOGGER>下的文件日志输出!
     
    根据下面哥们扩展写的生成TGLOG.DLL. 

    http://www.cnblogs.com/longshizhong/archive/2009/11/25/1610452.html?switchskin=1#skinlist 

    代码
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      
    <configSections>
        
    <!--log4net节配置-->
        
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
      
    </configSections>

      
    <!--log4net配置-->
      
    <log4net>

        
    <!--配置到数据库-->
        

        
    <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender,log4net">
          
    <!--BufferSize为缓冲区大小-->
          
    <bufferSize value="10" />

          
    <!--<param name="BufferSize" value="2" />-->
          
    <!--引用-->
          
    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
          
    <!--连接字符串-->
          
    <connectionString value="data source=.;initial catalog=Test;integrated security=false;persist security info=True;User ID=sa;Password=;" />
          
    <!--插入语句-->
          
    <commandText value="INSERT INTO WorkLog ([Date],[Thread],[Level],[Logger],[Operator],[Message],[ActionType],[Operand],[IP],[MachineName],[Browser],[Location],[Exception],[State]) VALUES (@log_date, @thread, @log_level, @logger,@operator, @message,@action_type,@operand,@ip,@machineName,@browser,@location,@exception,@state)" />
          
    <!--记录时间-->
          
    <parameter>
            
    <parameterName value="@log_date" />
            
    <dbType value="DateTime" />
            
    <layout type="log4net.Layout.RawTimeStampLayout" />
          
    </parameter>
          
    <!--线程号-->
          
    <parameter>
            
    <parameterName value="@thread" />
            
    <dbType value="String" />
            
    <size value="100" />
            
    <layout type="log4net.Layout.PatternLayout">
              
    <conversionPattern value="%thread" />
            
    </layout>
          
    </parameter>
          
    <!--日志等级-->
          
    <parameter>
            
    <parameterName value="@log_level" />
            
    <dbType value="String" />
            
    <size value="100" />
            
    <layout type="log4net.Layout.PatternLayout">
              
    <conversionPattern value="%level" />
            
    </layout>
          
    </parameter>
          
    <!--日志名称-->
          
    <parameter>
            
    <parameterName value="@logger" />
            
    <dbType value="String" />
            
    <size value="200" />
            
    <layout type="log4net.Layout.PatternLayout">
              
    <conversionPattern value="%logger" />
            
    </layout>
          
    </parameter>
          
          
    <!--操作者-->
          
    <parameter>
            
    <parameterName value="@operator" />
            
    <dbType value="Int16" />
            
    <layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">
              
    <conversionPattern value="%property{Operator}" />
            
    </layout>
          
    </parameter>

          
    <!--操作对象-->
          
    <parameter>
            
    <parameterName value="@operand" />
            
    <dbType value="String" />
            
    <size value="300" />
            
    <layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">
              
    <conversionPattern value="%property{Operand}" />
            
    </layout>
          
    </parameter>

          
    <!--IP-->
          
    <parameter>
            
    <parameterName value="@ip" />
            
    <dbType value="String" />
            
    <size value="20" />
            
    <layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">
              
    <conversionPattern value="%property{IP}" />
            
    </layout>
          
    </parameter>
          
    <!--机器名-->
          
    <parameter>
            
    <parameterName value="@machineName" />
            
    <dbType value="String" />
            
    <size value="100" />
            
    <layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">
              
    <conversionPattern value="%property{MachineName}" />
            
    </layout>
          
    </parameter>
          
    <!--浏览器-->
          
    <parameter>
            
    <parameterName value="@browser" />
            
    <dbType value="String" />
            
    <size value="50" />
            
    <layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">
              
    <conversionPattern value="%property{Browser}" />
            
    </layout>
          
    </parameter>
          
          
    <!--消息-->
          
    <parameter>
            
    <parameterName value="@message" />
            
    <dbType value="String" />
            
    <size value="3000" />
            
    <layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">
              
    <conversionPattern value="%property{Message}" />
            
    </layout>
          
    </parameter>

          
    <!--动作-->
          
    <parameter>
            
    <parameterName value="@action_type" />
            
    <dbType value="Int16" />
        
            
    <layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">
              
    <conversionPattern value="%property{ActionType}" />
            
    </layout>
          
    </parameter>
          
    <!--地址-->
          
    <parameter>
            
    <parameterName value="@location" />
            
    <dbType value="String" />
            
    <size value="2000" />
            
    <layout type="log4net.Layout.PatternLayout">
              
    <conversionPattern value="%location" />
            
    </layout>
          
    </parameter>
          
          
    <!--错误-->
          
    <parameter>
            
    <parameterName value="@exception" />
            
    <dbType value="String" />
            
    <size value="4000" />
            
    <layout type="log4net.Layout.ExceptionLayout" />
          
    </parameter>

          
    <!--消息-->
          
    <parameter>
            
    <parameterName value="@state" />
            
    <dbType value="String" />
            
    <size value="3000" />
            
    <layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">
              
    <conversionPattern value="%message" />
            
    </layout>
          
    </parameter>
        
    </appender>


        
    <appender name="ReflectionLayout" type="log4net.Appender.RollingFileAppender,log4net">

          
    <!--日志文件路径,按文件大小方式输出时在这里指定文件名,并且前面的日志按天在文件名后自动添加当天日期形成文件-->
          
    <param name="File" value="D:/Log/" />

          
    <!--是否追加到文件-->
          
    <param name="AppendToFile" value="true" />

          
    <!--记录日志写入文件时,不锁定文本文件-->
          
    <!--<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />-->

          
    <!--Unicode编码-->
          
    <!--<Encoding value="UTF-8" />-->

          
    <!--最多产生的日志文件数,value="-1"为不限文件数-->
          
    <param name="MaxSizeRollBackups" value="10" />

          
    <!--是否只写到一个文件中-->
          
    <param name="StaticLogFileName" value="false" />

          
    <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
          
    <param name="RollingStyle" value="Composite" />

          
    <!--按日期产生文件夹,文件名[在日期方式与混合方式下使用]-->
          
    <param name="DatePattern" value="yyyy-MM-dd/&quot;ReflectionLayout.log&quot;"  />
          
    <!--<param name="DatePattern" value="yyyyMMdd/yyyyMMdd&quot;-TimerServer.log&quot;"  />-->
          
    <!--<param name="DatePattern" value="yyyyMMdd/&quot;TimerServer/TimerServer.log&quot;"  />-->

          
    <!--每个文件的大小。只在混合方式与文件大小方式下使用,超出大小的在文件名后自动增加1重新命名-->
          
    <param name="maximumFileSize" value="500KB" />

          
    <!--记录的格式。-->
          
    <layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">
            
    <param name="ConversionPattern" value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 记录类:%logger 操作者ID:%property{Operator} 操作类型:%property{Action}%n 当前机器名:%property%n当前机器名及登录用户:%username %n 记录位置:%location%n 消息描述:%property{Message}%n 异常:%exception%n 消息:%message%newline%n%n" />
          
    </layout>
        
    </appender>

        
    <appender name="MyLayout" type="log4net.Appender.RollingFileAppender,log4net">

          
    <!--日志文件路径,按文件大小方式输出时在这里指定文件名,并且前面的日志按天在文件名后自动添加当天日期形成文件-->
          
    <param name="File" value="D:/Log/" />

          
    <!--是否追加到文件-->
          
    <param name="AppendToFile" value="true" />

          
    <!--记录日志写入文件时,不锁定文本文件-->
          
    <!--<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />-->

          
    <!--Unicode编码-->
          
    <!--<Encoding value="UTF-8" />-->

          
    <!--最多产生的日志文件数,value="-1"为不限文件数-->
          
    <param name="MaxSizeRollBackups" value="-1" />

          
    <!--是否只写到一个文件中-->
          
    <param name="StaticLogFileName" value="false" />

          
    <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
          
    <param name="RollingStyle" value="Composite" />

          
    <!--按日期产生文件夹,文件名[在日期方式与混合方式下使用]-->
         
          
    <!--<param name="DatePattern" value="yyyyMMdd/yyyyMMdd&quot;-TimerServer.log&quot;"  />-->
          
    <param name="DatePattern" value="yyyy-MM-dd/&quot;MyLayout/MyLayout.log&quot;"  />

          
    <!--每个文件的大小。只在混合方式与文件大小方式下使用,超出大小的在文件名后自动增加1重新命名-->
          
    <param name="maximumFileSize" value="100KB" />

          
    <!--记录的格式。-->
          
    <layout type="TGLog.ExpandLayout1.MyLayout,TGLog">
            
    <param name="ConversionPattern" value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 记录类:%logger 操作者ID:%Operator 操作类型:%ActionType%n 当前机器名:%property%n当前机器名及登录用户:%username %n 记录位置:%location%n 消息描述:%Message%n 消息:%message%newline%n%n" />
          
    </layout>
        
    </appender>

        
    <appender name="HashtableLayout" type="log4net.Appender.RollingFileAppender,log4net">

          
    <!--日志文件路径,按文件大小方式输出时在这里指定文件名,并且前面的日志按天在文件名后自动添加当天日期形成文件-->
          
    <param name="File" value="D:/Log/" />

          
    <!--是否追加到文件-->
          
    <param name="AppendToFile" value="true" />

          
    <!--记录日志写入文件时,不锁定文本文件-->
          
    <!--<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />-->

          
    <!--Unicode编码-->
          
    <Encoding value="UTF-8" />

          
    <!--最多产生的日志文件数,value="-1"为不限文件数-->
          
    <param name="MaxSizeRollBackups" value="10" />

          
    <!--是否只写到一个文件中-->
          
    <param name="StaticLogFileName" value="false" />

          
    <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
          
    <param name="RollingStyle" value="Date" />

          
    <!--按日期产生文件夹,文件名[在日期方式与混合方式下使用]-->
          
    <param name="DatePattern" value="yyyy-MM-dd/yyyyMMdd&quot;-HashtableLayout.log&quot;"  />
          

          
    <!--每个文件的大小。只在混合方式与文件大小方式下使用,超出大小的在文件名后自动增加1重新命名--><!--
          
    <param name="maximumFileSize" value="1KB" />-->

          
    <!--记录的格式。-->
          
    <layout type="TGLog.ExpandLayout2.HashtableLayout,TGLog">
            
    <param name="ConversionPattern" value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 记录类:%logger 操作者ID:%property{Operator} 操作类型:%property{Action}%n 当前机器名:%property%n当前机器名及登录用户:%username %n 记录位置:%location%n 消息描述:%property{Message}%n 异常:%exception%n 消息:%message%newline%n%n" />
          
    </layout>
        
    </appender>

        
    <appender name="ExpandILog" type="log4net.Appender.RollingFileAppender,log4net">

          
    <!--日志文件路径,按文件大小方式输出时在这里指定文件名,并且前面的日志按天在文件名后自动添加当天日期形成文件-->
          
    <param name="File" value="D:/Log/" />

          
    <!--是否追加到文件-->
          
    <param name="AppendToFile" value="true" />

          
    <!--记录日志写入文件时,不锁定文本文件-->
          
    <!--<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />-->

          
    <!--Unicode编码-->
          
    <Encoding value="UTF-8" />

          
    <!--最多产生的日志文件数,value="-1"为不限文件数-->
          
    <param name="MaxSizeRollBackups" value="10" />

          
    <!--是否只写到一个文件中-->
          
    <param name="StaticLogFileName" value="false" />

          
    <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
          
    <param name="RollingStyle" value="Date" />

          
    <!--按日期产生文件夹,文件名[在日期方式与混合方式下使用]-->
          
    <param name="DatePattern" value="yyyy-MM-dd/yyyyMMdd&quot;-ExpandILog.log&quot;"  />


          
    <!--每个文件的大小。只在混合方式与文件大小方式下使用,超出大小的在文件名后自动增加1重新命名-->
          
    <!--
          
    <param name="maximumFileSize" value="1KB" />-->

          
    <!--记录的格式。-->
          
    <layout type="log4net.Layout.PatternLayout">
            
    <param name="ConversionPattern" value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 记录类:%logger 操作者ID:%property{Operator} 操作类型:%property{ActionType}%n 当前机器名:%property%n当前机器名及登录用户:%username %n 记录位置:%location%n 消息描述:%property{Message}%n 异常:%exception%n 消息:%message%newline%n%n" />
          
    </layout>
        
    </appender>

        
    <!--使用反射方法同时写两文件和数据库-->
        
    <logger name="ReflectionLayout">
          
    <level value="DEBUG"/>
          
    <appender-ref ref="HashtableLayout"/>
          
    <appender-ref ref="ReflectionLayout"/>
          
    <appender-ref ref="ADONetAppender"/>
        
    </logger>

        
    <!--使用哈希表方法-->
        
    <logger name="HashtableLayout">
          
    <level value="DEBUG"/>
          
    <appender-ref ref="HashtableLayout"/>
          
    <!--<appender-ref ref="ReflectionLayout"/>-->
          
    <!--<appender-ref ref="ADONetAppender"/>-->
        
    </logger>


        
    <!--使用扩展Layout方法1输出-->
        
    <logger name="MyLayout">
          
    <level value="DEBUG"/>
          
    <appender-ref ref="MyLayout"/>
        
    </logger>

        
    <!--使用扩展ILog方法输出-->
        
    <logger name="ExpandILog">
          
    <level value="DEBUG"/>
          
    <appender-ref ref="ExpandILog"/>
        
    </logger>
      
    </log4net>
    </configuration>

    :

  • 相关阅读:
    查看集群基本情况
    Linux的awk命令详解
    wget命令详解
    ES集群操作原理
    Linux常见的Shell命令
    影响ES相关度算分的因素
    Hive三种建表语句详解
    大数据常用组件端口号
    Hadoop Shell命令
    Zookeeper搭建
  • 原文地址:https://www.cnblogs.com/qipilang/p/1624638.html
Copyright © 2011-2022 走看看