我創建了一個消費者/作業,我將在Linux上用C#編寫一個進程。接線並將NLog注入到.Net Core控制檯應用程序
過程將:
- 從RabbitMQ的上n日誌有關.NET核心閱讀郵件
- 進行更改數據庫
- 記錄任何錯誤
所有的文件都在aspnet核心。當我嘗試獲得實現時,它將返回null。
下面是一個除佈線和使用的:
static void ConfigureServices()
{
string environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
var builder = new ConfigurationBuilder()
.SetBasePath(Path.Combine(AppContext.BaseDirectory))
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{environment}.json", optional: true);
var services = new ServiceCollection();
Configuration = builder.Build();
[...]
services.AddLogging();
ServiceProvider = services.BuildServiceProvider();
var loggerFactory = ServiceProvider.GetService<ILoggerFactory>();
loggerFactory.AddNLog();
}
static void Main(string[] args)
{
ConfigureServices();
var logger = ServiceProvider.GetService<NLog.ILogger>();
logger.Debug("Logging");
[...]
}
不要與環境變量ASPNETCORE_ENVIRONMENT
混淆;它僅用於確定使用哪個appsettings.json
。
我已經根據我的代碼issue report。
最後,這些是我目前安裝的軟件包。在.NET核心控制檯應用程序NLOG用法
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="1.1.2" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="1.1.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="1.1.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="1.1.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="1.1.2" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="1.1.2" />
<PackageReference Include="NLog" Version="5.0.0-beta09" />
<PackageReference Include="NLog.Extensions.Logging" Version="1.0.0-rtm-beta5" />
<PackageReference Include="Npgsql" Version="3.2.4.1" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="1.1.0" />
</ItemGroup>
解決'Microsoft.Extensions。Logging.ILogger'而不是'NLog.ILogger'。 –
@IlyaChumakov不會只是給我的MSFT記錄器和路由我所有的日誌通過MSFT日誌? –
其實,我剛剛測試過這個,'logger'仍然是空的。 –