質問
どのよう-できれば使用できまNLogとしてロールオーバーファイルのロガー?している場合:
たいてい最大31日ファイルは31日時の新しい日があった場合、古い日のログファイル##.ログでは削除すべきであるが、その日のすべてのログが追加されますが少なくとも27日です。
解決
最後に私は済まされ サイズに基づくファイルのアーカイブ.使えるフレキシビリティを名前のファイルした後、月の日、私のサイズに基づくファイルのアーカイブでこのログを始める成長を超えて数百メガバイトまでとなります。することを、例えば-20メガバイトブログは、こちらの暑さにもだいぶ慣れてきスイーツショップが数多く集まるので、軽量化ツールのようなNotepad++.
できることを期待しています。た。ここでは簡易版の私の NLog.config
ファイル:
<?xml version="1.0" encoding="utf-8" ?>
<nlog autoReload="true" throwExceptions="true"
xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<variable name="LogDir" value="${specialfolder:folder=MyDocuments}/MyApp/Log"/>
<variable name="LogDay" value="${date:format=dd}"/>
<targets>
<target name="LogTarget1" xsi:type="File" fileName="${LogDir}/${LogDay}.log" encoding="utf-8"
maxArchiveFiles="10" archiveNumbering="Sequence" archiveAboveSize="1048576" archiveFileName="${LogDir}/{#######}.a" />
</targets>
<rules>
<logger name="AppLog" writeTo="LogTarget1" />
</rules>
</nlog>
このconfigが1MBのログファイルはそれぞれの月の日でも10アーカイブ1MBログ塊に My Documents\MyApp\Log
フォルダー;のように 29.log
, 30.log
や 31.log
.
編集: であるこ NLog.config
ファイルでは毎年、建国記念の例とします。私は異なるレベルのログインからの異なるクラスを別のファイルのうんちのアーカイブのサイズに基づく、時間的なもの
<?xml version="1.0" encoding="utf-8" ?>
<nlog autoReload="true" throwExceptions="true" internalLogFile="nlog-internals.log"
xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<variable name="LogHome" value="${basedir}/Log"/>
<variable name="DailyDir" value="${LogHome}/${date:format=yyyy}/${date:format=MM}/${date:format=dd}"/>
<variable name="HourlyArchive" value="${DailyDir}/${date:format=HH}-Archive/${level}-${logger}-{#######}-archived.a"/>
<variable name="AppLogPath" value="${DailyDir}/${level}-${logger}.log"/>
<variable name="DataLogPath" value="${DailyDir}/_data/inouts-${shortdate}.log"/>
<variable name="EventSource" value="Application" />
<targets>
<target name="AppAsyncTarget" xsi:type="AsyncWrapper">
<target xsi:type="RetryingWrapper" retryDelayMilliseconds="3000" retryCount="10">
<target xsi:type="File" fileName="${AppLogPath}" encoding="utf-8"
maxArchiveFiles="50" archiveNumbering="Sequence" archiveAboveSize="1048576" archiveFileName="${HourlyArchive}"
layout="`${longdate}`${level}`${message}" />
</target>
</target>
<target name="DataAsyncTarget" xsi:type="AsyncWrapper">
<target xsi:type="RetryingWrapper" retryDelayMilliseconds="1500" retryCount="300">
<target xsi:type="File" fileName="${DataLogPath}" encoding="utf-8"
layout="`${longdate}`${message}" />
</target>
</target>
<target name="EventLogAsyncTarget" xsi:type="AsyncWrapper">
<target xsi:type="RetryingWrapper">
<target xsi:type="EventLog" source="${EventSource}" machineName="." />
</target>
</target>
</targets>
<rules>
<logger name="Data" writeTo="DataAsyncTarget" final="true" />
<logger name="Event" writeTo="EventLogAsyncTarget" final="true" />
<logger name="*" writeTo="AppAsyncTarget" />
</rules>
</nlog>
それぞれのクラスが欲しいログイン機能を入れています:
static readonly Logger SlotClassLogger = LogManager.GetCurrentClassLogger();
static Logger ClassLogger { get { return SlotClassLogger; } }
追加のロガーは山積みのデータの一部を日常的に書きインタラクティブなプロトタイイベントログ;あるアプリを全ロガー:
public static Logger DataLog { get; private set; }
public static Logger AppEventLog { get; private set; }
さらに初期化でアプリ開始:
DataLog = LogManager.GetLogger("Data");
AppEventLog = LogManager.GetLogger("Event");
注意:にも見られることがありますアプリ口に出ます例外を作NLog.いるものはまだ初期化されていないので,できないものは廃棄!でないと近づけないという書く空の参入へのロガーでアプリの開始、という
DataLog.Info(string.Empty);
またこのサイズ制限でログファイルでも閲覧が可能(メモ帳に低サーバーは、迅速にレビューします。必修正することを踏ます。
他のヒント
ますことを示唆して別の問題を二つの異なる側面:
- 圧延ファイルを保存し、新規ファイル名を毎日を念頭においた時間帯;UTCの日でしょうか?)
- 古いログファイルの削除
私の経験であの日のログファイル名など
debug-2010-06-08.log
その一部が容易とNLogの 例のドキュメント.
現在、第二部で容易に行えるようになった。目のスレッドまたはその疑いのあるものは全く異なるプロセスでどんなファイルが存在する最古のものが必要です。の"古い"をする場合、日付のファイル名の場合でも、だいたい信頼のファイルシステム情報です。
このNLog書類なんだかとってもおいしそうに "時のファイルのアーカイブ" 対象がいいただけたらと思ってい...もっていることを確認してください、通常の"一つのログファイル/日の"アプローチや転自分の清掃は簡単です。