ASP.netでWebアプリを開発している中、サーバーサイドで発生するエラーを確認する手段がなかったので、「NLog」を使う事になり、インストールから設定までを調査した内容を覚え書き。
もっと色々な設定が出来るみたいなのですが、今回は最低限の設定でシンプルに使っています。
#参考サイト
https://github.com/nlog/nlog/wiki/Tutorial
http://news.mynavi.jp/articles/2010/03/19/nlog/
http://gomocool.net/gomokulog/?p=708
http://hkou.hatenablog.com/entry/2016/03/13/194043
http://dotnetcsharptips.seesaa.net/article/418697104.html
#NLogとは
.NET環境でログ出力できるオープンソースのツール。
log4netに比べて導入が簡単なことが特徴。
#使用環境
VisualStudio 2012
.NET Framework 4.5
NLog.4.4.3
#インストール
VisualStudioのNuGetで簡単インストールしました。
1. ソリューションエクスプローラーの「参照設定」を右クリック
2. 下記のメニューが表示されるので、「NuGetパッケージの管理」をクリク
3. NuGetパッケージの管理画面が表示されるので、左側の「オンライン」をクリック後、右側の「オンラインの検索」に「NLog」を入力する
4. 真ん中に「NLog」が表示されるので、インストールボタンをクリックする
5. ソリューションエクスプローラーの「参照設定」の中に「NLog」があればインストール完了
#使用前に必要な設定
1. WebConfigのconfigSectionsへsectionタグを追加する
<configuration>
<configSections>
<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
</configSections>
- 引き続き、WebConfigにnlogタグを追加する
<nlog>
<targets>
<target name ="logfile" type="File" filename="./Log/test.log" layout="[${longdate} ${level}] ${message}" />
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="logfile" />
</rules>
</nlog>
taeget:出力先情報の設定
layout:ログ出力レイアウトの設定
rules:どの出力レベルに対しどのターゲットを使うかの設定
Level | Example |
---|---|
Fatal | Highest level: important stuff down |
Error | For example application crashes / exceptions. |
Warn | Incorrect behavior but the application can continue |
Info | Normal behavior like mail sent, user updated profile etc. |
Debug | Executed queries, user authenticated, session expired |
Trace | Begin method X, end method X etc |
#使い方
下記のように記述します。
using NLog;
public class FileUploader : IHttpHandler
{
private static Logger logger = LogManager.GetCurrentClassLogger();
public void ProcessRequest(HttpContext context)
{
// net use 接続
System.Diagnostics.Process open = new System.Diagnostics.Process();
open.StartInfo.FileName = "cmd.exe"; // コマンド名
open.StartInfo.Arguments = "/c"; // 引数①
open.StartInfo.Arguments += cmd; // 引数②
open.StartInfo.CreateNoWindow = true; // DOSプロンプトの黒い画面を非表示
open.StartInfo.UseShellExecute = false; // プロセスを新しいウィンドウで起動するか否か
open.StartInfo.RedirectStandardOutput = true; // 標準出力をリダイレクトで取得したい
open.Start();
open.WaitForExit();
logger.Debug("net use 接続");