【一】、.net core 3.1 创建windows服务并集成Serilog的步骤记录

摘要:
1.为新项目选择“WorkerService”,如下图所示:2.添加nuget以引用Microsoft.Extensions。托管WindowsServices系列扩展。托管Serilog.Sink。Console Serilog.Sinks.File3.修改主方法publicstaticvoidMain(str

1、新建项目

  选择“Worker Service”,如下图:

【一】、.net core 3.1 创建windows服务并集成Serilog的步骤记录第1张

2、添加nuget引用

  Microsoft.Extensions.Hosting.WindowsServices

  Serilog.Extensions.Hosting

  Serilog.Sinks.Console

  Serilog.Sinks.File

3、修改Program的Main方法

        public static void Main(string[] args)
        {
            var baseDir = AppDomain.CurrentDomain.BaseDirectory;
            var logfile = Path.Combine(baseDir, "log", "log.txt");
            Log.Logger = new LoggerConfiguration()
                .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
                .Enrich.FromLogContext()
                .WriteTo.Console(LogEventLevel.Information, theme: AnsiConsoleTheme.Literate)
                .WriteTo.File(logfile, LogEventLevel.Information, rollingInterval: RollingInterval.Day, retainedFileCountLimit: 90)
                .CreateLogger();
            try
            {
                Log.Information("服务启动成功!" + DateTime.Now.ToString());
                CreateHostBuilder(args).Build().Run();
            }
            catch (Exception e)
            {
                Log.Fatal(e, "启动出错了!");
            }
            finally
            {
                Log.CloseAndFlush();
            }
        }

4、修改Program里的CreateHostBuilder

代码如下:

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
            .UseWindowsService()
            .ConfigureServices((hostContext, services) =>
            {
                services.AddHostedService<Worker>();
            })
            .UseSerilog();

5、测试Worker里的日志记录功能

        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
                await Task.Delay(1000, stoppingToken);
            }
        }

上面的代码是visual在创建项目时自带的,直接运行,就会在log文件夹里新建日志文件,然后记下日志如下:

【一】、.net core 3.1 创建windows服务并集成Serilog的步骤记录第2张

  示例代码地址:https://download.csdn.net/download/jiancaixing/20629212

免责声明:文章转载自《【一】、.net core 3.1 创建windows服务并集成Serilog的步骤记录》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇博弈论学习笔记(八)立场选择、种族隔离与立场随机化python3+Scrapy爬虫使用pipeline数据保存到文本和数据库,数据少或者数据重复问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C#中的String类2

                          深入C# String类 C#中的String类 他是专门处理字符串的(String),他在System的命名空间下,在C#中我们使用的是string 小写的string只是大写的String的一个别名(外号)使用大写和小写都是一样的 Using  == import 常用的字符串处理法 Java中常用的...

Java基于自定义注解的面向切面的实现

目的:实现在任何想要切的地方添加一个注解就能实现面向切面编程 自定义注解类 @Target({ElementType.PARAMETER, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface LongOu { } @Target,...

利用Microsoft.Practices.Unity的拦截技术,实现.NET中的AOP

1、记住这个单词的意思:Interception(拦截) 2、首先说一下原理和背景   原理:所谓的AOP就是面向切面编程,这里不多说,百度搜索。   目的:个人认为是为了解耦,部分代码跟业务代码分离,业务代码里面不掺杂其它功能,比如:记录异常、记录操作日志。   背景:项目基本功能已完成,产品要求记录用户的操作日志,新增的时候记录某人在某时做了某事(包括...

kotlin 集合

一、List 1. var list1 = listOf(1, 3, 5) // println(list1.map { it * 10 })//[10, 30, 50] //筛选list println(list1.filter { it>3 }) //[5] //筛选list 后的个数 pr...

syslog

函数:syslog() 功能:记录至系统记录。 头文件:#include <syslog.h> 语法: int syslog(int priority, string message); 返回值: 整数 函数种类: 操作系统与环境 内容说明 : 本函数将 message 字符串写到系统纪录中,参数 priority 的值可能为 LOG_EMER...

shell中各种括号的作用详解()、(())、[]、[[]]、{}

一、小括号,圆括号() 1、单小括号 ()   ①命令组。括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格。   ②命令替换。等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到...