1.需要引进NoGet程序包【log4net,还有扩展程序集:Microsoft.Extensions.Logging.Log4Net.AspNetCore】 
2.把引入的程序集使用进来:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args)
.Build()
.Run();
}
/// <summary>
/// 调入当前方法,CreateHostBuilder->然后进入 Startup 这个类
/// </summary>
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
//把前面我们引入的程序集使用进来
.ConfigureLogging((context, LoggingBuilder) =>
{
LoggingBuilder.AddFilter("System", LogLevel.Warning); // 忽略系统的其他日志
LoggingBuilder.AddFilter("Microsoft", LogLevel.Warning);
LoggingBuilder.AddLog4Net();
})
;
}
需要引入命名空间:
using Microsoft.Extensions.Logging;
3. 新增日志配置文件,跟Startup.cs 同级,并设置属性-为【始终复制】


这段复制替换配置文件 4.【Startup类】Configure里面注入ILoggerFactory,创建ILogger对象【需要引入上面提到的命名空间】
public void Configure(IApplicationBuilder app, IWebHostEnvironment env,ILoggerFactory factory)
{
ILogger<Startup> _ilogger = factory.CreateLogger<Startup>();
//写日志
_ilogger.LogError("This is StartUp Error!");
}
上面是在Startup类中写日志,当然我们也可以在控制器中写日志
public class SecondController : Controller
{
//2.指定当前类型的变量
private ILoggerFactory _iFactory = null;
private ILogger<SecondController> _ilogger = null;
//构造函数注入
public SecondController(ILoggerFactory factory, ILogger<SecondController> logger)
{
//注入当前的实例
_iFactory = factory;
_ilogger = logger;
}
/// <summary>
/// log4net在控制器中的使用
/// </summary>
/// <returns></returns>
public IActionResult Index()
{
#region Log4net日志记录
{
//1、Trace
//用于记录最详细的日志消息,通常用于开发阶段调试问题。
//因为这些消息可能包含敏感的应用程序数据,因此不建议用于生产环境,默认应禁用。
//2、Debug
//这种消息在开发阶段短期内比较有用。
//它们包含一些可能会对调试有所助益、但没有长期价值的信息。
//默认情况下这是最详细的日志。
//3、Information
//这种消息被用于跟踪应用程序的一般流程。
//这种日志有一定的长期价值。
//4、Warning
//当应用程序出现错误或其他不会导致程序停止的流程异常或意外事件时,应使用警告级别,,以供日后调查。
//建议在一个通用的地方处理警告级别的异常。
//5、Error
//当应用程序由于某些故障停止工作时,则需要记录错误日志。
//这些消息应该指明当前活动或操作(比如当前的HTTP请求),而不是应用程序范围的故障。
//6、Critical
//当应用程序或系统崩溃、遇到灾难性故障,需要立即被关注时,应当记录关键级别的日志。例如,数据丢失、磁盘空间不够等
//方式一:
//创建当前logger
var iFactoryLogger = _iFactory.CreateLogger<SecondController>();
//写日志
iFactoryLogger.LogInformation("This's SecondController_iFactoryLogger.LogInformation-Information");//方式二:使用_ilogger写日志
_ilogger.LogError("This's SecondController__ilogger.LogError_Error");
}
#endregion
return View();
}
}
转载于:https://www.cnblogs.com/wangwangwangMax/p/14077216.html
