سؤال

أنا جديد جدًا على بيئات Ruby وكنت أبحث عن إطار تسجيل لطيف لاستخدامه في تطبيقات Ruby و Rails.

في تجربتي السابقة ، استخدمت بنجاح log4j و log4p (منفذ Perl) وكنت أتوقع نفس المستوى من قابلية الاستخدام (والنضج) مع Log4R.

ومع ذلك ، يجب أن أقول أن هناك عددًا من الأشياء غير واضحة على الإطلاق في إطار Log4R.

1 ميراث المسجل

لا يبدو أن ميراث المسجل يدار على الإطلاق!

إذا أعلنت مسجلًا يسمى "myapp" ثم حاول الحصول على اسم مسجل "MyApp :: Engine" ، سينتهي البحث مع NameerRor.

أتوقع أن يقوم الإطار بإرجاع مسجل الجذر وفقًا لمخطط التسمية واستخدام مسجل "MyApp".

س 1 : بالطبع يمكنني أن أتغلب على هذا وإدارة الأسماء بنفسي باستخدام طريقة البحث ، ومع ذلك ، هل هناك طريقة أنظف للقيام بذلك دون أي ترميز إضافي؟

2 تكوين YAML

الشيء الثاني الذي يربكني هو تكوين YAML. في موقع Log4R ، لا توجد معلومات حول هذا النظام حرفيًا ، ويرتبط DOC إلى الأمام إلى الصفحات المفقودة ، لذلك يتم تضمين جميع المعلومات التي يمكنني العثور عليها في دليل الأمثلة على الأحجار الكريمة.

لقد كنت مرتبكًا تمامًا مع حقيقة أن تكوين YAML يجب أن يحتوي على قسم Pre_config ، وأنني بحاجة إلى تحديد مستوياتي الخاصة.

إذا قمت بإزالة قصة Pre_config ، أو استبدلت جميع المستويات "المخصصة" بموجبها القياسي (Debug ، Info ، Warn ، Fatal) ، فإن المثال سوف يرمي الخطأ التالي:

log4r/yamlconfigurator.rb:68:in `decode_yaml': Log level must be in 0..7 (ArgumentError)

لذلك يبدو أنه لا توجد طريقة لاستخدام ملف بسيط حيث نعلن فقط عن عمليات تسجيل الدخول والملحقات للإطار.

س 2 : أعتقد حقًا أنني فاتني شيء ويجب أن يكون وسيلة لتوفير ملف yaml conf بسيط. هل لديك أي أمثلة على مثل هذا الاستخدام؟

3 استبدال المتغيرات في ملف XML

س 3 : يبدو أن نظام تكوين YAML يوفر مثل هذه الميزة ، لكنني لم أتمكن من العثور على ميزة مماثلة مع ملفات XML. أيه أفكار ؟

4 بدائل؟

يجب أن أقول إنني أشعر بخيبة أمل شديدة من مستوى الميزة ونضج Log4R مقارنةً بمنافذ Log4J ومنافذ Log4J الأخرى.

واجهت هذا الإطار مع خلفية قوية من تسجيل واجهات برمجة التطبيقات بلغات أخرى وأجد نفسي أعمل في جميع الأنواع لمجرد جعل "الأشياء الأساسية" تعمل في "تطبيق العالم الحقيقي".

أعني بذلك تطبيقًا معقدًا يتكون من العديد من الأحجار الكريمة ، وتطبيقات وحدة التحكم/البرمجة النصية ، وواجهة الويب الأمامية للسكك الحديدية حيث يجب أن يكون التكوين مبدئيًا وحيث نجري استخدامًا مكثفًا لمساحات الأسماء والميراث.

لقد قمت بتشغيل العديد من عمليات البحث من أجل العثور على شيء أكثر ملاءمة أو ناضجة ، لكنني لم أجد شيئًا مشابهًا.

س 4 : هل تعرف يا رفاق أي بدائل (خطيرة) لإطار Log4R الذي يمكن استخدامه في تطبيق فئة المؤسسة؟

شكرا قراءة كل هذا!

أنا أقدر حقًا أي مؤشرات ،

أطيب التحيات،

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

المحلول

أوافق على أن وثائق Log4R سيئة للغاية. نحن نستخدمه على الرغم من أنه يخدمنا بشكل جيد ، في Let's-Sye A Proferprisey.

نحن لا نستخدم ميراث المسجل ، لذا لا يمكنني مساعدتك في ذلك ، وأيضًا لا أعرف أي برنامج بديل ، ولكن:

إليك الرمز الذي نستخدمه لقراءة تكوين YAML (في الواقع ، أعتقد أننا نمرره كما تم تحميله بالفعل في تجزئة) ، وهو يدعم أيضًا استبدال متغير:

require 'log4r'
require 'log4r/yamlconfigurator'

y = "log4r_config:

  # define all loggers ...
  loggers:
    - name      : production
      level     : INFO
      trace     : 'false'
      outputters:
        - stdout

  # define all outputters (incl. formatters)      
  outputters:
    - type     : StdoutOutputter
      name     : stdout
      formatter:
        date_pattern: '%Y-%m-%d %H:%M:%S'
        pattern     : '%d %l: #\{TEST\} %m '
        type        : PatternFormatter"

h = YAML.load y
log_cfg = YamlConfigurator
log_cfg['TEST'] = 'foobar'
log_cfg.decode_yaml h['log4r_config']
@log = Logger['production']
@log.info 'test'
#=>2010-05-20 14:36:32 INFO: foobar test 

نصائح أخرى

بما أنني ما زلت "أقاتل" مع تكوين YAML ، فقد قمت بحفر قليلاً في رمز تكوين XML ووجدت الإجابة س 3 concenrning الاشتراك في المعلمة.

في الواقع ، يعمل بطريقة مشابهة جدًا لأشياء YAML ، كل ما تحتاجه هو الرجوع إلى المعلمات مع #{varname} في ملف XML:

<filename>#{logdir}/processing.log</filename>

ولتعيينها في Configurator قبل قراءة ملف XML:

Log4r::Configurator['logdir']=log_dir_param
...
Log4r::Configurator.load_xml_file(conf_file_xml)

أيضًا عندما ذكرت أن وثائق Log4R في حالة سيئة (الكثير من 404 خطأ) كنت أتحدث عن المستند المتاح على Rubyforge ...

انتهيت من خلال النظر إلى مشروع SourceForge ووجدت مستندًا "لطيفًا" (بطريقة روبي) http://log4r.sourceforge.net/rdoc.

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