如何解决Serilog 没有方法“.ForContext()”
在我的项目中,日志记录是使用 Serilog 实现的。当我尝试记录一行时,我想添加一些不应包含在消息中但应包含在日志中的值。
我的 _Logger 没有“.ForContext”() 方法。 也许我注册错了 serilog?
处理程序类:
public class LogHandler
{
private readonly ILogger<LogHandler> _logger;
public LogHandler(ILogger<LogHandler> logger)
{
_logger = logger;
}
**_logger.(HAS NO METHOD)ForContext("Hello",...);**
}
Program.cs:
namespace LoggingExample
{
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureLogging(loggingConfiguration => loggingConfiguration.ClearProviders())
.UseSerilog((hostingContext,loggerConfiguration) =>
loggerConfiguration.ReadFrom.Configuration(hostingContext.Configuration)
.Enrich.FromLogContext());
}
}
启动:
namespace LoggingExample
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<ILogHandler,LogHandler>()
.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
public void Configure(IApplicationBuilder app,IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseMvc();
}
}
}
设置:
{
"Serilog": {
"Using": [ "Serilog.Sinks.Graylog","Serilog.Sinks.Console" ],"MinimumLevel": {
"Default": "Warning","Override": {
"LoggingExample.Handler": "information"
}
},"Writeto": [
{
"Name": "Graylog","Args": {
"hostnameOrAddress": "127.0.0.1","port": "1514","transportType": "Tcp"
}
}
],"Enrich": [
"FromLogContext","WithMachineName"
],"Properties": {
"Application": "Centralized logging application"
}
},"AllowedHosts": "*"
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。