ASP.NET Core (.Net6)Log4Net日志记录

本文档详细介绍了如何在.NET项目中集成log4net,包括在NuGet中引入log4net包,配置log4net.config文件以设置不同级别的日志输出路径和格式,以及在Startup和Program.cs中注入log4net。此外,还提供了一个LogHelper类用于方便地记录不同类型的日志。通过这些步骤,开发者可以高效地管理和记录应用程序的日志信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.在nuget中引入下图的两个包

 2.在项目中新增log4net.config文件

3.配置文件内容4

<?xml version="1.0" encoding="utf-8"?> 
<log4net>
	<!--错误日志-->
	<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
		<!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
		<file value="log\\LogError\\" />
		<!--是否支持分割文件(追加日志)-->
		<appendToFile value="true" />
		<!--日志文件的记录形式-->
		<rollingStyle value="Composite" />
		<!--防止多线程时不能写log-->
		<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
		<!-- 日志文件的命名规则 -->
		<datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'" />
		<!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
		<staticLogFileName value="false" />
		<!--当日志文件达到MaxFileSize大小,就自动创建备份文件。-->
		<param name="MaxSizeRollBackups" value="100" />
		<!--日志文件的布局格式-->
		<layout type="log4net.Layout.PatternLayout">
			<!--每条日志末尾的文字说明-->
			<!--输出格式-->
			<!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
			<conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别:  %-5level %n错误描述:%message%newline %n" />
		</layout>
	</appender>

	<!--Info日志-->
	<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
		<param name="File" value="Log\\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="yyyy\\yyyyMM\\yyyyMMdd'.txt'" />
		<param name="RollingStyle" value="Date" />
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别:  %-5level %n日志描述:%message%newline %n" />
		</layout>
	</appender>

	<!--Debug日志-->
	<appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
		<param name="File" value="Log\\Debug\\" />
		<param name="AppendToFile" value="true" />
		<param name="MaxFileSize" value="10240" />
		<param name="MaxSizeRollBackups" value="100" />
		<param name="StaticLogFileName" value="false" />
		<param name="DatePattern" value="yyyy\\yyyyMM\\yyyyMMdd HH'.txt'" />
		<param name="RollingStyle" value="Date" />
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别:  %-5level %n日志描述:%message%newline %n" />
		</layout>
	</appender>
	
	<!--监控日志-->
	<appender name="MonitorAppender" type="log4net.Appender.RollingFileAppender">
		<param name="File" value="Log\\Monitor\\" />
		<param name="AppendToFile" value="true" />
		<param name="MaxFileSize" value="10240" />
		<param name="MaxSizeRollBackups" value="100" />
		<param name="StaticLogFileName" value="false" />
		<param name="DatePattern" value="yyyy\\yyyyMM\\yyyyMMdd'.txt'" />
		<param name="RollingStyle" value="Date" />
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别:  %-5level %n跟踪描述:%message%newline %n" />
		</layout>
	</appender>

	<!--Error日志-->
	<logger name="LogError">
		<level value="ERROR" />
		<appender-ref ref="RollingLogFileAppender" />
	</logger>

	<!--Info日志-->
	<logger name="LogInfo">
		<level value="INFO" />
		<appender-ref ref="InfoAppender" />
	</logger>

	<!--Info日志-->
	<logger name="LogDebug">
		<level value="DEBUG" />
		<appender-ref ref="DebugAppender" />
	</logger>
	
	<!--监控日志-->
	<logger name="LogMonitor">
		<level value="Monitor" />
		<appender-ref ref="MonitorAppender" />
	</logger>

	<!--root权限-->
	<root>
		<priority value="ALL"/>
		<level value="ALL"/>
		<appender ref="rollingAppender"/>
	</root>
</log4net> 

4.在startup中注入

或者在Program.cs中加入以下代码 

program.cs

var builder = WebApplication.CreateBuilder(args);
 
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddSignalR();

builder.Services.AddLogging(cfg =>
{
    //cfg.AddLog4Net();
    //默认的配置文件路径是在根目录,且文件名为log4net.config
    //如果文件路径或名称有变化,需要重新设置其路径或名称
    //比如在项目根目录下创建一个名为cfg的文件夹,将log4net.config文件移入其中,并改名为log.config
    //则需要使用下面的代码来进行配置
    cfg.AddLog4Net(new Log4NetProviderOptions()
    {
        Log4NetConfigFileName = "ConfigFile/log4net.config",
        Watch = true
    });
});

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
}
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();


app.Run();
 

 5.写一个log类

using System;

namespace CompoundingDevice.Common
{
    public class LogHelper
    {
        private static readonly log4net.ILog LInfo = log4net.LogManager.GetLogger("LogInfo");

        private static readonly log4net.ILog LError = log4net.LogManager.GetLogger("LogError");

        private static readonly log4net.ILog LMonitor = log4net.LogManager.GetLogger("LogMonitor");

        private static readonly log4net.ILog LDebug = log4net.LogManager.GetLogger("LogDebug");
        /// <summary>
        /// 记录Error日志
        /// </summary>
        /// <param name="errorMsg"></param>
        /// <param name="ex"></param>
        public static void Error(string errorMsg, Exception ex = null)
        {
            if (ex != null)
            {
                LError.Error(errorMsg, ex);
            }
            else
            {
                LError.Error(errorMsg);
            }
        }

        /// <summary>
        /// 记录Info日志
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="ex"></param>
        public static void Info(string msg, Exception ex = null)
        {
            if (ex != null)
            {
                LInfo.Info(msg, ex);
            }
            else
            {
                LInfo.Info(msg);
            }
        }

        /// <summary>
        /// 记录Monitor日志
        /// </summary>
        /// <param name="msg"></param>
        public static void Monitor(string msg)
        {
            LMonitor.Info(msg);
        }

        /// <summary>
        /// 记录Debug日志
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="ex"></param>
        public static void Debug(string msg, Exception ex = null)
        {
            if (ex != null)
            {
                LInfo.Debug(msg, ex);
            }
            else
            {
                LInfo.Debug(msg);
            }
        }

    }
}

6.使用方法

 LogHelper.Info($"发送数据 {cmd}");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值