http://news.mynavi.jp/articles/2010/03/19/nlog/index.html
ログの出力には log4net を使っていたのだけどこういうのもあったんだー
log4netに比べて導入がかんたん!と書いてある。
NuGet の Package Manager Consoleからインストールした
こんな感じでコマンド打った
http://nuget.org/packages/NLog
PM> Install-Package NLog
これだけでインストール完了
便利!!
VisualStudioのプロジェクトに、
NLogの設定ファイルであるところの NLog.config ファイルを追加する。
設定ファイル(NLog.config )のおれおれサンプル
<?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">
<!--(1)出力先(ターゲット)の設定-->
<targets>
<!--ファイル(100KByte毎ローテーション)-->
<target name="file" xsi:type="File" fileName="${basedir}/logs/log.txt"
layout="${longdate}|${level:uppercase=true}|${logger}|${message} ${exception:format=tostring}"
archiveFileName="${basedir}/logs/${date:format=yyyyMMdd}/log.{###}.txt"
archiveAboveSize="102400"
archiveNumbering="Sequence"
maxArchiveFiles="100" />
</targets>
<!--(2)出力ルールの設定-->
<rules>
<!-- デバッグレベル以上のログをfileターゲットに出力-->
<logger name="*" minlevel="Debug" writeTo="file" />
</rules>
</nlog>
出力のレイアウトは、デフォルトのレイアウトに例外の文字列を足しただけ。
プログラムから出力してみる
using NLog;
public class LoggingTest
{
// ロガーの生成
private static Logger logger = LogManager.GetCurrentClassLogger();
public static void Test()
{
logger.Info("Infoメッセージ");
logger.Warn("Warnメッセージ");
logger.Error("Errorメッセージ");
// 他にもいろいろある(適当)
try
{
ExceptionTest();
}
catch (Exception ex)
{
logger.ErrorException("予期せぬエラーが発生しました", ex);
// InfoException とか WarnException もあるみたい(適当)
}
}
public static void ExceptionTest()
{
try
{
throw new Exception("これは内部例外だよ");
}
catch (Exception ex)
{
throw new Exception("なんかエラー発生!", ex);
}
}
}
例外の詳細をロギングするには ErrorException を使う必要があるようだ。
ログファイルにはこんな感じで書き込まれた。
2012-09-25 18:04:07.9166|INFO|TestApplication1.LoggingTest|Infoメッセージ
2012-09-25 18:04:07.9296|WARN|TestApplication1.LoggingTest|Warnメッセージ
2012-09-25 18:04:07.9296|ERROR|TestApplication1.LoggingTest|Errorメッセージ
2012-09-25 18:04:07.9296|ERROR|TestApplication1.LoggingTest|予期せぬエラーが発生しました System.Exception: なんかエラー発生! ---> System.Exception: これは内部例外だよ
場所 TestApplication1.LoggingTest.ExceptionTest() 場所 C:\VisualStudioProjects\TestApplication1\TestApplication1\Logging.cs:行 37
--- 内部例外スタック トレースの終わり ---
場所 TestApplication1.LoggingTest.ExceptionTest() 場所 C:\VisualStudioProjects\TestApplication1\TestApplication1\Logging.cs:行 41
場所 TestApplication1.LoggingTest.Test() 場所 C:\VisualStudioProjects\TestApplication1\TestApplication1\Logging.cs:行 24
ところで NuGet ってなんて読むの?ニューゲット?エヌユーゲット?ヌゲット?
0 件のコメント:
コメントを投稿