سؤال

أهداف NLOG الخاصة بي هي مثل هذا:

<targets>
  <target xsi:type="Console" name="console" 
    layout="${longdate}|${level}|${message}" />
  <target xsi:type="File" name="ErrorLog" fileName="${basedir}/error.txt"
          layout="${longdate}
          Trace: ${stacktrace} 
          ${message}" />
  <target xsi:type="File" name="AccessLog" fileName="${basedir}/access.txt"
          layout="${shortdate} | ${message}" />
</targets>

ولكن هذا يسبب مشاكل إذا كان المستخدم ليس مسؤول على جهازهم، لأنهم لن يكون لديهم حق الوصول إلى الكتابة إلى "ملفات البرنامج". كيف يمكنني الحصول على شيء مثل %AppData% إلى nlog بدلا من التكرار؟

هل كانت مفيدة؟

المحلول

أنت تبحث عن مجلدات خاصة NLOG..

مثال:

...fileName="${specialfolder:folder=ApplicationData}/Program/file.txt"...

نصائح أخرى

يجب أن تكون إجابة أورين الإجابة الصحيحة. ومع ذلك، بالنسبة لحياتي لم أستطع الحصول عليها للعمل مع موقع الويب الخاص بي .NET 4.0 باستخدام NLOG 2.0.0.0. انتهى بي الأمر باستخدام ببساطة

fileName="${basedir}app_data\logs\${shortdate}.log" 

$ {specialfolder: applicationdata} يعمل أيضا

ساعدت الإجابات السابقة في حل المشكلة التي أواجهها، ولكن بعد سنوات بضع سنوات فقط والحل الآن مختلف إلى حد ما تحت V4.3. يتم دمج الدليل واسم الملف مع المسار.

@ رابط thegecko لا يزال حاليا بالنسبة لبناء الجملة، ولكن الصفحة هي ناقصة من مثال:

https://github.com/nlog/nlog/wiki/special-folder-layout-renderer.

المثال التالي سوف يكتب الملف myLog.log إلى دليل مستخدم المستخدمين الحاليين C:\USers\current.user\AppData\Roaming\My\Path\Somewhere:

fileName="${specialfolder:dir=My/Path/Somewhere/:file=myFile.log:folder=ApplicationData}"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top