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>

    :

  • 相关阅读:
    Data Structure and Algorithm
    Data Structure and Algorithm
    Data Structure and Algorithm
    Data Structure and Algorithm
    Data Structure and Algorithm
    Data Structure and Algorithm
    Data Structure and Algorithm
    Data Structure and Algorithm
    Data Structure and Algorithm
    Data Structure and Algorithm
  • 原文地址:https://www.cnblogs.com/qipilang/p/1624638.html
Copyright © 2011-2022 走看看