forked from shiftwinting/FastGithub
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
84 lines (80 loc) · 3.04 KB
/
Program.cs
File metadata and controls
84 lines (80 loc) · 3.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Serilog;
using Serilog.Sinks.Network;
using System;
using System.IO;
using System.Net;
namespace FastGithub
{
class Program
{
/// <summary>
/// 程序入口
/// </summary>
/// <param name="args"></param>
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
/// <summary>
/// 创建host
/// </summary>
/// <param name="args"></param>
/// <returns></returns>
public static IHostBuilder CreateHostBuilder(string[] args)
{
return Host
.CreateDefaultBuilder(args)
.UseSystemd()
.UseWindowsService()
.UseDefaultServiceProvider(c =>
{
c.ValidateOnBuild = false;
})
.ConfigureAppConfiguration(c =>
{
const string APPSETTINGS = "appsettings";
if (Directory.Exists(APPSETTINGS) == true)
{
foreach (var file in Directory.GetFiles(APPSETTINGS, "appsettings.*.json"))
{
var jsonFile = Path.Combine(APPSETTINGS, Path.GetFileName(file));
c.AddJsonFile(jsonFile, true, true);
}
}
})
.UseSerilog((hosting, logger) =>
{
var template = "{Timestamp:O} [{Level:u3}]{NewLine}{SourceContext}{NewLine}{Message:lj}{NewLine}{Exception}{NewLine}";
logger
.ReadFrom.Configuration(hosting.Configuration)
.Enrich.FromLogContext()
.WriteTo.Console(outputTemplate: template)
.WriteTo.File(Path.Combine("logs", @"log.txt"), rollingInterval: RollingInterval.Day, outputTemplate: template);
var udpLoggerPort = hosting.Configuration.GetValue(nameof(AppOptions.UdpLoggerPort), 38457);
logger.WriteTo.UDPSink(IPAddress.Loopback, udpLoggerPort);
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.UseShutdownTimeout(TimeSpan.FromSeconds(1d));
webBuilder.UseKestrel(kestrel =>
{
kestrel.NoLimit();
kestrel.ListenHttpsReverseProxy();
kestrel.ListenHttpReverseProxy();
if (OperatingSystem.IsWindows())
{
kestrel.ListenSshReverseProxy();
}
else
{
kestrel.ListenHttpProxy();
}
});
});
}
}
}