master
bicijinlian 6 years ago
parent dba2767a19
commit c0b6c1af73

@ -0,0 +1,54 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace LogStudy.WebApp.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
public class LogController : ControllerBase
{
private ILogger logger;
public LogController(ILogger<LogController> logger)
{
this.logger = logger;
}
[HttpGet]
[HttpPost]
public IActionResult Index()
{
logger.LogTrace("EventSource 提供程序");
logger.LogError(new EventId(222, "EWT测试"), "EWT错误{id}", 222);
logger.LogDebug("LogDebug");
logger.LogInformation("LogInformation");
logger.LogWarning("LogWarning");
logger.LogError("LogError");
logger.LogCritical("LogCritical");
return new JsonResult(new { Code=0, Message="日志记录成功" });
}
[HttpGet]
[HttpPost]
public IActionResult NoDI()
{
var loggerFactory = new LoggerFactory().AddConsole();
var logger2 = loggerFactory.CreateLogger<LogController>();
logger2.LogTrace("LogTrace");
logger2.LogDebug("LogDebug");
logger2.LogInformation("LogInformation");
logger2.LogWarning("LogWarning");
logger2.LogError("LogError");
logger2.LogCritical("LogCritical");
return new JsonResult(new { Code = 0, Message = "日志记录成功" });
}
}
}

@ -23,10 +23,6 @@ namespace LogStudy.WebApp.Controllers
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
_logger.LogCritical("我是测试");
_logger.LogDebug("我是Debug测试");
return new string[] { "value1", "value2" };
}

@ -9,11 +9,15 @@
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Logging.EventLog" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Logging.EventSource" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Filter" Version="1.1.2" />
<PackageReference Include="Microsoft.Extensions.Logging.TraceSource" Version="2.2.0" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.4" />
</ItemGroup>
</Project>

@ -6,7 +6,10 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Logging.Debug;
namespace LogStudy.WebApp
{
@ -14,23 +17,65 @@ namespace LogStudy.WebApp
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
var host = CreateWebHostBuilder(args).Build();
//启动检查:使用日志
var logger = host.Services.GetRequiredService<ILogger<Program>>();
logger.LogInformation("检查数据库连接");
logger.LogDebug(new EventId(1000,"事件名"),"检查缓存{id}",222);
//少提供一个参数
logger.LogInformation("1001","检查MQ{id}{name}",3333);
host.Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureLogging((hostbuildContext, logBuild) => {
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
var webBuilder = WebHost.CreateDefaultBuilder(args)
//配置日志
.ConfigureLogging((hostbuildContext, logBuild) =>
{
//CreateDefaultBuilder 默认注册了日志组件:
//使用appsettings.环境变量.json 的Logging配置节
//默认添加了以下提供程序Console、 Debug、EventSource
//详情可以查看源代码
//本方法ConfigureLogging重新配置日志
//配置信息
var config = hostbuildContext.Configuration;
//环境变量
var ev = hostbuildContext.HostingEnvironment;
//注入服务
var service=logBuild.Services;
logBuild
//自定义配置信息
.AddConfiguration(config.GetSection("Logging"))
//添加Console提供程序
.AddConsole()
//添加Debug提供程序
.AddDebug()
//添加EventLog提供程序
.AddEventLog()
//添加EventSourceLogger提供程序:EWT
.AddEventSourceLogger()
//添加TraceSource提供程序
.AddTraceSource("NetCoreDemo")
.SetMinimumLevel(LogLevel.Information);
//设置最小默认日志级别
.SetMinimumLevel(LogLevel.Information)
//添加筛选器:会覆盖上面配置信息
.AddFilter("System", LogLevel.Debug) //不指定提供程序,则应用与全部
.AddFilter<DebugLoggerProvider>("Microsoft", LogLevel.Trace);//只作用于指定的提供程序 DebugLoggerProvider
//以下方式可以使用第三方日志组件如Nlog、Log4net等
//.ClearProviders()
//.AddProvider(null)
})
.UseStartup<Startup>();
return webBuilder;
}
}
}

@ -9,14 +9,34 @@ using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Logging.Configuration;
using Microsoft.Extensions.Logging.Console;
using System.IO;
namespace LogStudy.WebApp
{
/// <summary>
/// 使用日志:
/// 1、构造函数注入
/// 2、使用 LoggerFactory 来创建 ILogger
/// </summary>
public class Startup
{
public Startup(IConfiguration configuration)
/// <summary>
/// 构建函数注入
/// </summary>
private readonly ILogger _logger;
/// <summary>
/// 工厂方法创建
/// </summary>
private readonly ILogger _logger2;
public Startup(IConfiguration configuration,ILogger<Startup> logger)
{
Configuration = configuration;
_logger=logger;
_logger2=GetLoggerFromFactory("Startup");
}
public IConfiguration Configuration { get; }
@ -24,7 +44,10 @@ namespace LogStudy.WebApp
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
_logger.LogInformation("配置服务开始");
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
_logger2.LogInformation("配置服务结束");
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
@ -37,5 +60,14 @@ namespace LogStudy.WebApp
app.UseMvc();
}
private ILogger GetLoggerFromFactory(string name)
{
var fac=new LoggerFactory();
var logger = fac.AddConsole().CreateLogger(name);
return logger;
}
}
}

@ -2,8 +2,8 @@
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
"System": "Debug",
"Microsoft": "Debug"
}
}
}

@ -1,7 +1,20 @@
{
"Logging": {
"Logging":
{
"LogLevel":
{
"Default": "Information",
"System": "Information",
"Microsoft": "Information"
},
"Console":
{
"IncludeScopes": true,
"LogLevel": {
"Default": "Warning"
"Default": "Debug",
"System": "Debug",
"Microsoft": "Debug"
}
}
},
"AllowedHosts": "*"

Loading…
Cancel
Save