NLogを使ってみる
ファイルとコンソールに出力
コンソールアプリケーションでログ出力
ログレベルごとにログメッセージを書き込みます。
using NLog; using System; namespace NLogConsole { class Program { private static Logger logger = LogManager.GetCurrentClassLogger(); static void Main(string[] args) { logger.Trace("Sample trace message"); logger.Debug("Sample debug message"); logger.Info("Sample informational message"); logger.Warn("Sample warning message"); logger.Error("Sample error message"); logger.Fatal("Sample fatal error message"); Console.ReadKey(true); } } }
コンフィグ
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" xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd" autoReload="true" throwExceptions="false" internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log"> <targets> <target xsi:type="File" name="logfile" fileName="file.txt" layout="${date:format=yyyyMMddHHmmss} ${message}" /> <target xsi:type="ColoredConsole" name="console" layout="${longdate} ${uppercase:${level}} ${message}" /> </targets> <rules> <logger name="*" minlevel="Info" writeTo="logfile" /> <logger name="*" minlevel="Trace" writeTo="console" /> </rules> </nlog>
実行結果
ファイルは直下にInfoログ以上が出力されました。
layout="${date:format=yyyyMMddHHmmss} ${message}"
と指定したフォーマットで日付も出力されてます。
ColoredConsoleを指定したので、コンソールには色付きでTraceログ以上が出力されました。出力内容もコンソール用の内容layout="${longdate} ${uppercase:${level}} ${message}"
になってますね。
Gmailに出力
Gmailにも遅れるようなのでやってみます。
NLog.config
targetsにGmail用の設定を追記します。メールアドレスは適宜読み替えで。パスワードはGmailの二段階認証でアプリパスワードを発行しました。
このとき二段階認証にしてたので別のアプリパスワードを発行。
sh-yoshida.hatenablog.com
<target xsi:type="Mail" name="gmail" smtpServer="smtp.gmail.com" smtpPort="587" smtpAuthentication="Basic" smtpUserName="user@gmail.com" smtpPassword="password" enableSsl="true" from="user@gmail.com" to="user@gmail.com" cc="user@gmail.com" />
rulesにはログレベルにFatalを指定して追記しました。
<logger name="*" minlevel="Fatal" writeTo="gmail" />
実行結果
Fatalレベルのログだけメールで飛んできました。簡単♪
今回はこれくらいで。あとは実際に使うかもってなったらもう少し詳しく踏み込んで調べてみよう。