第一步 安装

通过NuGet直接搜索进行安装安装log4net

第二步 编写log4net配置参数

1.添加 log4net.config 文件并更改属性

2.编写 log4net.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
	<log4net>
		<!--定义输出到文件中-->
		<appender name="SysAppender" type="log4net.Appender.RollingFileAppender">
			<!--日志的路径-->
			<file value="Logs/"/>
			<!--是否覆盖,默认是追加true-->
			<appendToFile value="true"/>
			<rollingStyle value="Composite"/>
			<!--文件名称-->
			<DatePattern value="yyyy-MM-dd-HH'.log'">
			</DatePattern>
			<!--设置无限备份=-1 ,最大备份数为1000-->
			<param name="MaxSizeRollBackups" value="1000"/>
			<!--每个文件的大小-->
			<param name="MaximumFileSize" value="500KB"/>
			<!--名称是否可以更改 为false为可以更改-->
			<param name="StaticLogFileName" value="false"/>
			<layout type="log4net.Layout.PatternLayout">
				<!--输出格式-->
				<conversionPattern value="[%date][%-5level]%message [Thread:%thread]%n Line:%l %n"/>
			</layout>
		</appender>

		<!--定义输出到控制台命令行中-->
		<appender name="ConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
			<mapping>
				<level value="ALL"/>
				<foreColor value="White"/>
				<backColor value="Red, HighIntensity"/>
			</mapping>
			<layout type="log4net.Layout.PatternLayout">
				<conversionPattern value="[%date][%-5level]%message [Thread:%thread]%n Line:%l %n"/>
			</layout>
		</appender>
		
		<root>
			<!--日志的级别 OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL 只有日志输出级别大于或等于配置的级别才能输出日志信息-->
			<level value="ALL"/>
			<!--文件形式记录日志-->
			<appender-ref ref="SysAppender"/>
			<!--控制台控制显示日志-->
			<appender-ref ref="ConsoleAppender"/>
		</root>
	</log4net>
</configuration>

日志文本记录格式参考

<!-- 
    %M 方法名
    %m 输出代码中指定的消息 
    %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 
    %r 输出自应用启动到输出该log信息耗费的毫秒数 
    %c 输出所属的类目,通常就是所在类的全名 
    %t 输出产生该日志事件的线程名 
    %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n” 
    %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 :10:28,921
    %l 或 %L 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。

    %x Used to output the NDC (nested diagnostic context) associated with the thread that generated the logging event
    %X Used to output the MDC (mapped diagnostic context) associated with the thread that generated the logging event for specified key
-->

第三步 编写帮助类

/// <summary>
    /// 说明:通过ilog.Debug()打印日志,可以将代码行数打出来,所以去掉二次封装
    /// </summary>
    public static class Log4NetHelper
    {
        public static ILog Logger;

        //public static ILog LogError;
        //public static ILog LogWarn;
        //public static ILog LogInfo;
        //public static ILog LogDebug;

        static Log4NetHelper()
        {
            string baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
            string path = Path.Combine(baseDirectory, "log4net.config");
            XmlConfigurator.ConfigureAndWatch(new FileInfo(path));
            Logger = LogManager.GetLogger("");
            //LogError = LogManager.GetLogger("logerroe");
            //LogWarn = LogManager.GetLogger("logwarn");
            //LogInfo = LogManager.GetLogger("loginfo");
            //LogDebug = LogManager.GetLogger("logdebug");
        }

        ///// <summary>
        ///// 打印错误日志
        ///// </summary>
        ///// <param name="msg"></param>
        //public static void Error(string msg,Exception ex)
        //{
        //    if (LogError.IsErrorEnabled)
        //    {
        //        LogError.Error(msg,ex);
        //    }
        //}

        ///// <summary>
        ///// 打印警告日志
        ///// </summary>
        ///// <param name="obj"></param>
        //public static void Warn(string msg)
        //{
        //    if (LogWarn.IsWarnEnabled)
        //    {
        //        LogWarn.Warn(msg);
        //    }
        //}

        ///// <summary>
        ///// 打印信息日志
        ///// </summary>
        ///// <param name="msg"></param>
        //public static void Info(string msg)
        //{
        //    if (LogInfo.IsInfoEnabled)
        //    {
        //        LogInfo.Info(msg);
        //    }
        //}

        ///// <summary>
        ///// 打印调试日志
        ///// </summary>
        ///// <param name="msg"></param>
        //public static void Debug(string msg)
        //{
        //    if (LogDebug.IsDebugEnabled)
        //    {
        //        LogDebug.Debug(msg);
        //    }
        //}
    }

 

第四步 测试

Log4NetHelper.Logger.Debug("启动");