コンソールアプリでログ出力
calendar_today
概要
前提条件:
- .NET Core 3.1
- Visual Studio 2019 で開発
ASP.NET なら初めから使える(っぽい)ログ出力の機能を、コンソールアプリで使用する方法。
Microsoft.Extensions.Logging
パッケージを使用するが、一番お手軽(と思われる)なファイルへの出力機能がない。
コンソール出力やイベントログへの出力はできる。
参考:.NET Core および ASP.NET Core でのログ記録 | Microsoft Docs
NuGet パッケージの追加
下記パッケージをプロジェクトに追加する。
Microsoft.Extensions.Logging
これと併せて、使用したいプロバイダー(出力先)ごとにパッケージを追加する。
Microsoft.Extensions.Logging.Console
- コンソールMicrosoft.Extensions.Logging.EventLog
- イベントログMicrosoft.Extensions.Logging.ApplicationInsights
- Azure の AppInsights- など
コンソールへログ出力
下記2つのパッケージをプロジェクトへ追加する。
Microsoft.Extensions.Logging
Microsoft.Extensions.Logging.Console
下記がロガーの準備とログ出力のサンプル。
using Microsoft.Extensions.Logging;
namespace ConsoleApp1
{
class Program
{
public static void Main(string[] args = null)
{
using var loggerFactory = LoggerFactory.Create(builder =>
{
builder
.AddFilter("Microsoft", LogLevel.Warning)
.AddFilter("System", LogLevel.Warning)
.AddFilter("ConsoleApp1.Program", LogLevel.Debug)
.AddConsole();
});
ILogger logger = loggerFactory.CreateLogger<Program>();
logger.LogInformation("Example log message");
}
}
}
このサンプルを実行すると、下記のログがコンソール上に出力される。
info: ConsoleApp1.Program[0]
Example log message
イベントログへ出力
下記2つのパッケージをプロジェクトへ追加する。
Microsoft.Extensions.Logging
Microsoft.Extensions.Logging.EventLog
下記がロガーの準備とログ出力のサンプル。
using Microsoft.Extensions.Logging;
namespace ConsoleApp1
{
class Program
{
public static void Main(string[] args = null)
{
using var loggerFactory = LoggerFactory.Create(builder =>
{
builder
.AddFilter("Microsoft", LogLevel.Warning)
.AddFilter("System", LogLevel.Warning)
.AddFilter("ConsoleApp1.Program", LogLevel.Debug)
.AddEventLog();
});
ILogger logger = loggerFactory.CreateLogger<Program>();
logger.LogInformation("Example log message");
}
}
}
イベントビューアの「Windows ログ」→「Application」の中にログが記録される。
AddEventLog
メソッドの引数でログのソース名などを指定できるが、ソースは事前に登録が必要。
登録するには、PowerShell のコマンドを実行するのが一番手っ取り早い方法と思われる。