首先去Nuget中安装Log4Net包
安装:log4net
安装:Microsoft.Extensions.Logging.Console
安装:Microsoft.Extensions.Logging.Log4Net.AspNetCore
方式一Program.cs文件
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Logging;
namespace NetCoreApp
{
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();//CreateWebHostBuilder启动了Kestrel服务器,这个服务器负责监听--转发--响应客户端请求(这样就不需要IIS来负责监听,转发,响应客户端请求了,IIS就只做反向代理就行了)
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureLogging((context, loggingbuilder) =>
{
//该方法需要引入Microsoft.Extensions.Logging名称空间
loggingbuilder.AddFilter("System", LogLevel.Warning); //过滤掉系统默认的一些日志
loggingbuilder.AddFilter("Microsoft", LogLevel.Warning);//过滤掉系统默认的一些日志
//添加Log4Net
//var path = Directory.GetCurrentDirectory() + "\log4net.config";
//不带参数:表示log4net.config的配置文件就在应用程序根目录下,也可以指定配置文件的路径
loggingbuilder.AddLog4Net();
})
.UseStartup();
}
}
控制器中使用
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace NetCoreApp.Controllers
{
public class HomeController : Controller
{
//ILoggerFactory和ILogger都是系统内置的接口,它们两个都可以写日志,随便你用哪个都行
public ILoggerFactory _Factory = null;
public ILogger _logger = null;
//注意:ILoggerFactory的命名空间是Microsoft.Extensions.Logging;
public HomeController(ILoggerFactory factory, ILogger logger)
{
this._Factory = factory;
this._logger = logger;
}
public IActionResult Index()
{
var msg = _user.Sum();
this._Factory.CreateLogger().LogError("这里出现了一个错误");
this._logger.LogError("出现了严重的错误!");
return Content("OK");
}
}
}
log4net.config 配置文件 注意:这个配置文件的最外层用
方式二
Startup文件
public class Startup
{
//为StartUp.cs添加属性
public static ILoggerRepository repository { get; set; }
public IConfiguration Configuration { get; } //构造函数注入:Configuration用于读取配置文件的
public Startup(IConfiguration configuration)
{
Configuration = configuration;
repository = LogManager.CreateRepository("NetCoreApp"); //我的项目名称叫NetCoreApp
//指定配置文件
XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
}
}
控制器中使用
using log4net;
using Microsoft.AspNetCore.Mvc;
namespace NetCoreApp.Controllers
{
public class HomeController : Controller
{
private ILog log;
public HomeController()
{
this.log = LogManager.GetLogger(Startup.repository.Name, typeof(HomeController));
}
public IActionResult Index()
{
log.Error("哈哈,出现错误啦");
return Content("OK");
}
}
}
log4net.config配置文件:注意,这个配置文件的最外层用



