log4net的使用

在这里插入图片描述

1添加引用

在这里插入图片描述

2添加配置文件 log4net.xml

<?xml version="1.0" encoding="utf-8"?>
<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="LogFileAppender" type="log4net.Appender.RollingFileAppender" LEVEL="INFO">
    <!--防止多线程时不能写Log,官方说线程非安全-->
    <param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
    <param name="File" value="Logs/" />
    <param name="AppendToFile" value="true"/>
    <param name="StaticLogFileName" value="false" />
    <param name="DatePattern" value="yyyy-MM-dd.'info.log'" />
    <param name="RollingStyle" value="Date"/>
    <param name="MaxSizeRollBackups" value="10" />
    <param name="MaximumFileSize" value="5MB" />
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="## %d [%t] %-5p %x %m %n"/>
      <!--<param name="ConversionPattern" value="%date [%thread] %-5level [%logger] %ndc - %message%newline" />-->
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="INFO" />
      <param name="LevelMax" value="INFO" />
    </filter>
  </appender>
  <appender name="ErrorFileAppender" type="log4net.Appender.RollingFileAppender" LEVEL="ERROR">
    <param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
    <param name="File" value="Logs/" />
    <param name="AppendToFile" value="true"/>
    <param name="StaticLogFileName" value="false" />
    <param name="DatePattern" value="yyyy-MM-dd.'error.log'" />
    <param name="RollingStyle" value="Date"/>
    <param name="MaxSizeRollBackups" value="10" />
    <param name="MaximumFileSize" value="5MB" />
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%date [%thread] %-5level [%logger] %ndc - %message%newline" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="WARN" />
      <param name="LevelMax" value="ERROR" />
    </filter>
  </appender>
  <appender name="DebugFileAppender" type="log4net.Appender.RollingFileAppender" LEVEL="ERROR">
    <param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
    <param name="File" value="Logs/" />
    <param name="AppendToFile" value="true"/>
    <param name="StaticLogFileName" value="false" />
    <param name="DatePattern" value="yyyy-MM-dd.'debug.log'" />
    <param name="RollingStyle" value="Date"/>
    <param name="MaxSizeRollBackups" value="10" />
    <param name="MaximumFileSize" value="5MB" />
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%date [%thread] %-5level [%logger] %ndc - %message%newline" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="DEBUG" />
      <param name="LevelMax" value="DEBUG" />
    </filter>
  </appender>
  <root>
    <level value="All" />
    <appender-ref ref="LogFileAppender" />
    <appender-ref ref="ErrorFileAppender"/>
    <appender-ref ref="DebugFileAppender" />
    <appender-ref ref="ConsoleAppender" />
  </root>
</log4net>

3 添加LogHelper类

using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WindowsService1
{
    public static class LogHelper
    {
        public static void Info(object msg, params object[] parameters)
        {
            var log = LogManager.GetLogger("log4netlogger");
            log.Info(msg);
        }

        public static void Debug(string msg)
        {
            var log = LogManager.GetLogger("log4netlogger");
            log.Debug(msg);
        }

        public static void Error(string msg)
        {
            var log = LogManager.GetLogger("log4netlogger");
            log.Error(msg);
        }

        public static void FormatError(string format, params object[] args)
        {
            var log = LogManager.GetLogger("log4netlogger");
            log.Error(string.Format(format, args));
        }

        public static void Error(Exception ex)
        {
            var log = LogManager.GetLogger("log4netlogger");
            log.Error(ex.Message, ex);
        }

        public static void Error(object msg, Exception ex)
        {
            var log = LogManager.GetLogger("log4netlogger");
            log.Error(msg, ex);
        }

        public static void Warn(object msg, Exception ex)
        {
            var log = LogManager.GetLogger("log4netlogger");
            log.Warn(msg, ex);
        }

        public static void Log(string msg)
        {
            Info(msg);
        }

        public static void Log(Exception ex)
        {
            Error(ex);
        }

    }
}

4使用

protected void Page_Load(object sender, EventArgs e)
        {
            //加载log4net配置
            log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(AppDomain.CurrentDomain.BaseDirectory + @"\log4net.xml"));
            try
            {
                LogHelper.Info("-----------1001CloudServer 停止运行!");
            }
            catch (Exception E) {

                LogHelper.Error(E.Message);
            }
        }

5根目录下会多出一个logs文件夹

在这里插入图片描述

.net8 webapi中的使用如下:

/// 1.webapi添加log4net和Microsoft.Extensions.Logging.Log4Net.AspNetCore
/// 2.加一个log4net.config
/// 3.Program.cs添加配置builder.Logging.AddLog4Net(“log4net.config”);
/// 4.加一个LogHelper.cs
/// 5.Controllers中使用
/// 6.bin\Debug\net8.0\logs下生成txt.
/// 7.看error看第一行是错误信息,哪个方法报的错看有行号的内容
/// 写入 WebApi3\myWebapi\bin\Debug\net8.0\logs
在这里插入图片描述

下面展示一些 内联代码片

//Program.cs加
builder.Logging.AddLog4Net("log4net.config");
//另外加一个帮助类
public class Log4Helper
{
    /// <summary>
    /// 1.webapi添加log4net和Microsoft.Extensions.Logging.Log4Net.AspNetCore
    /// 2.加一个log4net.config
    /// 3.Program.cs添加配置builder.Logging.AddLog4Net("log4net.config");
    /// 4.加一个LogHelper.cs
    /// 5.Controllers中使用
    /// 6.bin\Debug\net8.0\logs下生成txt.
    /// 7.看error看第一行是错误信息,哪个方法报的错看有行号的内容
    /// 写入  WebApi3\myWebapi\bin\Debug\net8.0\logs
    /// </summary>
    /// <param name="msg"></param>
    public static void Error(string msg)
    {
        var log = LogManager.GetLogger("log4netlogger");
        log.Error(msg);
    }
    public static void Info(string msg)
    {
        var log = LogManager.GetLogger("log4netlogger");
        log.Info(msg);
    }
}

log4net.config

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

  
  <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" LEVEL="INFO">
    <!--防止多线程时不能写Log,官方说线程非安全-->
    <param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
    <param name="File" value="Logs/info/" />
    <param name="AppendToFile" value="true"/>
    <param name="StaticLogFileName" value="false" />
    <param name="DatePattern" value="yyyy-MM-dd.'info.log'" />
    <param name="RollingStyle" value="Date"/>
    <param name="MaxSizeRollBackups" value="10" />
    <param name="MaximumFileSize" value="5MB" />
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%newline%date [%thread] %-5level [%logger] %method - %message" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="INFO" />
      <param name="LevelMax" value="INFO" />
    </filter>
  </appender>
  
  <appender name="ErrorFileAppender" type="log4net.Appender.RollingFileAppender" LEVEL="ERROR">
    <param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
    <!--下面这行是内容放在哪里,Logs/error/是将txt放到logs文件夹下的error文件夹中-->
    <param name="File" value="Logs/error/" />
    <param name="AppendToFile" value="true"/>
    <param name="StaticLogFileName" value="false" />
    <param name="DatePattern" value="yyyy-MM-dd.'error.log'" />
    <param name="RollingStyle" value="Date"/>
    <param name="MaxSizeRollBackups" value="10" />
    <param name="MaximumFileSize" value="5MB" />
    <layout type="log4net.Layout.PatternLayout">
      <!--下面这行是消息的内容模板-->
      <param name="ConversionPattern" value="%newline%date [%thread] %-5level [%logger] %method - %message" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="ERROR" />
      <param name="LevelMax" value="ERROR" />
    </filter>
  </appender>
  
  <appender name="DebugFileAppender" type="log4net.Appender.RollingFileAppender" LEVEL="ERROR">
    <param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
    <param name="File" value="Logs/debug/" />
    <param name="AppendToFile" value="true"/>
    <param name="StaticLogFileName" value="false" />
    <param name="DatePattern" value="yyyy-MM-dd.'debug.log'" />
    <param name="RollingStyle" value="Date"/>
    <param name="MaxSizeRollBackups" value="10" />
    <param name="MaximumFileSize" value="5MB" />
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%newline%date [%thread] %-5level [%logger] %ndc - %message" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="DEBUG" />
      <param name="LevelMax" value="DEBUG" />
    </filter>
  </appender>
  
  <root>
    <level value="All" />
    <appender-ref ref="LogFileAppender" />
    <appender-ref ref="ErrorFileAppender"/>
    <appender-ref ref="DebugFileAppender" />
    <appender-ref ref="ConsoleAppender" />
  </root>
  
</log4net>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值