log4.net

5 篇文章 0 订阅
5 篇文章 0 订阅

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 

  <!--configSections section must be the first element in configuration section-->
  <configSections>
    <!--using system API, doesnot support log4net.Config.XmlConfigurator.ConfigureAndWatch methods-->
    <!--<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />-->
   
    <!--read file directly for log4 setting, support the log4net.Config.XmlConfigurator.ConfigureAndWatch methods-->
    <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
   
  </configSections>
 
 
  <log4net>
   
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
      </layout>
    </appender>

    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>

   
    <!--fileAppender-->
    <appender name="FileAppender1" type="log4net.Appender.FileAppender">
      <file value="log-file.txt" />
      <appendToFile value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>

    <!-- use the environment variable TMP to name the log file-->
    <appender name="FileAppender2" type="log4net.Appender.FileAppender">
      <file value="${TMP}/log-file.txt" />
      <appendToFile value="true" />
      <encoding value="unicodeFFFE" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
   
   
    <!--lock model, allows multiple processes to write the the same file -->
    <appender name="FileAppender3" type="log4net.Appender.FileAppender">
      <file value="${TMP}/log-file.txt" />
      <appendToFile value="true" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>

   
   
    <!--roolingFileAppender-->
    <!--The file will be rolled based on a size constraint (RollingStyle).
    Up to 10 (MaxSizeRollBackups) old files of 100 KB each (MaximumFileSize) will be kept.
    These rolled files will be named: log.txt.1, log.txt.2, log.txt.3, etc...-->
   
    <appender name="RollingFileAppender1" type="log4net.Appender.RollingFileAppender">
      <file value="log.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="100KB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>


    <!--This example will roll the log file every minute! To change the rolling period adjust the DatePattern value.
    For example, a date pattern of "yyyyMMdd" will roll every day, could dynamic change file name by date.
    filename: logfile-yyyyMMdd-HHmm.log-->
   
    <appender name="RollingLogFileAppender2" type="log4net.Appender.RollingFileAppender">
      <file value="folder/logfile" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <datePattern value="-yyyyMMdd-HHmm&quot;.log&quot;" />
      <StaticLogFileName value="false"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d [%t] %p [%c] %m %n" />
      </layout>
    </appender>


    <!--roll log files on a date period and within a date period on file size. For each day only the last 10 files of 1MB will be kept.-->
    <appender name="RollingLogFileAppender3" type="log4net.Appender.RollingFileAppender">
      <file value="logfile" />
      <appendToFile value="true" />
      <rollingStyle value="Composite" />
      <datePattern value="yyyyMMdd" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="1MB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>


    <!--roll log files once per program execution.
    The appendToFile property is set to false to prevent the appender from overwriting the existing files.
    The maxSizeRollBackups is set to negative 1 to allow an infinite number of backup files.
    The file size does have to be limited but here it is set to 50 Gigabytes which,
    if a log file exceeds this size limit during a single run then it will also be rolled.-->
   
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="logfile.txt" />
      <appendToFile value="false" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="-1" />
      <maximumFileSize value="50GB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
   
   
   
   
    <!--logger-->
    <logger name="myLog1">
      <level value="DEBUG" />
      <appender-ref ref="ConsoleAppender" />
    </logger>

    <logger name="myLog2">
      <level value="DEBUG" />
      <appender-ref ref="FileAppender1" />
    </logger>
   
   
    <root>
      <level value="all" />
      <!--<appender-ref ref="ConsoleAppender" />-->
      <appender-ref ref="FileAppender1" />
     
    </root>
   
   
  </log4net>
 
 
</configuration>

<!--http://logging.apache.org/log4net/release/config-examples.html-->
<!--http://logging.apache.org/log4net/release/manual/configuration.html-->
<!--http://logging.apache.org/log4net/download.html-->


<!--

 

%c   列出logger名字空间的全称,如加上{<层数>}表示出从最内层算起的指定层数的名字空间
%X 按MDC(Mapped Diagnostic Context,线程映射表)输出日志。通常用于多个客户端连接同一台服务器,方便服务器区分是那个客户端访问留下来的日志。
%p 日志信息级别 如debug、warn或者info;
%d   %d:输出日志时间点的日期或时间,可以在其后指定格式,比如:%d{yyyy-mm-dd hh:mm:ss},输出类似:2005-7-19 17:49:27,刚好适合插入sqlserver;
%C   日志信息所在地(全限类名)
%m   产生的日志具体信息
%n    输出日志信息换行 windows平台为“/r/n”,unix平台为“/n”
%F 显示调用logger的源文件名
%l     输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数
%L    显示调用logger的代码行
%M   显示调用logger的方法名
%r     显示从程序启动时到记录该条日志时已经经过的毫秒数
%t     输出产生该日志事件的线程名

 

 

 %d [%t] %p [%c] [line NO: %L] - %m %n
 -->

 

 

 

// C# code:

/

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using log4net;
using log4net.Config;
using System.IO;
using System.Reflection;


namespace log4Test
{
    class Program
    {
        private static readonly ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);   // use root configure (set up the log name in root )

        //private static readonly ILog log1 = LogManager.GetLogger("myLog1");    // use the logger name straight away.
        //private static readonly ILog log2 = LogManager.GetLogger("myLog2");    // use the logger name straight away.

        static void Main(string[] args)
        {
            //if (log.IsDebugEnabled )
            log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile));  // declare the log4 file is current app.config file and monitor if it changes. // default 不写也行
            //XmlConfigurator.ConfigureAndWatch(new FileInfo("path")); // declare The path to the configuration file 
           
            log.Debug("aaa");
           
            Console.Read();  // for console appender
        }
    }
}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值