تكوين log4net لعدم استخدام SMTP Appender إذا كان تشغيل جهاز معين
-
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 ، لا تقبل.
لا تنتمي إلى StackOverflow