سؤال

ولقد log4net تشغيل في الموقع AsP.NET بلدي. أنا قادرة على تسجيل الرسائل إلى الجدول DB بلدي، لكنها ليست تسجيل خصائص ThreadContext. على سبيل المثال:

ThreadContext.Properties["Url"] = HttpContext.Current.Request.Url.ToString();
ThreadContext.Properties["HttpReferer"] = HttpContext.Current.Request.ServerVariables["HTTP_REFERER"];

وبلدي log4net.config يضيف تلك القيم كمعلمات في بلدي الجدول SQL DB:

<parameter>
    <parameterName value="@URL"/>
    <dbType value="String"/>
    <size value="512"/>
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%property{log4net:Url}"/>
    </layout>
</parameter>
<parameter>
    <parameterName value="@HttpReferer"/>
    <dbType value="String"/>
    <size value="512"/>
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%property{log4net:HttpReferer}"/>
    </layout>
</parameter>

وكما قلت تصحيح، وأرى أن يتم تحديد هذه الخصائص ThreadContext، لكنهم لا يحصلون في DB.

وكيف يمكنني الحصول على هذا العمل؟

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

المحلول

وهكذا، اتضح أن التكوين المسؤولة عن ذلك. كان من الخطأ قليلا:

والأصل:

<conversionPattern value="%property{log4net:HttpReferer}"/>

وتغيير:

<conversionPattern value="%property{HttpReferer}"/>

وكان لي لإخراج "log4net:" داخل الممتلكات.

ما هو الغريب هو أن خاصية واحدة لا تزال هناك حاجة log4net: PROPERTYNAME. لا يوجد لدي اي فكرة لماذا يعمل بهذه الطريقة، ولكن هذا الإصلاح التي عملت!

نصائح أخرى

ويمكن تشغيل log4net مطول / تصحيح / إظهار مزود لنرى ما فعل لها على هذا المستوى؟ وهناك ربما نوعا آخر من التكوين الذي يكون بحاجة إلى ربط كل ذلك معا؟

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