log4net是log4j的.NET版本

强大的功能什么的就不写了

最大的特色是只要再config文件中做配置就可以使用了

但是在我的小项目中,实在没有太大的必要,每次看到这些复杂的配置,多出来的一个配置文件就觉得麻烦,所以研究了一下全部在C#代码中实现

废话不说,直接上代码

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using log4net.Repository.Hierarchy; 
using log4net; 
using log4net.Layout; 
using log4net.Appender; 
using log4net.Core; 
  
namespace HeYang.Framework.Helper 
{ 
  
    public class LogHelper 
    { 
        static LogHelper() 
        { 
            Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository(); 
  
            PatternLayout patternLayout = new PatternLayout(); 
            patternLayout.ConversionPattern = "【%d】【%p】 - %m%n"; 
            patternLayout.ActivateOptions(); 
  
            RollingFileAppender roller = new RollingFileAppender(); 
            //roller.AppendToFile = false; 
            roller.File = @"Logs\"; 
            roller.Layout = patternLayout; 
            roller.DatePattern = "yyyy.MM.dd'.log'"; 
            roller.RollingStyle = RollingFileAppender.RollingMode.Date; 
            roller.StaticLogFileName = false; 
            roller.LockingModel = new log4net.Appender.FileAppender.MinimalLock(); 
            roller.ActivateOptions(); 
            hierarchy.Root.AddAppender(roller); 
  
  
            hierarchy.Root.Level = Level.All; 
            hierarchy.Configured = true; 
            logger = log4net.LogManager.GetLogger("logger"); 
        } 
  
        static log4net.ILog logger = null; 
  
  
  
  
  
  
        public static void Error(string message) 
        { 
            logger.Error(message); 
        } 
        //public static void Error(string format, params object[] args) 
        //{ 
        //    Error(string.Format(format, args)); 
        //} 
        public static void Error(Exception exception) 
        { 
            Error(exception.Message); 
        } 
  
  
  
  
        public static void Info(string message) 
        { 
            logger.Info(message); 
        } 
        //public static void Info(string format, params object[] args) 
        //{ 
        //    Info(string.Format(format, args)); 
        //} 
        public static void Info(Exception exception) 
        { 
            Info(exception.Message); 
        } 
  
  
        public static void Warn(string message) 
        { 
            logger.Warn(message); 
        } 
        //public static void Warn(string format, params object[] args) 
        //{ 
        //    Warn(string.Format(format, args)); 
        //} 
        public static void Warn(Exception exception) 
        { 
            Warn(exception.Message); 
        } 
  
  
    } 
  
}

 

记录一下Message的转换

 

log4net.Layout.PatternLayout中的转换模式(ConversionPattern)

%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息

%n(new line):换行

%d(datetime):输出当前语句运行的时刻

%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数

%t(thread id):当前语句所在的线程ID

%p(priority): 日志的当前优先级别,即DEBUGINFOWARN…

%c(class):当前日志对象的名称,例如:

       模式字符串为:%-10c -%m%n

       代码为:

ILog log=LogManager.GetLogger(“Exam.Log”);

log.Debug(“Hello”);

    则输出为下面的形式:

Exam.Log       - Hello

%L:输出语句所在的行号

%F:输出语句所在的文件名

%-数字:表示该项的最小长度,如果不够,则用空格填充

例如,转换模式为%r [%t]%-5p %c - %m%n  PatternLayout 将生成类似于以下内容的输出:

176 [main] INFO  org.foo.Bar - Located nearest gas station.

 


Leave a Reply