سجل 4j في Selenium: كيفية تنزيل واستخدام ملف خصائص Log4j

ما هو Log4j في Selenium?

Log4j عبارة عن إطار عمل تسجيل سريع ومرن وموثوق (APIS) مكتوب Java تم تطويره في أوائل عام 1996. ويتم توزيعه تحت عنوان Apache ترخيص البرمجيات. تم نقل Log4J إلى C، C++، C #، بيرل, Pythonوروبي وإيفل اللغات. إنها أداة تستخدم على نطاق صغير إلى كبير Selenium مشاريع الأتمتة.

لماذا استخدام Log4j؟

  • إنه مفتوح المصدر
  • مع Log4j، من الممكن تخزين تفاصيل التدفق الخاصة بنا Selenium الأتمتة في ملف أو قواعد البيانات
  • يستخدم Log4j للمشاريع الكبيرة والصغيرة
  • في Log4j، نستخدم عبارات السجل بدلاً من عبارات SOPL في الكود لمعرفة حالة المشروع أثناء تنفيذه

مكونات Log4j

مكونات Log4j

الحطابين

إنه مسؤول عن تسجيل المعلومات. لتنفيذ المسجلات في مشروع ما، يلزم تنفيذ الخطوات التالية

إنشاء مثيل لفئة المسجل

فئة المسجل هي أ Java- أداة مساعدة تعتمد على جميع الطرق العامة التي تم تنفيذها بالفعل لاستخدام log4j

تحديد مستوى Log4j

في المقام الأول هناك خمسة أنواع من مستويات السجل

  1. الكل - هذا المستوى من التسجيل سوف يسجل كل شيء (يقوم بتشغيل كافة السجلات)
  2. DEBUG – طباعة معلومات التصحيح وهو مفيد في مرحلة التطوير
  3. INFO – طباعة رسالة إعلامية تسلط الضوء على تقدم التطبيق
  4. تحذير - طباعة المعلومات المتعلقة بسلوك النظام الخاطئ وغير المتوقع.
  5. خطأ - طباعة رسالة خطأ قد تسمح للنظام بالاستمرار
  6. FATAL - طباعة معلومات النظام الهامة التي تتسبب في تعطل التطبيق
  7. إيقاف - لا يوجد تسجيل

المُلحقون

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

  1. يقوم ConsoleAppender بتسجيل الإخراج القياسي
  2. يقوم مُلحق الملف بطباعة السجلات إلى بعض الملفات
  3. المتداول ملف المُلحق إلى ملف بأقصى حجم

ملاحظة: في خصائص log4j يمكننا استدعاء المُلحق بأي اسم. هناك مُلحقات أخرى أيضًا ولكننا سنقتصر على هذه القلة.

تخطيطات

وهو مسؤول عن تنسيق معلومات التسجيل في أنماط مختلفة.

توفر فئة المسجل طرقًا مختلفة للتعامل مع أنشطة التسجيل. يوفر طريقتين ثابتتين للحصول على كائن المسجل.

Public static Logger getRootLogger()
Public static Logger getLogger(String name)

كيف يتم تكوين log4j؟

لتكوين log4j علينا أن نقرر المُلحق الذي سيتم تنفيذه. وفقا لذلك، سيتم تعيين معلمات المُلحق.

  • سوف نستخدم مستوى DEBUG وRollingFileAppender
  • سنقوم بعمل تكوينين أو سجلات،
  • أولاً: مسجل الجذر، الذي سيكتب جميع السجلات التي أنشأها النظام في اسم الملف، على سبيل المثال Selenium.السجلات
  • ثانياً: سيتم كتابة المعلومات التي تم إنشاؤها بواسطة الأوامر اليدوية في التعليمات البرمجية في اسم الملف - Manual.logs
  • سيكون التخطيط هو PatternLayout
  • # مسجل الجذر

    log4j.rootLogger=DEBUG,file
    log4j.appender.file=org.apache.log4j.RollingFileAppender
    log4j.appender.file.File=D:\\Guru99\\src\\Selenium.logs
    log4j.appender.file.maxFileSize=900KB
    log4j.appender.file.maxBackupIndex=5
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c<strong>{1}</strong>:%L - %m%n
    log4j.appender.file.Append=false
    

    #سجلات التطبيق

    log4j.logger.devpinoyLogger=DEBUG, dest1
    log4j.appender.dest1=org.apache.log4j.RollingFileAppender
    log4j.appender.dest1.maxFileSize=900KB
    log4j.appender.dest1.maxBackupIndex=6
    log4j.appender.dest1.layout=org.apache.log4j.PatternLayout
    log4j.appender.dest1.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss} %c %m%n
    log4j.appender.dest1.File=D:\\ Guru99\\src\\Manual.logs
    log4j.appender.dest1.Append=false
    

    في المثال أعلاه، قمنا بتكوين log4j لتسجيل الدخول إلى ملفين مختلفين باسم Selenium.log و Manual.log.

    • الملف و dest1 هما المعرفان.
    • يتم استخدام "ملف" لإعطاء اسم الملف الذي سيتم حفظ السجلات فيه
    • يتم استخدام "maxFileSize" لتكوين الحد الأقصى لحجم ملف السجل. عندما يصل الملف إلى هذا الحجم، سيتم إنشاء ملف جديد بنفس الاسم وسيتم إضافة اسم الملف القديم كفهرس له.
    • يتم استخدام "maxBackupIndex" لتكوين الحد الأقصى لعدد الملفات المراد نسخها احتياطيًا.
    • يتم استخدام "التخطيط" لتعيين تنسيق ملف السجل.
    • يتم استخدام "إلحاق" لتعيين وظيفة الإلحاق. إذا تم ضبطه على خطأ، فسيتم إنشاء ملف جديد بدلاً من استخدام الملف القديم للتسجيل في كل مرة

    كيف يتم استخدام log4j داخل البرنامج النصي؟

    في الكود، استخدمنا "log" كمتغير مرجعي يشير إلى طريقة getLogger الخاصة بـ Logger Class

    Logger log = Logger.getLogger("devpinoyLogger");

    استخدم المتغير المرجعي "log" وطريقة التصحيح لتسجيل المعلومات التي نريدها.

    log.debug("--information--");

    ما هي أداة LogExpert؟

    1. أداة LogExpert هي أداة ل Windows تم تطويره لتتبع السجلات
    2. إنه عارض سجل مجاني ومفتوح المصدر.
    3. إنها أداة تحليل سجلات ذات ميزات متعددة مثل البحث والتصفية والإشارة المرجعية وتسليط الضوء على السجلات
    4. في سجلات هذه الأداة، يتم تحديث الملفات تلقائيًا عند فتحها
    5. في هذه الأداة، يمكننا فتح ملف سجل متعدد في علامات تبويب مختلفة
    6. يمكننا أيضًا وضع تعليقات على الإشارات المرجعية، ويوجد مفتاح الاختصار للتنقل بين الإشارات المرجعية المختلفة. يمكننا أيضًا رؤية قائمة الإشارات المرجعية الكاملة والتنقل من هناك
    7. يتم توفير اختصارات الأداة في ملف المساعدة بحيث يمكن إحالتها إلى الأداة.

    كيفية استخدام Log4j في Selenium

    الخطوة 1) In Eclipse قم بإنشاء مشروع جديد بالاسم log4j_demo

    استخدم Log4j في Selenium

    الخطوة 2) انقر بزر الماوس الأيمن على src -> بناء المسار -> تكوين مسار البناء

    استخدم Log4j في Selenium

    الخطوة 3) انقر على المكتبات وأضف مكتبة Log4J. يمكنك تنزيله من https://logging.apache.org/log4j/1.2/download.html

    استخدم Log4j في Selenium

    الخطوة 4) إنشاء ملف جديد. سيتضمن هذا الملف كافة تكوينات log4j

    1. انقر بزر الماوس الأيمن على src -> جديد -> أخرى -> عام -> ملف
    2. أعط اسم الملف كـ "log4j.properties"
    3. انقر فوق "إنهاء"

    قم بإنشاء ملفين آخرين ومنحهم أسماء مثل Selenium.logs وManual.logs. ستحتوي هذه الملفات على كافة السجلات التي أنشأها النظام والبيانات المسجلة يدويًا

    استخدم Log4j في Selenium

    الخطوة 5) في log4j.properties انسخ التكوين بأكمله.

    استخدم Log4j في Selenium

    الخطوة 6) إنشاء فئة رئيسية:

    1. انقر بزر الماوس الأيمن على الحزمة الافتراضية -> جديد -> فئة
    2. أعط اسم الفصل وانقر على إنهاء

    استخدم Log4j في Selenium

    الخطوة 7) انسخ الكود التالي إلى الفصل الرئيسي

    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.apache.log4j.Logger;
    
    public class LoggingDemo {
        /**
    		* @param args
        */
        public static void main(String[] args) {
             // TODO Auto-generated method stub
             WebDriver driver = new FirefoxDriver();
             Logger log = Logger.getLogger("devpinoyLogger");
             
             driver.get("https://healthunify.com/bmicalculator/");
    		 log.debug("opening webiste");
             driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
    		 log.debug("entring weight");
    		 driver.findElement(By.name("wg")).sendKeys("87");
             log.debug("selecting kilograms");
             driver.findElement(By.name("opt1")).sendKeys("kilograms");
             log.debug("selecting height in feet");
             driver.findElement(By.name("opt2")).sendKeys("5");
             log.debug("selecting height in inchs");
             driver.findElement(By.name("opt3")).sendKeys("10");
             log.debug("Clicking on calculate");
             driver.findElement(By.name("cc")).click();
    
    		 log.debug("Getting SIUnit value");
             String SIUnit = driver.findElement(By.name("si")).getAttribute("value");
             log.debug("Getting USUnit value");
             String USUnit = driver.findElement(By.name("us")).getAttribute("value");
             log.debug("Getting UKUnit value");
             String UKUnit = driver.findElement(By.name("uk")).getAttribute("value");
             log.debug("Getting overall description");
             String note = driver.findElement(By.name("desc")).getAttribute("value");
          
             System.out.println("SIUnit = " + SIUnit);
             System.out.println("USUnit = " + USUnit);
             System.out.println("UKUnit = " + UKUnit);
             System.out.println("note = " + note); 
    		driver.quit();
    	}
    }
    

    في الكود أعلاه، نزور https://healthunify.com/bmicalculator/ والتحقق من حاسبة مؤشر كتلة الجسم. الوزن المدخل هو 87 كجم والطول 5 أقدام و10 بوصات. يتحقق البرنامج النصي من الإخراج في وحدات SE والولايات المتحدة والمملكة المتحدة.

    باستخدام Logger.getLogger("devpinoyLogger") نقوم بإنشاء سجلات على مستوى النظام

    باستخدام طريقة log.debug نقوم بتخزين البيانات في Manual.log

    الخطوة 8) قم بتشغيل البرنامج النصي. افتح موقع الدليل و Selenium سجلات للتحقق من بيانات التسجيل.

    كيف يمكن استخدام أداة LogExpert لتحليل السجلات

    1. قم بتنزيل الأداة من https://github.com/zarunbal/LogExpert . انتقل إلى مجلد التنزيل LogExpert

      يمكن استخدام أداة LogExpert لتحليل السجلات

    2. افتح LogExpert.exe
    3. انقر فوق ملف -> فتح وتصفح إلى المسار حيث Manual.log و Seleniumيتم تخزين ملفات .log. حدد الملف
    4. حدد خيار "متابعة الذيل".

      يمكن استخدام أداة LogExpert لتحليل السجل

      يؤدي تحديد خيار متابعة الذيل إلى تمكين تتبع السجلات مما يعني أن LogExpert يقوم تلقائيًا بتحديث ملف السجل عندما يكون البرنامج النصي في مرحلة التنفيذ. إذا استخدمنا أي محرر آخر مثل المفكرة، فيجب علينا إغلاق الملف وإعادة فتحه مرارًا وتكرارًا لتحديث السجلات. ولكن مع وجود ExpertTool في وضع Follow Tail، لا يعد هذا مطلوبًا.

      الصور التالية توضح تخطيط السجلات

      يمكن استخدام أداة LogExpert لتحليل السجل

      يمكن استخدام أداة LogExpert لتحليل السجل

    باستخدام أداة LogExpert، يمكن للمرء تصحيح أخطاء السجلات التي تم إنشاؤها بواسطة برنامج تشغيل الويب selenium كما هو الحال في هذه الأداة مرة واحدة

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

    تساعد هذه الأداة أيضًا على تقسيم البيانات إلى أعمدة مختلفة.

    تلخيص هذه التدوينة بـ: