Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 如何在.net core worker服务中保存登录文件?_Asp.net Core_Backgroundworker - Fatal编程技术网

Asp.net core 如何在.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"));

现在,我正在使用.Net core worker服务,我想将我的项目错误保存在一个文件(文本文件)中 我找不到此的任何设置

  .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中,它正在工作。我怎么能