NLog C# (開発者向けの仕組み)
ログはソフトウェア開発の重要な側面です。 これにより、開発者はアプリケーションの動作を追跡し、問題をトラブルシューティングし、さまざまな環境でコードがどのように動作しているかについての洞察を得ることができます。 NLogは、C#用の人気のあるロギングフレームワークであり、アプリケーションに堅牢で柔軟なロギングを実装するのを容易にします。 この包括的なガイドとチュートリアルでは、C# 内の NLog の世界を探ります。
NLogとは?
NLog は、.NET および .NET Core アプリケーション用の無料のオープンソースロギングライブラリです。 アプリケーション内でメッセージを記録するための柔軟で高い設定可能な方法を提供します。 NLog は、そのパフォーマンス、拡張性、および使いやすさのため、.NET エコシステムで広く使用されている無料のロギングプラットフォームです。
NLog の使い始め方法
NLog は ASP.NET Web アプリケーション、ASP.NET Web API、Windows フォーム アプリケーション、ASP.NET MVC アプリケーション、または必要に応じて任意の種類で使用できます。 すべてのユースケースを示すためにコンソール アプリケーションを使用します。
NLog Nuget パッケージをインストールする
NLog を始めるには、プロジェクトに NLog NuGet パッケージをインストールする必要があります。 この操作は、以下の手順に従って Visual Studio の NuGet パッケージ マネージャーを介して行うことができます。
- "ツール"メニューで"NuGet パッケージ マネージャー"を選択し、"ソリューションの NuGet パッケージを管理"を選択します。
- または、ソリューション エクスプローラーでプロジェクトを右クリックし、"NuGet パッケージの管理"を選択して"参照"を選択します。
- NuGet パッケージ マネージャー ウィンドウで"参照"タブをクリックし、検索ボックスに"NLog"と入力します。 検索結果に NLog パッケージが表示されます。 クリックして選択します。
- NuGet パッケージ マネージャー ウィンドウの右側には、ソリューション内のプロジェクトのリストが表示されます。 NLog をインストールしたいプロジェクトを選択します。
- バージョンドロップダウンから希望するNLogパッケージのバージョンを選択します。 必要に応じて、最新の安定バージョンまたは特定のバージョンを選択できます。
- プロジェクトとバージョンを選択した後、"インストール"ボタンをクリックしてインストール プロセスを開始します。
NuGet パッケージ マネージャーは、NLog と必要な依存関係をダウンロードしてインストールします。 進行状況は出力ウィンドウに表示されます。
NLog はプロジェクトに正常にインストールされており、C# コード内でログ記録に使用できます。
NLog設定ファイルを作成する
NLog 設定ファイル(通常は nlog.config という名前)を作成するには、以下の手順に従います。 この設定ファイルでは、NLog がアプリケーション内でどのように動作するかを指定します。これには、ログ ターゲット、レイアウト レンダラー、ルールが含まれます。
プロジェクトで、設定ファイルを作成したいプロジェクトまたはフォルダーを右クリックします。
- "追加">"新しい項目..."を選択
- "新しい項目を追加"ダイアログで"XML ファイル"または"XML"を検索して選択します。
ファイル名を nlog.config にして"追加"ボタンをクリックします。

- 新しく作成された nlog.config ファイルをテキスト エディターまたは XML エディターで開きます。
- NLog.XML ファイルに以下の設定を追加します。以下に、コンソール ターゲットにメッセージを記録するための NLog 設定の基本的な例を示します。 この設定ファイルをカスタマイズして、ニーズに合わせることができます。
設定ファイル
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- Define targets -->
<targets>
<!-- Log to a console -->
<target name="console" xsi:type="Console" layout="${longdate}|${message}"/>
</targets>
<!-- Define rules -->
<rules>
<!-- All messages with a minimum log level of Debug or higher are written to the Console -->
<logger name="*" minlevel="Debug" writeTo="console" />
</rules>
</nlog><?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- Define targets -->
<targets>
<!-- Log to a console -->
<target name="console" xsi:type="Console" layout="${longdate}|${message}"/>
</targets>
<!-- Define rules -->
<rules>
<!-- All messages with a minimum log level of Debug or higher are written to the Console -->
<logger name="*" minlevel="Debug" writeTo="console" />
</rules>
</nlog>C# コードで、nlog.config ファイルから NLog 設定を読み込むようにしてください。通常、これはアプリケーションのスタートアップ コードで行います。例えば、ASP.NET Core の Startup.cs(.NET 5 と同じかそれより前のバージョン用)または .NET 6 以降のバージョン用の program.cs ファイル、またはコンソール アプリケーションの Main メソッドです。
using NLog;
internal class Program
{
// Create an instance of the Logger
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
// Log a debug message
logger.Debug("This is a Debug Message");
// Pause the console for viewing output
Console.Read();
}
}using NLog;
internal class Program
{
// Create an instance of the Logger
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
// Log a debug message
logger.Debug("This is a Debug Message");
// Pause the console for viewing output
Console.Read();
}
}Imports NLog
Friend Class Program
' Create an instance of the Logger
Private Shared logger As Logger = LogManager.GetCurrentClassLogger()
Shared Sub Main(ByVal args() As String)
' Log a debug message
logger.Debug("This is a Debug Message")
' Pause the console for viewing output
Console.Read()
End Sub
End Class上記のプログラムの出力は以下の通りです。

この例では、Logger クラスのインスタンスを作成し、デバッグレベルでメッセージを記録するために使用します。 NLog がサポートするトレース レベルを探ります。
ログレベル
NLog は、独自の重要性を持ついくつかのログレベルをサポートしています。
- トレース: 最も詳細なレベルであり、通常は診断目的で使用されます。
- デバッグ: 開発中に役立つデバッグ情報として使用されます。
- 情報: アプリケーションの操作に関する一般的な情報。
- 警告: アプリケーションを中断しない潜在的な問題を示します。
- エラー: 調査が必要な障害を示しますが、必ずしもアプリケーションがクラッシュするとは限りません。
- 致命的: すぐに対処すべき重大な障害を示します。
ログメッセージをこれらのレベルに分類することで、深刻度に基づいて簡単にフィルタリングし、優先順位を付けることができます。
以下に示すようにルールタグに minlevel="Trace" を設定します。
<rules>
<!-- All messages with a minimum log level of Trace or higher are written to the Console -->
<logger name="*" minlevel="Trace" writeTo="console" />
</rules><rules>
<!-- All messages with a minimum log level of Trace or higher are written to the Console -->
<logger name="*" minlevel="Trace" writeTo="console" />
</rules>すべてのトレースレベルのメッセージをログに記録するコードを書いてみましょう。
using NLog;
internal class Program
{
// Create an instance of the Logger
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
// Log messages of different tracking levels
logger.Trace("This is a Trace Message");
logger.Debug("This is a Debug Message");
logger.Info("This is an Info Message");
logger.Warn("This is a Warning Message");
logger.Error("This is an Error Message");
logger.Fatal("This is a Fatal Message");
// Pause the console for viewing output
Console.Read();
}
}using NLog;
internal class Program
{
// Create an instance of the Logger
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
// Log messages of different tracking levels
logger.Trace("This is a Trace Message");
logger.Debug("This is a Debug Message");
logger.Info("This is an Info Message");
logger.Warn("This is a Warning Message");
logger.Error("This is an Error Message");
logger.Fatal("This is a Fatal Message");
// Pause the console for viewing output
Console.Read();
}
}Imports NLog
Friend Class Program
' Create an instance of the Logger
Private Shared logger As Logger = LogManager.GetCurrentClassLogger()
Shared Sub Main(ByVal args() As String)
' Log messages of different tracking levels
logger.Trace("This is a Trace Message")
logger.Debug("This is a Debug Message")
logger.Info("This is an Info Message")
logger.Warn("This is a Warning Message")
logger.Error("This is an Error Message")
logger.Fatal("This is a Fatal Message")
' Pause the console for viewing output
Console.Read()
End Sub
End Classプログラムは以下に示すようにコンソールにメッセージを記録しました。

今度は、コンソールでのメッセージのログ記録の例を示しました。 次に、ファイルにメッセージを記録するために NLog ターゲットを構成します。
ファイルへのログメッセージ
ファイルログのために、設定ファイルにコンソール ターゲットの代わりにファイル ターゲットを設定する必要があります。
<targets>
<!-- Log to a file at specified location -->
<target xsi:type="File" name="fileTarget" fileName="D:\Logs\mylog.txt" layout="${longdate} ${level:uppercase=true} ${message}" />
</targets>
<rules>
<!-- All messages with a minimum log level of Trace or higher are written to the file -->
<logger name="*" minlevel="Trace" writeTo="fileTarget" />
</rules><targets>
<!-- Log to a file at specified location -->
<target xsi:type="File" name="fileTarget" fileName="D:\Logs\mylog.txt" layout="${longdate} ${level:uppercase=true} ${message}" />
</targets>
<rules>
<!-- All messages with a minimum log level of Trace or higher are written to the file -->
<logger name="*" minlevel="Trace" writeTo="fileTarget" />
</rules>次に、プログラムを実行してファイルにメッセージを記録します。

ログターゲット
NLog はさまざまなログ出力ターゲットをサポートしており、ログメッセージをどこに保管するかを選択できます。 一般的なターゲットには次のものがあります。
- ファイル: 1つまたは複数のファイルにメッセージを記録します。
- コンソール: コンソールにメッセージを記録します。
- データベース: データベース (SQL Server、MySQL、Oracle、PostgreSQL など) のテーブルにメッセージを記録します。
- メール: メールとしてログメッセージを送信します。
- イベントログ: Windows イベントログにメッセージを記録します。
- カスタムターゲット: 特定のニーズに合わせてカスタムログターゲットを作成できます。
NLog は、1 つ以上のターゲットを同時に使用するように設定できます。
IronPDFの紹介
IronPDF をさらに探索すること は、C# および VB.NET アプリケーションにおける PDF 処理を簡素化する強力な .NET ライブラリです。 PDF ドキュメントの作成、編集、操作、および HTML コンテンツを PDF フォーマットに変換するための強力な機能を提供します。これにより、Web 開発、レポート作成、およびドキュメント管理など、さまざまな業界の開発者にとって必要不可欠なツールとなります。
IronPDF の際立った機能は、レイアウトとスタイルを保持する HTML から PDF への変換 機能です。 ウェブコンテンツからPDFを生成し、レポート、請求書、文書に最適です。 HTMLファイル、URL、およびHTML文字列を簡単にPDFに変換できます。
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End Classログを使用して PDF を生成しましょう。
ログ付き PDF の生成
最初のステップは、IronPDF ライブラリをプロジェクトにインストールすることです。 この操作は、Visual Studio の NuGet パッケージ マネージャーまたは NuGet CLI を使用して行うことができます。 プロジェクトを開き、パッケージ マネージャー コンソールで次のコマンドを入力します。
Install-Package IronPdf
このコマンドは、プロジェクトに必要なすべての依存関係を含む IronPDF をインストールします。
ログを使用した HTML から PDF ファイルを生成するための次のコードを書きます。
using NLog;
using IronPdf;
internal class Program
{
// Create an instance of the Logger
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
logger.Info("Initializing Chrome PDF Renderer");
ChromePdfRenderer renderer = new ChromePdfRenderer();
logger.Info("Creating PDF From HTML String");
var pdf = renderer.RenderHtmlAsPdf("<h1>This is my Sample PDF<h1>");
logger.Info("Saving PDF File");
pdf.SaveAs(@"D:\myPDF.pdf");
}
}using NLog;
using IronPdf;
internal class Program
{
// Create an instance of the Logger
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
logger.Info("Initializing Chrome PDF Renderer");
ChromePdfRenderer renderer = new ChromePdfRenderer();
logger.Info("Creating PDF From HTML String");
var pdf = renderer.RenderHtmlAsPdf("<h1>This is my Sample PDF<h1>");
logger.Info("Saving PDF File");
pdf.SaveAs(@"D:\myPDF.pdf");
}
}Imports NLog
Imports IronPdf
Friend Class Program
' Create an instance of the Logger
Private Shared logger As Logger = LogManager.GetCurrentClassLogger()
Shared Sub Main(ByVal args() As String)
logger.Info("Initializing Chrome PDF Renderer")
Dim renderer As New ChromePdfRenderer()
logger.Info("Creating PDF From HTML String")
Dim pdf = renderer.RenderHtmlAsPdf("<h1>This is my Sample PDF<h1>")
logger.Info("Saving PDF File")
pdf.SaveAs("D:\myPDF.pdf")
End Sub
End Class上記のコードスニペットにより、以下に示すように、ファイル内にログメッセージを含む PDF ファイルが作成されます。
ログと PDF ファイル

結論
結論として、NLog は C# アプリケーションにおける効果的なログ記録のための重要なツールとして浮上しており、開発者にログデータをキャプチャ、分類、および管理するための強力なフレームワークを提供します。 その柔軟性と使いやすさにより、さまざまなドメインでのログ記録のニーズに対応するための選択肢とされています。 さらに、IronPDF のような、.NET アプリケーションでの PDF 生成と操作を簡素化する補完ライブラリと組み合わせることで、開発者は PDF ベースのログとレポートの作成を含む管理機能を拡張できます。 IronPDF はその機能をテストするためのIronPDFの無料試用版を提供していることは注目に値します。 要件に合致する場合は、IronPDF の商用ライセンスを選択して、プロジェクトへのシームレスな統合のための追加の利益とサポートを得ながら、IronPDF の能力の継続的なアクセスを提供します。
NLog と IronPDF の力を組み合わせることにより、開発者はアプリケーションの動作についての洞察を得るだけでなく、レポート作成とドキュメント管理のプロセスを強化し、ソフトウェアが効率的で、保守可能で、構造化されたログ記録を通じて十分に文書化されたものになります。
よくある質問
NLogはどのようにC#アプリケーションのロギングを強化しますか?
NLogはC#アプリケーション向けに強力で柔軟なロギングフレームワークを提供します。開発者がロギングターゲットとルールを設定ファイルで定義することで、Trace、Debug、Info、Warn、Error、Fatalなど様々なロギングレベルで簡単にロギングを実装できます。
NLogを.NETアプリケーションで設定するプロセスは何ですか?
.NETアプリケーションでNLogを設定するには、NLogのNuGetパッケージをインストールし、nlog.configファイルでロギングターゲットとルールを構成する必要があります。このセットアップにより、ログをファイル、コンソール、データベース、またはメールなどに向けることができます。
NLogを使用してデータベースにメッセージをログに記録するにはどうすればよいですか?
NLogを使用してデータベースにメッセージをログに記録するには、nlog.configファイルにデータベースターゲットを設定する必要があります。接続文字列とログエントリ用の必要なテーブルまたはストアドプロシージャの詳細を指定します。
NLogはログメッセージをメールで送信できますか?
はい、NLogはnlog.configファイルでメールターゲットを構成することにより、電子メールでログメッセージを送信できます。SMTPサーバーの詳細、受信者のメールアドレス、その他のメール設定を提供する必要があります。
.NETでのPDF生成のためにIronPDFを使用する利点は何ですか?
IronPDFは、PDFの生成、編集、および変換を簡素化する強力な.NETライブラリです。HTMLからPDFへの変換をサポートしており、開発者がHTML文字列、ファイル、またはURLからPDFを生成することで、レポートおよびドキュメント管理プロセスを強化します。
C#アプリケーションでPDF生成とロギングを統合するにはどうすればよいですか?
C#アプリケーションでNLogとIronPDFを統合することで、NLogを使用してアプリケーションイベントを記録し、IronPDFでPDFを生成できます。この組み合わせにより、ログ情報を含む詳細なPDFレポートを作成できます。
NLog構成に関する一般的なトラブルシューティング手順は何ですか?
NLog構成の問題に対する一般的なトラブルシューティング手順には、nlog.configファイルの構文エラーの確認、ログターゲットの正しいファイルパスと権限の確認、ロギングに影響を与える可能性があるアプリケーションでの例外の確認が含まれます。
IronPDFの機能を購入前にテストするにはどうすればいいですか?
IronPDFは無料トライアルを提供しており、開発者がその機能をテストすることができます。このトライアル期間は、PDF生成、編集、および変換のためのIronPDFの機能を商用ライセンスを選択する前に評価する機会を提供します。








