การบันทึกที่ดีขึ้นสำหรับแอปพลิเคชัน Java องค์กรของคุณ – CrunchifyBetterLog4jLogging.java
เผยแพร่แล้ว: 2019-08-29
หากคุณกำลังพัฒนา Java Application ที่คุณต้องการใช้ฟังก์ชัน logger มีหลายวิธีที่คุณสามารถปรับปรุง Logger Utility
เพื่อให้แน่ใจว่าการบันทึกสามารถทิ้งไว้ในโปรแกรมที่ใช้งานจริงได้ Java logger API ได้รับการออกแบบมาเพื่อให้การบันทึกมีราคาถูกที่สุด เพื่อให้โค้ดสร้างการบันทึกที่ละเอียดเมื่อจำเป็น แต่ไม่ทำให้แอปพลิเคชันช้าลงในการใช้งานจริงตามปกติ API ให้กลไกในการเปลี่ยนแปลงแบบไดนามิกว่าข้อความบันทึกใดที่ผลิตขึ้น เพื่อลดผลกระทบของรหัสการบันทึกในระหว่างการทำงานปกติ
ตอนนี้ มาเริ่มเขียน Logger Utility อย่างง่าย ซึ่งจะช่วยเพิ่มคุณภาพการบันทึกการผลิตโดยรวมของคุณ
อัปเดต Log4j เป็นเวอร์ชันล่าสุด
CVE-2021-44228: คุณสมบัติ Apache Log4j2 <=2.14.1 JNDI ที่ใช้ในการกำหนดค่า ข้อความบันทึก และพารามิเตอร์ไม่ได้ป้องกัน LDAP ที่ควบคุมโดยผู้โจมตีและปลายทางอื่นที่เกี่ยวข้องกับ JNDI
จาก log4j 2.16.0 ลักษณะการทำงานนี้ถูกปิดใช้งานโดยค่าเริ่มต้น
ขั้นตอนที่ 1:
สร้างไฟล์ CrunchifyBetterLog4jLogging.java
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
package com . crunchify . tutorial ; import org . apache . log4j . Logger ; /** * @author Crunchify.com * */ public class CrunchifyBetterLog4jLogging { private static final String Crunchify_FLAG_DEBUG = " ---------- " ; private static final String Crunchify_FLAG_WARN = " ^^^^^^^^^^ " ; private static final String Crunchify_FLAG_INFO = " ********** " ; private static final String Crunchify_FLAG_ERROR = " ########## " ; private static final String Crunchify_FLAG_FATAL = " $$$$$ " ; // Debug Level public static void debug ( Logger logger , String message ) { logger . debug ( Crunchify_FLAG_DEBUG + message + Crunchify_FLAG_DEBUG ) ; } // Warning Level public static void warn ( Logger logger , String message ) { logger . warn ( Crunchify_FLAG_WARN + message + Crunchify_FLAG_WARN ) ; } // Info Level public static void info ( Logger logger , String message ) { logger . info ( Crunchify_FLAG_INFO + message + Crunchify_FLAG_INFO ) ; } // Error Level public static void error ( Logger Logger , String message ) { Logger . error ( Crunchify_FLAG_ERROR + message + Crunchify_FLAG_ERROR ) ; } // Fatal Level public static void fatal ( Logger Logger , String message ) { Logger . fatal ( Crunchify_FLAG_FATAL + message + Crunchify_FLAG_FATAL ) ; } } |
โดยพื้นฐานแล้ว สิ่งที่เราทำคือ เมื่อในโปรแกรม Java ของคุณ คุณพูดว่า log.info หรือ log.info หรือ log.error log.fatal จะเพิ่มอักขระพิเศษโดยอัตโนมัติตามที่คุณเห็นด้านบน
ขั้นตอนที่ 2
Testcase (โปรแกรม Java ตัวอย่าง) – CrunchifyBetterLog4jLoggingTest.java
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
package com . crunchify . tutorial ; import org . apache . log4j . Logger ; public class CrunchifyBetterLog4jLoggingTest { private static Logger logger = Logger . getLogger ( CrunchifyBetterLog4jLoggingTest . class ) ; public static void main ( String [ ] args ) { int a = 20 ; int b = 30 ; int c = 3 ; int d = 4 ; CrunchifyBetterLog4jLoggingTest . SwapVairablesMethod1 ( a , b ) ; CrunchifyBetterLog4jLoggingTest . SwapVairablesMethod2 ( c , d ) ; } public static void SwapVairablesMethod1 ( int a , int b ) { CrunchifyBetterLog4jLogging . debug ( logger , "value of a and b before swapping, a: " + a + " b: " + b ) ; // swapping value of two numbers without using temp variable a = a + b ; // now a is 50 and b is 20 b = a - b ; // now a is 50 but b is 20 (original value of a) a = a - b ; // now a is 30 and b is 20, numbers are swapped CrunchifyBetterLog4jLogging . warn ( logger , "Result Method1 => a: " + a + " b: " + b ) ; } public static void SwapVairablesMethod2 ( int c , int d ) { CrunchifyBetterLog4jLogging . info ( logger , "value of c and d before swapping, c: " + c + " d: " + d ) ; // swapping value of two numbers without using temp variable using // multiplication and division c = c * d ; d = c / d ; c = c / d ; CrunchifyBetterLog4jLogging . error ( logger , "Result Method2 => c: " + c + " d: " + d ) ; } } |
เรากำลังพิมพ์ผลการบันทึกประเภทต่างๆ

ผลลัพธ์:
|
1 2 3 4 |
2014 - 06 - 21 00 : 23 : 19 , 463 DEBUG [ CrunchifyBetterLog4jLoggingTest ] @ @ @ @ @ @ @ @ @ @ value of a and b before swapping , a : 20 b : 30 @ @ @ @ @ @ @ @ @ @ 2014 - 06 - 21 00 : 23 : 19 , 464 WARN [ CrunchifyBetterLog4jLoggingTest ] ^^^^^^^^^^ Result Method1 = > a : 30 b : 20 ^^^^^^^^^^ 2014 - 06 - 21 00 : 23 : 19 , 464 INFO [ CrunchifyBetterLog4jLoggingTest ] ********** value of c and d before swapping , c : 3 d : 4 ********** 2014 - 06 - 21 00 : 23 : 19 , 464 ERROR [ CrunchifyBetterLog4jLoggingTest ] ########## Result Method2 => c: 4 d: 3 ########## |
