كيفية جعل Nlog أرشفة الملفات مع التاريخ عندما وقع تسجيل مكان
سؤال
ونحن نستخدم Nlog كإطار تسجيل لدينا وأنا لا يمكن أن نجد طريقة لأرشفة ملفات بالطريقة التي أريدها. وأود أن يكون تاريخ عندما وقع تسجيل مكان في اسم ملف التسجيل.
السابق يجب وضع جميع قطع الأشجار التي HAPPEND من 2009-10-01 00:00 -> 2009-10-01:23:59
في Log.2009-10-01.log
. ولكن كل السجلات لهذا اليوم ينبغي أن توضع في Log.log
عن المخلفات وكذا.
وو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" >
<extensions>
<add assembly="My.Awesome.LoggingExentions"/>
</extensions>
<targets>
<target name="file1" xsi:type="File"
fileName="${basedir}/Logs/Log.log"
layout="${longdate} ${level:uppercase=true:padding=5} ${session} ${storeid} ${msisdn} - ${logger:shortName=true} - ${message} ${exception:format=tostring}"
archiveEvery="Day"
archiveFileName="${basedir}/Logs/Log${shortdate}-{#}.log"
archiveNumbering="Sequence"
maxArchiveFiles="99999"
keepFileOpen="true"
/>
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="file1" />
</rules>
</nlog>
ولكن هذا يحدد التاريخ في ملف السجل إلى التاريخ عندما يتم إنشاء ملف السجل الجديد. التي تسبب الإحباط عندما تريد قراءة السجلات في وقت لاحق.
ويبدو أيضا مثل ولدي أن يكون أتلست # احد في archiveFileName، وأنا لا بل. حتى إذا كنت حصلت على حل لذلك أيضا سأكون شاكرا مرتين كما =)
المحلول
وفقط في حالة إذا كان شخص ما زال يحتاج إلى حل - تمت إضافة ميزة طلب NLog مؤخرا: https://github.com/NLog/NLog/pull/241 ، إلا أنها لا تزال غير متوفرة عن طريق Nuget
نصائح أخرى
وربما بعد فوات الأوان لمساعدتك، ولكن أعتقد أن كل ما عليك القيام به هو تضمين التاريخ في اسم الملف باستخدام في تاريخ تخطيط العارض مع شكل . من قبل بما في ذلك التاريخ، لا تحتاج إلى تحديد ملامح الأرشيف. عندما يتغير التاريخ، سيتم إنشاء ملف جديد تلقائيا.
<?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" >
<extensions>
<add assembly="My.Awesome.LoggingExentions"/>
</extensions>
<targets>
<target name="file1" xsi:type="File"
fileName="${basedir}/Logs/${date:format=yyyy-MM-dd}.log"
layout="${longdate} ${level:uppercase=true:padding=5} ${session} ${storeid} ${msisdn} - ${logger:shortName=true} - ${message} ${exception:format=tostring}"
keepFileOpen="true"
/>
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="file1" />
</rules>
</nlog>
وربما هذا هو ما تحتاج إليه، مجلد اليومي مع ملف Log.log في ذلك
<target xsi:type="File" name="file1" fileName="${basedir}/logs/Log.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
</targets>