سؤال

أنا باستخدام AdoNetAppender إلى سجل الرسائل.لقد أضفت %الملكية{log4net:المضيف} تحويل نمط الرسالة المعلمة.

<parameter>
      <parameterName value="@message"/>
      <dbType value="String"/>
      <size value="4000"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="[%property{log4net:HostName}] - %message"/>
      </layout>
</parameter>

الإخراج هو مثل

[اسم المضيف] - فو بار.

ولكن أريد إخراج مثل

[اسم المضيف] - فو بار.

كيف يمكنني جعل المضيف الكبيرة باستخدام تحويل الأنماط ؟

التحيات ،

Cankut

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

المحلول

الحل المقترح من قبل رون غرابوفسكي هو توسيع PatternConverter.

public class HostNameToUpperConverter : PatternConverter
{
    protected override void Convert(TextWriter writer, object state)
    {
        string hostName = (string)GlobalContext.Properties[LoggingEvent.HostNameProperty];
        writer.Write(hostName.ToUpper());
    }
}

الاستخدام في ملف التكوين:

<layout type="log4net.Layout.PatternLayout">
        <converter>
          <name value="hostNameToUpper" />
          <type value="MyApplication.HostNameToUpperConverter" />
        </converter>
        <conversionPattern value="[%hostNameToUpper] - %message" />
</layout>

نصائح أخرى

FWIW (ربما شخص آخر سوف تجد هذه مفيدة) ، NLog 2.0 (و ربما 1.0 تحديث) قد أضاف بعض تخطيط "مغلفة" التي تسمح تعديل الناتج من التخطيط.ترى هذا الرابط, نحو القاع.

بين مغلفة أحرف كبيرة أو صغيرة ، وتقليم بيضاء, وسادة, وعدد قليل من أكثر.لذا ربما يمكن تعريف التخطيط الذي يحدد المجالات التي ينبغي إدراجها في الإخراج و "التفاف" إما كله أو جزء منه في "الكبيرة" المجمع.أنا حقا لا أعرف بالضبط الجملة أعلم أنك يمكن أن تتضمن تخطيطات في تخطيطات أخرى لذا يمكن تعريف تخطيط "اسم المضيف" ، ألفه في "الكبيرة" المجمع ثم تشمل تخطيط في تخطيط النهائي.في شبة الكود (ملف التكوين شبة الكود ، وليس كود شبة الكود) (جدا الزائفة!):

var host=${gdc:hostname}
var uhost=${uppercase=true,inner=host}

الآن uhost يمكن تضمينها في "ريال مدريد" تخطيط:

${datetime} | ${uhost} | ${message}

أو قد تفعل ذلك من هذا القبيل:

${datetime} | ${uppercase=true, inner=${gdc:hostname}} | ${message}

علما بأنني لم جربت هذه الطريقة في NLog, أنا مجرد الذهاب من خلال ما هو على الموقع.

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