🎉 Init.

Signed-off-by: 秋雨落 <i@rain.cx>
This commit is contained in:
秋雨落
2023-09-11 15:17:47 +08:00
parent 1ae1100271
commit 32e444d7e8
5 changed files with 131 additions and 2 deletions
+20 -1
View File
@@ -8,7 +8,26 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Spectre.Console" Version="0.47.0" /> <PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0-preview.7.23375.6" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="8.0.0-preview.7.23375.6" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0-preview.7.23375.6" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0-preview.7.23375.6" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0-preview.7.23375.6" />
<PackageReference Include="NLog" Version="5.2.4" />
<PackageReference Include="NLog.Extensions.Hosting" Version="5.3.4" />
<PackageReference Include="Spectre.Console" Version="0.47.1-preview.0.12" />
<PackageReference Include="Telegram.Bot" Version="19.0.0" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<None Update="config.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="NLog.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project> </Project>
+48
View File
@@ -0,0 +1,48 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using NLog;
namespace CrystalConnector;
public class CrystalService : IHostedService
{
private ILogger<CrystalService> Logger { get; }
private IConfiguration Config { get; }
public CrystalService(ILogger<CrystalService> logger, IConfiguration config, IHostApplicationLifetime appLifetime)
{
Logger = logger;
Config = config;
appLifetime.ApplicationStarted.Register(OnStarted);
appLifetime.ApplicationStopping.Register(OnStopping);
appLifetime.ApplicationStopped.Register(OnStopped);
}
private void OnStarted()
{
Logger.LogInformation("Starting!");
}
private void OnStopping()
{
Logger.LogInformation("Stopping!");
}
private void OnStopped()
{
}
public Task StartAsync(CancellationToken cancellationToken)
{
return Task.CompletedTask;
}
public Task StopAsync(CancellationToken cancellationToken)
{
LogManager.Shutdown();
return Task.CompletedTask;
}
}
+34
View File
@@ -0,0 +1,34 @@
<nlog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
throwConfigExceptions="true">
<variable name="logLayout" value="[${longdate}][${logger}][${level}]${message:withexception=true}"/>
<targets async="true">
<target name="file"
xsi:type="File"
fileName="${basedir}/logs/${shortdate}.txt"
keepFileOpen="false"
archiveEvery="Day"
archiveNumbering="Rolling"
maxArchiveFiles="10"
enableArchiveFileCompression="true"
archiveFileName="${basedir}/logs/${shortdate}-{###}.zip"
layout="${logLayout}"/>
<target name="debugFile"
xsi:type="File"
deleteOldFileOnStartup="true"
fileName="${basedir}/logs/debug.txt"
keepFileOpen="false"
layout="${logLayout}"/>
<target name="console" xsi:type="ColoredConsole" encoding="utf-8" layout="${logLayout}">
<highlight-row foregroundColor="DarkRed" condition="level == LogLevel.Fatal"/>
<highlight-row foregroundColor="Red" condition="level == LogLevel.Error"/>
<highlight-row foregroundColor="Yellow" condition="level == LogLevel.Warn"/>
<highlight-row foregroundColor="White" condition="level == LogLevel.Info"/>
<highlight-row foregroundColor="Cyan" condition="level == LogLevel.Debug"/>
</target>
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="file, console"/>
<logger name="*" minlevel="Debug" writeTo="debugFile"/>
</rules>
</nlog>
+27 -1
View File
@@ -1 +1,27 @@
Console.WriteLine("Hello, world!"); using CrystalConnector;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using NLog.Extensions.Logging;
using LogLevel = Microsoft.Extensions.Logging.LogLevel;
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddHostedService<CrystalService>();
// builder.Services.AddSingleton<Bot>();
builder.Environment.ContentRootPath = Directory.GetCurrentDirectory();
builder.Configuration.AddJsonFile("config.json", true)
.AddJsonFile($"config.{builder.Environment.EnvironmentName}.json")
.AddEnvironmentVariables(prefix: "CRYSTAL_")
.AddCommandLine(args);
builder.Logging.ClearProviders()
.SetMinimumLevel(LogLevel.Trace)
.AddNLog();
using var host = builder.Build();
await host.RunAsync();
+2
View File
@@ -0,0 +1,2 @@
{
}