Asp.net core 如何在.net core worker服务中保存登录文件?
现在,我正在使用.Net core worker服务,我想将我的项目错误保存在一个文件(文本文件)中 我找不到此的任何设置Asp.net core 如何在.net core worker服务中保存登录文件?,asp.net-core,backgroundworker,Asp.net Core,Backgroundworker,现在,我正在使用.Net core worker服务,我想将我的项目错误保存在一个文件(文本文件)中 我找不到此的任何设置 .ConfigureLogging((hostingContext, logging) => { logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
.ConfigureLogging((hostingContext, logging) =>
{
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddEventLog(new EventLogSettings()
{
SourceName = "CallerTestCacheServiceCoreAPI",
LogName = "CallerTestCacheServiceCoreAPILog",
});
})
如果您真的需要,有几个第三方提供商可以将日志接收器处理为文件 serilog one如果是一个很好的示例,请查看下面的自述
如果您确实需要,有两个第三方提供商可以将日志接收器处理为文件 serilog one如果是一个很好的示例,请查看下面的自述
我在类似此项目的另一个类中添加了一个扩展方法 并将其引入program.cs服务中
services.AddSerilogServices();
在我的工人阶级:
readonly Serilog.ILogger _log;
public Worker( Serilog.ILogger log)
{
_log = log;
log.Information("Hello World!");
}
它成功了我在另一个类中添加了一个扩展方法,比如这个项目 并将其引入program.cs服务中
services.AddSerilogServices();
在我的工人阶级:
readonly Serilog.ILogger _log;
public Worker( Serilog.ILogger log)
{
_log = log;
log.Information("Hello World!");
}
它在主方法(程序类)中起作用:
在IHostBuilder方法中,添加useserlog()
:
在控制器中,使用DI获取记录器实例,添加以下内容:
public class MyController: Controller
{
private ILogger _logger;
public MyController(ILogger<MyController> logger)
{
_logger = logger;
} }
公共类MyController:Controller
{
私人ILogger_记录器;
公共MyController(ILogger记录器)
{
_记录器=记录器;
} }
要记录消息,请使用\u logger
实例,例如:
\u logger.LogInformation(“用户{User}登录”,用户记录)代码>
希望这有帮助。在Main方法(程序类)中:
在IHostBuilder方法中,添加useserlog()
:
在控制器中,使用DI获取记录器实例,添加以下内容:
public class MyController: Controller
{
private ILogger _logger;
public MyController(ILogger<MyController> logger)
{
_logger = logger;
} }
公共类MyController:Controller
{
私人ILogger_记录器;
公共MyController(ILogger记录器)
{
_记录器=记录器;
} }
要记录消息,请使用\u logger
实例,例如:
\u logger.LogInformation(“用户{User}登录”,用户记录)代码>
希望这能有所帮助。要使用Serilog
记录器,请将程序
类更改为:
公共类程序
{
公共静态void Main(字符串[]args)
{
Logger.Logger=新的LoggerConfiguration()
.MinimumLevel.Override(“Microsoft”,LogEventLevel.Information)
.Enrich.FromLogContext()的
.CreateLogger();
尝试
{
CreateHostBuilder(args.Build().Run();
}
捕获(例外情况除外)
{
Log.Fatal(例如,“主机意外终止”);
}
最后
{
Log.CloseAndFlush();
}
}
公共静态IHostBuilder CreateHostBuilder(字符串[]args)
=>Host.CreateDefaultBuilder(args)
.ConfigureServices((主机上下文,服务)=>
{
//在此处添加您的服务和工作人员
services.AddHostedService();
})
.useserlog((主机上下文、服务、日志配置)=>
记录器配置
.ReadFrom.Configuration(hostingContext.Configuration));
}
在appsettings.json
中,删除的“日志记录”
部分,并将其替换为的“Serilog”
部分(如上所述),或在代码中指定设置
此答案基于Serilog
库()为asp net core接收器提供的说明,因为Worker
模板使用与asp net core项目相同的托管系统。要使用Serilog
记录器,请将程序更改为:
公共类程序
{
公共静态void Main(字符串[]args)
{
Logger.Logger=新的LoggerConfiguration()
.MinimumLevel.Override(“Microsoft”,LogEventLevel.Information)
.Enrich.FromLogContext()的
.CreateLogger();
尝试
{
CreateHostBuilder(args.Build().Run();
}
捕获(例外情况除外)
{
Log.Fatal(例如,“主机意外终止”);
}
最后
{
Log.CloseAndFlush();
}
}
公共静态IHostBuilder CreateHostBuilder(字符串[]args)
=>Host.CreateDefaultBuilder(args)
.ConfigureServices((主机上下文,服务)=>
{
//在此处添加您的服务和工作人员
services.AddHostedService();
})
.useserlog((主机上下文、服务、日志配置)=>
记录器配置
.ReadFrom.Configuration(hostingContext.Configuration));
}
在appsettings.json
中,删除的“日志记录”
部分,并将其替换为的“Serilog”
部分(如上所述),或在代码中指定设置
此答案基于Serilog
library()为asp net core接收器提供的说明,因为Worker
模板使用与asp net core项目相同的托管系统。尝试使用Serilog-检查文档了吗。没有内置的文件提供程序,因为每个人都使用最后列出的第三方提供程序之一。文件日志可能看起来很简单,但实际上,有很多“有趣”的情况,比如需要将不同类型的错误保存到不同的文件中。其中一些提供者,如Serilog,支持结构化的logging@YanivAmrami我如何在backgroundworker应用程序中实现SeriLog?尝试使用SeriLog-您检查过文档了吗。没有内置的文件提供程序,因为每个人都使用最后列出的第三方提供程序之一。文件日志可能看起来很简单,但实际上,有很多“有趣”的情况,比如需要将不同类型的错误保存到不同的文件中。其中一些提供者,如Serilog,支持结构化的logging@YanivAmrami我如何在backgroundworker应用程序中实现SeriLog?它成功了。但不是在我的工人阶级。就在program.cs中,它正在工作。我怎么能