NLogでEventLogを出力する最短方法
達成事項
- C#のコンソールアプリやWindowsFormsなどでNLogを使ってEventLogを出力する
前提条件
- .Net Framework 4.6.1
- powershellがインストールされていること
まとめ
- NLogをインストールする
- paworshellのコマンドファイルを作成する
- batファイルを作成する
- batファイルを管理者で実行する
- App.ConfigにNLog用のターゲットを設定する
- コードを書く
1. NLogをインストールする
プロジェクトを右クリックして「Nugetパッケージの管理」をクリックする
参照タグからNLogを検索してインストールする
2. paworshellのコマンドファイルを作成する
下記の内容とファイル名でコマンドファイルを新規作成する ファイル名「CreateEventLogSource.ps1」
New-EventLog -LogName Application -Source "NLogTest"
ここに同じファイルを用意した。
3. batファイルを作成する
下記の内容とファイル名でコマンドファイルを新規作成する ファイル名「CreateEventLogSource.bat」
powershell -NoProfile -ExecutionPolicy Unrestricted C:\CreateEventLogSource.ps1
ここに同じファイルを用意した。
失敗しない為のポイント
- 「C:\CreateEventLogSource.ps1」の部分は絶対パスで指定すること
4. batファイルを管理者で実行する
- 作成したCreateEventLogSource.batを右クリックしたメニューの「管理者として実行」をクリックする
5. App.ConfigにNLog用のターゲットを設定する
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/> </configSections> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> </startup> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true" throwExceptions="false"> <targets> <target name="eventlog" xsi:type="EventLog" source="NLogTest" /> </targets> <rules> <logger name="*" minlevel="Debug" maxlevel="Fatal" writeTo="eventlog" /> </rules> </nlog> </configuration>
失敗しない為のポイント
- 「configSections」は先頭に挿入する
- targetsのsourceは2. paworshellのコマンドファイルを作成するで指定したSourceと同じにする
6. コードを書く
ここからソースをダウンロードできる。
using NLog; using System; namespace NlogEventLogSample { internal static class Program { private static Logger Logger = LogManager.GetCurrentClassLogger(); private static void Main(string[] args) { try { Logger.Info("Hello World"); } catch (Exception ex) { Logger.Error(ex); } } } }
結果
- イベントビュワーに正しく表示された
以上