วิธีการใช้งาน Log4j ใน Selenium?
⚡ สรุปอย่างชาญฉลาด
Log4j เข้า Selenium รวดเร็วและยืดหยุ่น Java เฟรมเวิร์กสำหรับการบันทึกรายละเอียดการทำงานของสคริปต์อัตโนมัติ รองรับระดับการบันทึกหลายระดับ ตัวเพิ่มข้อมูล และรูปแบบการจัดวาง และใช้งานร่วมกับ LogExpert ได้ดีสำหรับการวิเคราะห์ไฟล์บันทึกที่สร้างขึ้น
Log4j คืออะไร Selenium?
Log4j เป็นเฟรมเวิร์ก (API) สำหรับการบันทึกข้อมูลที่รวดเร็ว ยืดหยุ่น และเชื่อถือได้ ซึ่งเขียนด้วยภาษาโปรแกรม Java และพัฒนาขึ้นในช่วงต้นปี 1996 จัดจำหน่ายภายใต้ชื่อ... อาปาเช่ สัญญาอนุญาตใช้ซอฟต์แวร์ Log4j ได้รับการพอร์ตไปยังภาษา C แล้ว C++, C#, Perl, Pythonภาษา Ruby และ Eiffel เป็นเครื่องมือที่ใช้สำหรับงานขนาดเล็กถึงขนาดใหญ่ Selenium โครงการระบบอัตโนมัติ
ทำไมต้องใช้ Log4j?
Log4j มีข้อดีในทางปฏิบัติหลายประการ Selenium โครงการ:
- เป็นโอเพ่นซอร์ส
- ด้วย Log4j คุณสามารถจัดเก็บรายละเอียดการไหลของข้อมูลได้ Selenium ระบบอัตโนมัติในไฟล์หรือฐานข้อมูล
- Log4j สามารถใช้งานได้ทั้งกับโปรเจกต์ขนาดใหญ่และขนาดเล็ก
- ใน Log4j คำสั่ง log จะเข้ามาแทนที่คำสั่ง System.out.println ในโค้ด เพื่อให้ทราบสถานะของโปรเจ็กต์ขณะที่กำลังทำงานอยู่
ส่วนประกอบ Log4j
คนตัดไม้
โปรแกรมบันทึกข้อมูล (Logger) มีหน้าที่บันทึกข้อมูลต่างๆ ในการติดตั้งโปรแกรมบันทึกข้อมูลในโครงการ จำเป็นต้องดำเนินการตามขั้นตอนต่อไปนี้
สร้างอินสแตนซ์สำหรับคลาส Logger
คลาส Logger คือ Java-ยูทิลิตี้พื้นฐานที่มีเมธอดทั่วไปทั้งหมดที่ใช้งาน Log4j อยู่แล้ว
กำหนดระดับ Log4j
โดยหลักแล้วมีระดับการบันทึกข้อมูลอยู่เจ็ดประเภท:
- ทั้งหมด – ระดับการบันทึกนี้จะบันทึกทุกอย่าง (เปิดใช้งานการบันทึกทั้งหมด)
- DEBUG – แสดงข้อมูลการดีบัก และมีประโยชน์ในขั้นตอนการพัฒนา
- INFO – แสดงข้อความแจ้งข้อมูลที่แสดงความคืบหน้าของแอปพลิเคชัน
- WARN – แสดงข้อมูลเกี่ยวกับการทำงานผิดพลาดและพฤติกรรมที่ไม่คาดคิดของระบบ
- ข้อผิดพลาด – แสดงข้อความแสดงข้อผิดพลาดที่อาจช่วยให้ระบบทำงานต่อไปได้
- FATAL – แสดงข้อมูลสำคัญของระบบที่ทำให้แอปพลิเคชันหยุดทำงาน
- ปิด – ไม่มีการบันทึกข้อมูล
ภาคผนวก
Appender คืออุปกรณ์ที่ใช้ส่ง LogEvent ไปยังปลายทาง โดยจะตัดสินใจว่าจะเกิดอะไรขึ้นกับข้อมูลบันทึก พูดง่ายๆ ก็คือ มันเขียนบันทึกไปยังไฟล์ ต่อไปนี้เป็นตัวอย่าง Appender บางประเภท:
- ConsoleAppender จะบันทึกข้อมูลไปยังเอาต์พุตมาตรฐาน
- FileAppender จะพิมพ์บันทึกไปยังไฟล์ที่ระบุไว้
- RollingFileAppender จะเขียนข้อมูลลงในไฟล์ที่มีขนาดสูงสุดที่กำหนดไว้
หมายเหตุ ในไฟล์ log4j.properties สามารถเรียกใช้ appender ด้วยชื่อใดก็ได้ นอกจากนี้ยังมี appender อื่นๆ อีก แต่ในที่นี้จะเน้นเฉพาะ appender ไม่กี่ตัวนี้
รูปแบบ
ส่วน Layout มีหน้าที่ในการจัดรูปแบบข้อมูลการบันทึกในรูปแบบต่างๆ
คลาส Logger มีเมธอดต่างๆ สำหรับจัดการกิจกรรมการบันทึกข้อมูล โดยมีเมธอดแบบ static สองเมธอดสำหรับรับอ็อบเจ็กต์ Logger
public static Logger getRootLogger()
public static Logger getLogger(String name)
Log4j ถูกตั้งค่าอย่างไร?
ในการกำหนดค่า Log4j ให้ตัดสินใจว่าจะใช้งาน appender ตัวใด จากนั้นจึงตั้งค่าพารามิเตอร์ของ appender ตามนั้น
- ใช้ระดับ DEBUG และ RollingFileAppender
- มีการสร้างไฟล์การกำหนดค่าหรือไฟล์บันทึกสองไฟล์:
- อย่างแรก: ตัวบันทึกข้อมูลหลัก (root logger) ซึ่งจะเขียนบันทึกข้อมูลทั้งหมดที่ระบบสร้างขึ้นลงในไฟล์ชื่อ... 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{1}:%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
- file และ dest1 เป็นตัวระบุสองตัว
- คำว่า “ไฟล์” ใช้สำหรับระบุชื่อไฟล์ที่จะใช้บันทึกข้อมูลบันทึก (logs)
- “maxFileSize” ใช้สำหรับกำหนดขนาดสูงสุดของไฟล์บันทึก เมื่อไฟล์มีขนาดถึงขนาดนี้ ระบบจะสร้างไฟล์ใหม่ที่มีชื่อเดียวกัน และชื่อไฟล์เดิมจะถูกเพิ่มคำต่อท้ายที่เป็นดัชนี
- “maxBackupIndex” ใช้สำหรับกำหนดจำนวนไฟล์สูงสุดที่จะสำรองข้อมูล
- “เค้าโครง” ใช้เพื่อกำหนดรูปแบบของไฟล์บันทึก
- “Append” ใช้สำหรับตั้งค่าฟังก์ชันการเพิ่มข้อมูล หากตั้งค่าเป็น false ระบบจะสร้างไฟล์ใหม่ทุกครั้งแทนที่จะใช้ไฟล์เก่าในการบันทึกข้อมูลซ้ำ
Log4j ถูกใช้งานในสคริปต์อย่างไร?
ในโค้ดนั้น “log” ถูกใช้เป็นตัวแปรอ้างอิงที่อ้างถึงเมธอด getLogger ของคลาส Logger
Logger log = Logger.getLogger("devpinoyLogger");
ใช้ตัวแปรอ้างอิง “log” และเมธอด debug เพื่อบันทึกข้อมูลที่จำเป็น
log.debug("--information--");
เครื่องมือ LogExpert คืออะไร
LogExpert เป็นเครื่องมือที่มีคุณลักษณะดังต่อไปนี้:
- LogExpert คือ Windows เครื่องมือที่พัฒนาขึ้นเพื่อใช้ในการวิเคราะห์ส่วนท้ายของท่อนซุง
- นี่คือโปรแกรมดูไฟล์บันทึกข้อมูลแบบโอเพนซอร์สและใช้งานได้ฟรี
- เป็นเครื่องมือวิเคราะห์บันทึกข้อมูลที่มีคุณสมบัติหลากหลาย เช่น การค้นหา การกรอง การคั่นหน้า และการเน้นข้อความในบันทึกข้อมูล
- ไฟล์บันทึกจะได้รับการอัปเดตโดยอัตโนมัติเมื่อเปิดในเครื่องมือนี้
- สามารถเปิดไฟล์บันทึกหลายไฟล์ในแท็บต่างๆ ได้
- สามารถเพิ่มความคิดเห็นลงในบุ๊กมาร์กได้ และมีปุ่มลัดสำหรับสลับไปมาระหว่างบุ๊กมาร์กต่างๆ สามารถดูรายการบุ๊กมาร์กทั้งหมดเพื่อใช้ในการค้นหาได้
- มีทางลัดการใช้งานเครื่องมืออยู่ในไฟล์ช่วยเหลือ เพื่อให้สามารถอ้างอิงได้ตามต้องการ
วิธีใช้ Log4j ใน Selenium
ขั้นตอน 1) In Eclipseสร้างโปรเจ็กต์ใหม่ชื่อ log4j_demo
ขั้นตอน 2) คลิกขวาที่ไฟล์ src -> Build Path -> Configure Build Path
ขั้นตอน 3) คลิกที่ Libraries แล้วเพิ่มไลบรารี Log4j สามารถดาวน์โหลดได้จากที่นี่ https://logging.apache.org/log4j/1.2/download.html.
ขั้นตอน 4) สร้างไฟล์ใหม่ ไฟล์นี้จะเก็บการตั้งค่าทั้งหมดของ Log4j
- คลิกขวาที่ src -> สร้างใหม่ -> อื่นๆ -> ทั่วไป -> ไฟล์
- ตั้งชื่อไฟล์ว่า “log4j.properties”
- คลิกที่เสร็จสิ้น
สร้างไฟล์เพิ่มอีกสองไฟล์และตั้งชื่อไฟล์เหล่านั้น Seleniumไฟล์ .logs และ Manual.logs ประกอบด้วยบันทึกทั้งหมดที่ระบบสร้างขึ้นและข้อความที่บันทึกด้วยตนเอง
ขั้นตอน 5) ในไฟล์ log4j.properties ให้คัดลอกการตั้งค่าทั้งหมด
ขั้นตอน 6) สร้างคลาสหลัก:
- คลิกขวาที่แพ็กเกจเริ่มต้น -> สร้างใหม่ -> คลาส
- ตั้งชื่อคลาสแล้วคลิก เสร็จสิ้น
ขั้นตอน 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 website");
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
log.debug("entering 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 inches");
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/ และตรวจสอบความถูกต้องของเครื่องคำนวณ BMI น้ำหนักที่ป้อนคือ 87 กิโลกรัม และส่วนสูงคือ 5 ฟุต 10 นิ้ว สคริปต์จะตรวจสอบผลลัพธ์ในหน่วย SI, US และ UK
สคริปต์ใช้ Logger.getLogger(“devpinoyLogger”) เพื่อสร้างบันทึกระดับระบบ และใช้เมธอด log.debug เพื่อบันทึกข้อมูลลงในไฟล์ Manual.log
ขั้นตอน 8) เรียกใช้สคริปต์ เปิดตำแหน่งของ Manual และ Selenium บันทึกเพื่อตรวจสอบข้อมูลการบันทึก
วิธีใช้เครื่องมือ LogExpert เพื่อวิเคราะห์บันทึก
- ดาวน์โหลดเครื่องมือจาก https://github.com/zarunbal/LogExpertไปที่โฟลเดอร์ดาวน์โหลด LogExpert
- เปิดไฟล์ LogExpert.exe
- คลิกที่ ไฟล์ -> เปิด แล้วเลือกเส้นทางที่ไฟล์ Manual.log และ Seleniumไฟล์บันทึก (.log) จะถูกจัดเก็บไว้ เลือกไฟล์นั้น
- เลือกตัวเลือก “ติดตามหาง”
การเลือก "ติดตามหาง" (Follow Tail) จะเปิดใช้งานการติดตามบันทึก ซึ่งหมายความว่า LogExpert จะอัปเดตไฟล์บันทึกโดยอัตโนมัติในขณะที่สคริปต์กำลังทำงานอยู่ หากใช้โปรแกรมแก้ไขข้อความอื่นๆ เช่น Notepad คุณจะต้องปิดและเปิดไฟล์ซ้ำๆ เพื่ออัปเดตบันทึก แต่ใน LogExpert ในโหมดติดตามหาง คุณไม่จำเป็นต้องทำเช่นนั้น
ภาพต่อไปนี้แสดงโครงสร้างของไฟล์บันทึกข้อมูล
เมื่อใช้ LogExpert ระบบจะวิเคราะห์บันทึกที่สร้างขึ้นโดย Selenium WebDriver สามารถดีบักได้ ในเครื่องมือนี้ ผู้ใช้สามารถ:
- ค้นหาข้อความและนิพจน์ปกติใดๆ ก็ได้
- สร้างที่คั่นหน้าและแสดงความคิดเห็นได้ รวมถึงสามารถสลับไปมาระหว่างที่คั่นหน้าได้ ซึ่งเป็นสิ่งที่ไม่สามารถทำได้ในเครื่องมืออื่นใด
- กรองข้อมูลบันทึก ค้นหาช่วงข้อความ และใช้ตัวกรองอื่นกับข้อมูลบันทึกที่ผ่านการกรองแล้ว
- เน้นข้อความในบรรทัดต่างๆ โดยอิงจากคำบางคำ
เครื่องมือนี้ยังช่วยแบ่งพาร์ติชันข้อมูลออกเป็นคอลัมน์ต่างๆ












