تكوين log4net لعدم استخدام SMTP Appender إذا كان تشغيل جهاز معين

StackOverflow https://stackoverflow.com/questions/620248

  •  03-07-2019
  •  | 
  •  

سؤال

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

حاولت استخدام اسم الحاسوب المتغير للبيئة في PropertyFilter ، لكن هذا لم ينجح:

<filter type="log4net.Filter.PropertyFilter">
  <Key value="COMPUTERNAME" />
  <StringToMatch value="myComputerName" />
  <Accept value="false" />
</filter>

لقد استخدمت اسم Computername في مداول ملف مثل هذا:

<file value="${HOMEDRIVE}\\loggingDirectory\\AppLogFile.${COMPUTERNAME}.log" />

هذا أيضًا لم ينجح (ولم أتوقع ذلك):

<filter type="log4net.Filter.PropertyFilter">
  <Key value="${COMPUTERNAME}" />
  <StringToMatch value="myComputerName" />
  <Accept value="false" />
</filter>

هل هناك طريقة لاستخدام متغيرات البيئة في مرشح خاصية؟ اقتراحات أخرى مرحب بها.

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

المحلول

أنت تستخدم قيمة المفتاح الخاطئة. يتم ملء مجموعة loggingevent.properties باستخدام خاصية اسم المضيف ، والتي تحتوي على توقيع "log4net: hostname".

يجب أن يبدو المرشح الخاص بك هكذا:

<filter type="log4net.Filter.PropertyFilter">
    <Key value="log4net:HostName" />
    <StringToMatch value="computerToExclude" />
    <AcceptOnMatch value="false" />
</filter>

لاحظ أيضًا استخدام AceptOnMatch ، لا تقبل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top