1: مقدمة في Log4J مقدمة
Log4J هو مشروع مفتوح من Apache. تنسيق الإخراج لكل سجل ؛ الأمر الأكثر إثارة للاهتمام هو أنه يمكن تكوينها بمرونة من خلال ملف التكوين دون تعديل رمز التطبيق.
بالإضافة إلى ذلك ، من خلال واجهات Log4J الأخرى ، يمكنك استخدام Log4J في C ++ و .NET و PL/SQL. مكون. علاوة على ذلك ، باستخدام امتدادات الطرف الثالث المختلفة ، يمكنك بسهولة دمج Log4J في تطبيقات J2EE و Jini وحتى SNMP.
2. أمثلة المبتدئين
1. إنشاء مشروع جديد Java ، استيراد الحزمة log4j-1.2.17.jar ، والدليل النهائي للمشروع بأكمله كما يلي
2. إنشاء وتعيين log4j.properties في نفس المستوى
### يثبت###
log4j.Rootlogger = debug ، stdout ، d ، e
### معلومات الإخراج للتحكم في رفع ####
log4j.appender.stdout = org.apache.log4j.consoleppender
log4j.appender.stod.target = system.out
log4j.appender.stdout.layout = org.apache.log4j.patternlayout
log4j.appender.stdout.layout.conversionpattern = [٪ -5p] ٪ d {yyyy-mm-dd hh: mm: ss ، sss} الطريقة: ٪ l ٪ m ٪ n
### سجلات الإخراج فوق مستوى التصحيح إلى = e: //logs/error.log ###
log4j.appender.d = org.apache.log4j.dailyrollingfileappender
log4j.appender.d.file = e: //logs/log.log
log4j.appender.d.append = true
log4j.appender.d.threshold = debug
log4j.appender.d.layout = org.apache.log4j.patternlayout
log4j.appender.d.layout.conversionpattern = ٪ -d {yyyy-mm-dd hh: mm: ss} [٪ t: ٪ r]-[٪ p] ٪ m ٪ n
### سجلات الإخراج فوق مستوى الخطأ إلى = e: //logs/error.log ###
log4j.appender.e = org.apache.log4j.dailyrollingfileappender
log4j.appender.e.file = e: //logs/error.log
log4j.appender.e.append = true
log4j.appender.e.threshold = خطأ
log4j.appender.e.layout = org.apache.log4j.patternlayout
log4j.appender.e.layout.conversionpattern = ٪ -d {yyyy-mm-dd hh: mm: ss} [٪ t: ٪ r]-[٪ p] ٪ m n
3. تعيين محتوى السجل
package com.mucfc ؛ import org.apache.log4j.logger ؛/** *@efference linbingwen *@May 18 ، 2015 9:14:21 */test class public {private static logg er = logger.getlogger (اختبار. Class) ؛ ::::::::::::::::::::::::: :::::::::::::::::::::: :::::::: تصحيح رسالة تصحيح. ") ؛ .error ("هذه رسالة خطأ.") ؛4. نتيجة الإخراج
(1) أولاً وقبل كل شيء ، معلومات وحدة التحكم
(2) دعونا نلقي نظرة على ملف الإخراج
المحتوى على النحو التالي ، وقد وجد أنه تم إخراجه إلى المستند المقابل كما هو مطلوب.
3. طريقة الاستخدام الأساسية لـ Log4J
يتكون Log4J من ثلاثة مكونات مهمة: أولوية معلومات السجل ، ووجهة الإخراج لمعلومات السجل ، وتنسيق الإخراج لمعلومات السجل. أولوية معلومات السجل هي من عالية إلى منخفضة. ملف
2.1
في الواقع ، لا يمكنك أيضًا استخدام ملفات التكوين على الإطلاق ، ولكن تكوين بيئة Log4J في الكود الخاص بك. ومع ذلك ، فإن استخدام ملفات التكوين سيجعل تطبيقك أكثر مرونة. يدعم Log4J تنسيقات ملفات التكوين ، أحدهما هو ملف تنسيق XML ، والآخر هو ملف ميزة Java (مفتاح = القيمة). نقدم أدناه طريقة استخدام ملفات ميزات Java كملفات تكوين:
1. تكوين مسجل الجذر ، بناء الجملة هو:
log4j.Rootlogger = [المستوى] ، اسم التذييل ، اسم التذييل ، ...
من بينها ، المستوى هو أولوية قطع الأشجار ، مقسمة إلى OFF ، قاتلة ، خطأ ، تحذير ، معلومات ، تصحيح ، كل أو المستوى الذي تحدده. توصي Log4J باستخدام أربعة مستويات فقط ، مع الأولوية من ارتفاع إلى منخفض ، وهي خطأ ، وتحذير ، ومعلومات ، وتصحيح الأخطاء. حسب المستوى المحدد هنا ، يمكنك التحكم في المفاتيح إلى المستوى المقابل لمعلومات السجل في التطبيق. على سبيل المثال ، إذا تم تعريف مستوى المعلومات هنا ، فلن تتم طباعة جميع معلومات سجل مستوى التصحيح في التطبيق. يشير AppenderName إلى المكان الذي يتم فيه إخراج معلومات السجل B. يمكنك تحديد وجهات الإخراج المتعددة في نفس الوقت.
2. قم بتكوين الجسد الوجهة لإخراج معلومات السجل ، وبناء الجملة الخاص به هو:
log4j.appender.appendername = common.qualified.name.of.appender.class
log4j.appender.appendername.option1 = value1
...
log4j.appender.appendername.option = Valuen
من بينها ، الملاحق التي توفرها Log4J هي كما يلي:
org.apache.log4j.consoleppender (وحدة التحكم) ،
org.apache.log4j.fileappender (ملف) ،
org.apache.log4j.dailyrollingfilePender (يولد ملف سجل واحد كل يوم) ،
org.apache.log4j.rollingfileappender (يتم إنشاء ملف جديد عندما يصل حجم الملف إلى الحجم المحدد) ،
org.apache.log4j.writerappender (أرسل معلومات السجل بتنسيق الدفق إلى أي مكان محدد)
3. قم بتكوين تنسيق (تخطيط) معلومات السجل ، وبناء الجملة هو:
log4j.appender.appendername.layout = common.qualified.name.of.layout.class
log4j.appender.appendername.layout.option1 = value1
...
log4j.appender.appendername.layout.option = Valuen
من بينها ، هناك العديد من التخطيطات التي توفرها Log4J:
org.apache.log4j.htmllayout (تخطيط في نموذج جدول HTML) ،
org.apache.log4j.patternlayout (يمكن تحديد وضع التصميم بمرونة) ،
org.apache.log4j.simplelayout (يحتوي على مستوى وسلسلة المعلومات من معلومات السجل) ،
org.apache.log4j.ttcclayout (بما في ذلك الوقت ، الخيط ، الفئة ، إلخ. من توليد السجل)
يستخدم Log4J تنسيق طباعة مشابه لدالة printf في لغة C لتنسيق معلومات السجل ، وتكون معلمات الطباعة كما يلي: ٪ M الرسالة المحددة في رمز الإخراج
٪ P أولوية الإخراج ، أي التصحيح ، المعلومات ، تحذير ، خطأ ، قاتلة
٪ r إخراج عدد المللي ثانية المأخوذة من بداية التطبيق لإخراج معلومات السجل
٪ C يخرج الفئة ، وعادة ما يكون الاسم الكامل للفصل
٪ t يخرج اسم مؤشر الترابط الذي يولد حدث السجل
٪ n يخرج كسر خط العائد ، نظام Windows هو "RN" ، نظام UNIX هو "n"
٪ d يخرج تاريخ أو وقت السجل. : 18 أكتوبر 2002 22:10:28 ، 921
٪ L إخراج الموقع الذي يحدث فيه حدث السجل ، بما في ذلك اسم الفئة ، والموضوع الذي حدث ، وعدد الخطوط في الكود. مثال: testlog4.main (testlog4.java:10)
2.2.
1. احصل على المسجل
باستخدام Log4J ، فإن الخطوة الأولى هي الحصول على مسجل السجل ، والذي سيكون مسؤولاً عن التحكم في معلومات السجل. بناء الجملة هو:
مسجل ثابت عام GetLogger (اسم السلسلة)
احصل على المسجل بالاسم المحدد ، وإذا لزم الأمر ، قم بإنشاء مسجل جديد للاسم. تم تسمية الاسم بشكل عام في هذا الفصل ، مثل:
Logger Static Logger = logger.getLogger (ServerWithLog4j.class.getName ())
2. اقرأ ملف التكوين
بعد الحصول على المسجل ، ستقوم الخطوة الثانية بتكوين بيئة log4j ، مع بناء الجملة على النحو التالي:
BasicConfigurator.configure (): تلقائيًا وسرعة استخدام بيئة Log4J الافتراضية.
PropertyConfigurator.Configure (سلسلة configfilename): قراءة ملفات التكوين المكتوبة باستخدام ملفات ميزات Java.
DomConfigurator.Configure (اسم ملف السلسلة): قراءة ملفات التكوين في نموذج XML.
3. أدخل معلومات السجل (معلومات سجل التنسيق)
عند اكتمال الخطوتين السابقتين ، يمكنك بسهولة إدراج عبارات التسجيل ذات المستويات ذات الأولوية المختلفة في أي مكان تريد تسجيله.
logger.debug (رسالة الكائن) ؛
logger.info (رسالة الكائن) ؛
logger.warn (رسالة كائن) ؛
logger.error (رسالة الكائن) ؛
2.3
يخضع كل مسجل لمستوى السجل (مستوى السجل) للتحكم في إخراج معلومات السجل. تنقسم مستويات السجل إلى:
ج: يتم استخدام أعلى مستوى لإغلاق جميع قطع الأشجار.
ب: يشير قاتلة إلى أن كل حدث خطأ حاسم سيؤدي إلى خروج التطبيق.
C: يشير الخطأ إلى أنه على الرغم من حدوث حدث خطأ ، إلا أنه لا يزال لا يؤثر على استمرار تشغيل النظام.
D: يشير الدفء إلى أنه سيكون هناك حالات خطأ محتملة.
E: المعلومات بشكل عام وعلى المستوى الخشن الحبيبات ، فإنه يؤكد على التشغيل الكامل للتطبيق.
F: يتم استخدام التصحيح بشكل عام على المستوى الدقيق وهو مفيد جدًا لتطبيقات تصحيح الأخطاء.
G: كل الحد الأدنى للمستوى ، يستخدم لفتح جميع قطع الأشجار.
يتم تعريف المستويات أعلاه في فئة org.apache.log4j.level. توصي Log4J فقط باستخدام 4 مستويات ، مع الأولوية من عالية إلى منخفضة ، وخيط ، تحذير ، معلومات وتصحيح. باستخدام مستوى السجل ، يمكنك التحكم في إخراج معلومات السجل على المستوى المقابل في التطبيق. على سبيل المثال ، إذا تم استخدام B ، فلن يتم طباعة جميع معلومات السجل الموجودة أسفل مستوى المعلومات (مثل Debug) في التطبيق.
4. استخدم مثيلات log4j في مشاريع الويب
يصف الرمز أعلاه التطبيق البسيط لـ log4j ، وفي الواقع ، باستخدام Log4J بسيط للغاية ومريح. بالطبع ، بالإضافة إلى طريقة التكوين أعلاه ، هناك أشياء أخرى ، مثل إنشاء تطبيق J2EE. في web.xml.
1. يستخدم استخدام Log4J لتطبيقات الويب بشكل أساسي: إنشاء servlet جديد ، والذي ينفذ التكوين لـ Log4J في وظيفة init. بشكل عام ، هو قراءة ملف التكوين. لذلك ، تحتاج إلى تكوين هذا servlet في web.xml ، وتعيين تحميل على 1.
2. هذا التكوين Servlet هو لقراءة ملف التكوين ثم استدعاء وظيفة التكوين. هناك سؤالان هنا: 1. تحتاج إلى معرفة مكان الملف ؛
3. يمكن تكوين موقع ملف التكوين في web.xml.
4. هناك عمومًا نوعان من أنواع الملفات ، أحدهما هو ملف خاصية Java ، والآخر هو ملف XML
المحتوى العام لملف التكوين: يمكن لـ LOG4J تحديد مستوى الحد الأدنى لمستوى سجل الإخراج ، وكذلك تنسيق تكوين الإخراج للسجل.
(1) إنشاء مشروع ويب ، الدليل النهائي للمشروع بأكمله هو كما يلي
(2) تكوين web.xml كما يلي:
<؟ .sun.com/xml/ns/javaee "xsi: schemalocation =" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0 .xsd "id =" webapp_id "version =" 3.0 "> <name-name> loglearning </display-name> <vishlet> <vervlet-name> log4jtestservlet </radle-name> . </servlet-class> <Ing-param> <Param-name> log4j-properties-location </param-name> <Param-value> /web-inf/classes/log4j.properties </param-value> </ init -Param> <load-on-startup> 1 </load-on-startup> </servlet> <servlet-mapping> <Sradlet-Name> log4jtestServlet </servlet-name> <Url-pattern>/test </ url -pattern> </servlet-mapping> </web-app>
(3) ملف التكوين log4j.properties
### تعيين مستويات السجل ###
log4j.Rootlogger = debug ، stdout ، d ، e
log4j.appender.stdout = org.apache.log4j.consoleppender
log4j.appender.stod.target = system.out
log4j.appender.stdout.layout = org.apache.log4j.patternlayout
log4j.appender.stdout.layout.conversionpattern = [٪ -5p] ٪ d {yyyy-mm-dd hh: mm: ss ، sss} الطريقة: ٪ l ٪ m ٪ n
log4j.appender.d = org.apache.log4j.dailyrollingfileappender
log4j.appender.d.file = f: //logs/log.log
log4j.appender.d.append = true
log4j.appender.d.threshold = debug
log4j.appender.d.layout = org.apache.log4j.patternlayout
log4j.appender.d.layout.conversionpattern = ٪ -d {yyyy-mm-dd hh: mm: ss} [٪ t: ٪ r]-[٪ p] ٪ m ٪ n
log4j.appender.e = org.apache.log4j.dailyrollingfileappender
log4j.appender.e.file = f: //logs/error.log
log4j.appender.e.append = true
log4j.appender.e.threshold = خطأ
log4j.appender.e.layout = org.apache.log4j.patternlayout
log4j.appender.e.layout.conversionpattern = ٪ -d {yyyy-mm-dd hh: mm: ss} [٪ t: ٪ r]-[٪ p] ٪ m n
(4) تهيئة Servlet بمجرد أن تأتي حاوية الويب
log4jinitservlet.javapack com.mucfc ؛ import * Servlet Application Class Log4JinitServlet * /webservlet ("/ log4jinitservlet") ) ؛ ") ؛ String log4jlocation = config.getInitParameter (" log4j-properties-location ") ؛ servletContext sc = config.getServletContext () ؛ if (log4jlocation == nul l) {system.err.println (" *** no log4j- خصائص ملف تهيئة توصيلية ، لذلك استخدم BasicConfigurator لتهيئة ") ؛ BasicConfigurator.Configure () ؛ ) ؛ ** " + log4jprop +" لم يتم العثور على الملف ، بحيث تم تهيئته باستخدام BasicConfigurator ") ؛ BasicConfigurator.Configure () ؛}} super.init (config) ؛} /*** seee httpservlet#dogge (httpservletrequest est ، httpservletresponse استجابة) */ doget void المحمي (طلب httpservletrequest ، httpservletresponse) يلقي servletexception ، ioException {// todo tuto method stub}/ ** DOPOST (طلب httpservletrequest ، استجابة httpservletresponse) رمي s servleTexception ، ioException {// todo method method adct}}Call log log4jtestServlet ، Java
Package Com.Mucfc ؛ http .httpservletrequest ؛ SerialVersionuid = 1L * * * * see servlet#init (servletconfig) */ public void init (servletconfig config) يلقي servletexception {// tod DOGED VOID DOGET (HTTPSERVERKQUEST REPORT ، استجابة httpservletponse) ServleTexception ، IOException {// سجل معلومات Debug Logger.debug ("هذا هو Debug M essage.") ؛ الرسالة. استجابة httpservletresponse) يلقي servletexception ، ioexceptionالتالي قيد التشغيل ، دعنا نرى النتائج:
نتيجة الإخراج:
5. استخدم log4j في الربيع
هنا نحتاج إلى تنفيذ استخدام الربيع في مشاريع الويب لاستخدام Log4J
(1) الاتصال بالمشروع أعلاه ثم استيراد حزمة الربيع
(2) web.xml أضيفت
<!-تعيين دليل الجذر-> <context-param> <Param-Name> WebAppRootkey </param-name> <Param-value> webapp.root </param-value> </suctext-param> <context- param> <Param-name> log4jConfigLocation </param-name> <Param-value> /web-inf/classes/log4j.properties </param-value> </suctext-param> <!-3000 يقوم مؤشر الترابط بمسح ملف التكوين كل 60 ثانية ؛ > </context-param> <stanker> <cleder-class> org.springframework.web.util.log4jconfigListener </leader-class> </stanter>
المحتوى بأكمله كما يلي:
<؟ .sun.com/xml/ns/javaee "xsi: schemalocation =" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0 .xsd "id =" webapp_id "version =" 3.0 "> <name-name> loglearning </display-name> <vishlet> <vervlet-name> log4jtestservlet </radle-name> . mucfc.log4jinitservlet </servlet-class> <Ing-param> <param-name> log4j-properties-location </param-name> <Param-value> /web-inf/classes/log4j.p roperties </param- value> </ith-param> <load-on-startup> 1 </load-on-startup> </servlet>-> <radlet-mapping> <stervlet-name> log4jtestservlet </servlet-name> <url -نمط>/اختبار </url-pattern> </stervlet mapping> <!-تحميل حاوية الربيع-> <Stexer> <stlecter-class> org.springframework.web.context.contextloaderListener </list enier-class > </stanker> <context-param> <Param-name> contextConfigLocation </param-name> <Param-value> classpath: applicationContext.xml </parm-value> </suctext-par Am> <!-set دليل الجذر--> <context-param> <Param-Name> webapprootkey </param-name> <param-value> webapp.root </parm-value> </suctext-param> <context-param> <param- name> log4jConfigLocation </param-name> <Param-value> /web-inf/classes/log4j.properties </param-value> </sectext-param> <!-3000 تعني فتح مؤشر ترابط مراقبة ملف كل 60 ثانية. param> <angeer> <Sexterer-Class> org.springframework.web.util.log4jconfigListener </leader-class> </stanker> </web-app>
هنا log4jinitservlet.java تعادل كونه عديم الفائدة.
(2) ApplicationContext.xml
لا يوجد محتوى:
<؟ /2001/xmlschema-instance "xmlns: context =" http://www.springframework.org/schema/context " "http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.2.xsdhtp://www.springframework.org/samephtp: // wwww . springframework.org/schema/aop/spring-aop-3.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/cont ext/spring-context-3.2.xsd "> </beans>
(3) بهذه الطريقة ، سيتم بدء السجل مع نافذة الربيع
بمجرد تشغيل البرنامج ، سيتم طباعة السجل تلقائيًا
log.log
error.log فارغ لأنه يطبع المعلومات فقط فوق مستوى الخطأ
أدخل http: // localhost: 8080/loglearning2/test by the browser
ثم افتح الملف
انتهى البرنامج التعليمي التفصيلي على Java Log4j هنا.