log4net完整示例

配置文件路径"Config\\Log4Net.config"(相对执行目录)

配置文件内容:

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  
  <root>
    <level value="INFO" />
    <appender-ref ref="InfoAppender" />
    <appender-ref ref="ConsoleAppender" />
  </root>
  <logger name="logerror" additivity="false">
    <level value="ERROR" />
    <appender-ref ref="ErrorAppender" />
  </logger>
  <logger name="loginfo" additivity="false">
    <level value="INFO" />
    <appender-ref ref="InfoAppender" />
  </logger>
  
  
  <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
    <param name="File" value="C:\\Log\\WindowsApplication1\\Error\\" />
    <param name="AppendToFile" value="true" />
    <param name="MaxSizeRollBackups" value="100" />
    <param name="MaxFileSize" value="10240" />
    <param name="StaticLogFileName" value="false" />
    <param name="DatePattern" value="yyyyMMdd".htm"" />
    <param name="RollingStyle" value="Date" />
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="<HR COLOR=red>%n异常时间:%d [%t] <BR>%n异常级别:%-5p <BR>%n异 常 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>"  />
    </layout>
  </appender>
  <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
    <param name="File" value="C:\\Log\\WindowsApplication1\\Info\\" />
    <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".htm"" />
    <param name="RollingStyle" value="Date" />
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="<HR COLOR=blue>%n日志时间:%d [%t] <BR>%n日志级别:%-5p <BR>%n日 志 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>"  />
    </layout>
  </appender>
  <!--控制台-->
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
    </layout>
  </appender>

</log4net>

辅助类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.Diagnostics;
using log4net;

namespace ClassLibrary1
{
    public class Log
    {
        //private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

        /// <summary>
        /// 获取调用Log类公共方法的调用者信息
        /// </summary>
        /// <returns></returns>
        static string GetCaller()
        {
            // get call stack
            //StackTrace stackTrace = new StackTrace();
            //MethodBase mb = stackTrace.GetFrame(1).GetMethod();

            MethodBase mb = new StackFrame(2).GetMethod();
            Type t = mb.DeclaringType;
            return String.Format("{0}.{1}", t.FullName, mb.Name);
        }


        public static void Default(string message)
        {
            ILog lg = log4net.LogManager.GetLogger("");
            lg.InfoFormat("{0}:{1}", GetCaller(), message);
        }

        public static void Info(string message)
        {
            ILog lg = log4net.LogManager.GetLogger("loginfo");
            lg.InfoFormat("{0}:{1}", GetCaller(), message);
        }

        public static void Error(string message)
        {
            ILog lg = log4net.LogManager.GetLogger("logerror");          
            lg.InfoFormat("{0}:{1}", GetCaller(), message);
        }
    }
}


在辅助类所在项目的AssemblyInfo中加入

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Config\\Log4Net.config", Watch = true)]

适用于桌面应用,web应用中指定的ConfigFile的值可能需调整;配置文件里的log文件保存路径可调整为相对路径


猜你喜欢

转载自blog.csdn.net/wzp1986/article/details/39666693