アプリケーション開発においてログファイルを出力することはとても大切なことです。エラーが発生した場合には、おおいに役立つでしょう。ログファイルを出力していないアプリケーションは糞アプリケーションの烙印を押されるかもしれませんね。
.NET Frameworkで動作するアプリケーションを開発する場合には、うってつけのログ出力ライブラリがあります。それが「NLog」です。ここでは、ASP.NETで開発する場合の「NLog」の出力方法を記載しますので、早速マスターしちゃいましょう。
目次
ASP.NETでNLogを利用する方法(Global.asax篇)
以下のプログラムは「Global.asax」の内容です。ここで追加したのは、プログラム上記にある「using NLog;」「using NLog.Config;」「using NLog.Targets;」の3つと「private static void InitializeLogger()」メソッドとそれを呼ぶ「InitializeLogger();」です。「private static void InitializeLogger()」の内容は、コピー&ペーストでOKです。「WebApplicationLog」と記載されている箇所を各々の好きな名称に変更して利用してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Optimization; using System.Web.Routing; using System.Web.Security; using System.Web.SessionState; using NLog; using NLog.Config; using NLog.Targets; namespace WebApplication { public class Global : HttpApplication { void Application_Start(object sender, EventArgs e) { InitializeLogger(); // アプリケーションのスタートアップで実行するコードです RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } private static void InitializeLogger() { var conf = new LoggingConfiguration(); // ファイル出力定義 var file = new FileTarget("file"); file.Encoding = System.Text.Encoding.GetEncoding("shift-jis"); file.Layout = "${longdate} [${threadid:padding=2}] [${uppercase:${level:padding=-5}}] ${callsite}() - ${message}${exception:format=ToString}"; file.FileName = "${basedir}/logs/WebApplicationLog_${date:format=yyyyMMdd}.log"; file.ArchiveNumbering = ArchiveNumberingMode.Date; file.ArchiveFileName = "${basedir}/logs/WebApplicationLog.log.{#}"; file.ArchiveEvery = FileArchivePeriod.None; file.MaxArchiveFiles = 10; conf.AddTarget(file); conf.LoggingRules.Add(new LoggingRule("*", LogLevel.Debug, file)); // イベントログ出力定義 ※ただし初回は管理者として実行しないとSourceの登録ができない var eventlog = new EventLogTarget("eventlog"); eventlog.Layout = "${message}${newline}${exception:format=ToString}"; eventlog.Source = "NLogNoConfigWebApplicationLog"; eventlog.Log = "Application"; eventlog.EventId = "1001"; conf.AddTarget(eventlog); conf.LoggingRules.Add(new LoggingRule("*", LogLevel.Error, eventlog)); // 設定を反映する LogManager.Configuration = conf; } } } |
ASP.NETでNLogを利用する方法(サーバーサイドプログラム篇)
以下のプログラムはC#でコーディングしたサーバーサイドのプログラムです。ゼロ割エラーを発生させてエラーログを出力させています。プログラム上部に「using NLog;」を追加してください。あとは、「private Logger logoutput = LogManager.GetCurrentClassLogger();」を宣言して、プログラムで使えるようにすればOKです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using NLog; namespace WebApplication { public partial class home : System.Web.UI.Page { private Logger logoutput = LogManager.GetCurrentClassLogger(); // NLOG出力 protected void Page_Load(object sender, EventArgs e) { if (Page.IsPostBack) { logoutput.Info("POST"); } else { logoutput.Info("GET"); try { // ゼロ割エラー int _zero = 0; int a = 1 / _zero; } catch (Exception ex) { logoutput.Error(ex, ex.Message); } } } } } |
出力ログファイルの内容を確認
まとめ
いかがでしたでしょうか。NLogを利用すれば簡単にログファイルの出力ができることを確認いただけたかと思います。
どんどんこの便利ライブラリを活用して、一流プログラマーたるものエラーが発生した場合にはすぐに対応できるようにしておきましょうね。
最後までお読みいただきありがとうございました。