Microsoft Logging Extensionsパッケージを使用してNetCore 2.0でロギングを試す簡単なテストプロジェクトがあります。netcoreはコンソールにログしない
私が抱えている問題は、初めてアプリを実行するときに、情報メッセージを期待通りに記録することです。私が持っている奇妙な振る舞いは、その後の実行では全くメッセージが生成されないということです。
私のプロジェクトはネットコア2.0フレームワークを対象とし、次のNuGetパッケージがインストールされています:
- .Console
- Microsoft.Extensions.Logging.Debug 以下
は、私は私のサンプルコードですログを取得しようとしています。
using System;
namespace LoggingNetCore2
{
using Microsoft.Extensions.Logging;
class Program
{
static void Main(string[] args)
{
var loggerFactory = new LoggerFactory();
loggerFactory.AddConsole();
loggerFactory.AddDebug(); // <-- why is this needed for console logging?
var logger = loggerFactory.CreateLogger(typeof(Program));
logger.LogInformation("Hello, World!");
logger.LogTrace("trace");
logger.LogDebug("debug");
logger.LogWarning("warning");
logger.LogCritical("critical");
logger.LogError("errrrr");
//using (logger.BeginScope("MyMessages"))
//{
// logger.LogInformation("Beginning Operation...");
// logger.LogInformation("Doing something cool... please wait.");
// logger.LogInformation("Completed successfully.");
//}
}
}
}
上記を実行すると、コンソールウィンドウに出力が表示されません。何が起こっている可能性があるのか気になるアイデア?私が試した
もの:私は漠然と過去にNetCoreで1.0アプリのことを行うために必要が覚えているよう
- は、Microsoft.Extensions.Logging.Abstractionsパッケージを追加しました。
- 上記のパッケージをアンインストール/再インストールしました。
- 私は、コマンドラインからdotnet.exeコマンドを使ってアプリを実行しようとしましたが、役に立たなくなってしまいました。
- NetCoreフレームワーク1.1(およびNuGetパッケージを1.1バージョン)にダウングレードすると、正常に機能します。
編集:私はミックスにデバッグログプロバイダーを追加した場合、私は、コンソールウィンドウになりまし示すログを得ました。
NetCore 1.xアプリでは、単にコンソールプロバイダを追加するだけで十分でした。
編集#2:コンソールロギングプロバイダは、net-core-1.xバージョンと同じように、コンソールにメッセージをすぐにフラッシュしません。それは別のスレッドで実行されるように見えます。情報についてはこのWebページをご覧ください:https://github.com/aspnet/Logging/issues/631