NLog6系は人類(日本人)には早すぎたのかもしれない
Nlog6系を使ってまして…
こんな感じで…(NLog6系では動きませんよ)
<target
xsi:type="File"
name="LogFile"
fileName="./Logs/Control.log"
encoding="UTF-8"
lineEnding="CRLF"
archiveFileName="./Logs/Control_{###}.zip"
archiveEvery="Day"
archiveNumbering="DateAndSequence"
archiveDateFormat="yyyyMMdd"
archiveAboveSize="1048576"
maxArchiveFiles="10"
enableArchiveFileCompression="true"
layout="${longdate} [${threadid:padding=8}] [${uppercase:${level:padding=-5}}] ${message} ${exception:format=Message, Type, ToString:separator=\r\n}" />
まぁ動かない動かない…
ZIPファイルが出来たと思うやん?
ただのテキストファイルの拡張子変更しただけだってよ!
でだ、「NLog.Targets.GZipFile」をNuGetで入れればいい!って書いてあるやん?
元はここ: NlogのWiki
それ入れたら今度は「archiveAboveSize」が使えねーらしいんですわ…
(Nlog 6系 からenableArchiveFileCompressionは使えないので削除してね)
で、公式サイトを見ると驚いた…
引用:(上記Wiki内を enableArchiveFileCompression で調べてね)
enableArchiveFileCompression - Indicates whether to compress the archive files into the zip files. Boolean Default: False
Introduced in NLog ver. 4.0. Not supported for .Net35 + .Net40 and only works with static filename Before NLog ver. 5.0 then the filename inside the zip-file would be original filename, instead of archive-filename. NLog v6 removed enableArchiveFileCompression-option. Instead use NTFS-compression or setup cron-job / scheduled-task for nightly compression or GZip-File-Target or legacy NLog.Targets.ConcurrentFile
・NTFS圧縮を使用するか
・夜間圧縮用のcronジョブ/スケジュールタスクを設定するか
・GZip-File-Target を使うか
・NLog.Targets.ConcurrentFile を使うか
の4択だそうで…
回答:
・NTFS圧縮何てサーバで設定したくねぇ…(使ってるサーバあるんかね?)
・GZip形式は上記の通り、やりたい圧縮ができない…
・NLog.Targets.ConcurrentFile は以前の形式というが、圧縮できなかったよ?(知識無いだけ?)てか6.0.3で止まってるようなもの使いたくないわなぁ…
って事で「夜間圧縮用バッチ作ってタスクスケジュール登録しろ」っていうのが公式回答らしい…
というわけで、5系の最新版(5.5.1)に戻しましたとさっ!
確かに公式が言っている通り、ZIP圧縮は重くて時間かかるから大量ログ出力というのには向かないさ。ログ出力という機能上本体に負荷かけるのはありえんと思うよ?
その通りさ…でもさっ!
欲しい機能削除せんでもええやん…orz
という話でした…
Nlog6系の進化に期待っ!
とか言いながら、Gzipのオプションに「Optimal - Optimize for small file size」があるのはなんでやねん…
GZipってそんなに処理が軽いん?
Linux使わんから良く分からん
ちなみに、厳密にNLogを書きたい場合、ヘッダの下記設定を変えると良いよ
throwExceptions="true" → Nlog.configに不備があると例外吐くので分かりやすい
internalLogLevel="Debug" → internalLogFileで指定された箇所にログファイルを出力
ちゃんちゃん
コメント
コメントを投稿