عند تطوير برنامج الخلفية وإطلاقه ، يتم استخدام تسجيل معلومات السجل وتسجيل سجل السجل بشكل عام. أثناء التطوير ، يمكن لطباعة معلومات السجل تحديد موقع المشكلة بسرعة ومساعدتنا على التطور بسرعة. في حالة حدوث خطأ أو خطأ بعد أن يكون البرنامج عبر الإنترنت ، هناك حاجة إلى سجلات السجل للعثور على المشكلة.
يمكن أن يدمج SPRING BOOT العديد من أنظمة التسجيل المختلفة ، من بينها APACHE TOG4J الأكثر شيوعًا ، و LOG4J 2 هو إصدار تم ترقيته من LOG4J ، والذي قام بالعديد من التحسينات المهمة مقارنة بـ Log4J 1.x. لذلك ستتحدث هذه المدونة بشكل مباشر عن كيفية دمج SPRING BOOT وتكوين Log4J2.
1. استيراد حزمة log4j2
إذا كنت تستخدم Gradle ، فأضف التبعيات التالية في ملف build.gradle. يتم استخدام طريقة Gradle في رمز العينة.
التبعيات {// log4j2 compile "org.apache.logging.log4j: log4j-api: 2.8" compile "org.apache.logging.log4j: log4j-core: 2.8"إذا كنت تستخدم Maven ، فأضف التبعيات التالية في ملف pom.xml.
<Rependencies> <Rependency> <roupiD> org.apache.logging.log4j </rougiD> <StifactId> log4j-api </shintifactid> <sophy> 2.8 </sperive> </respensidency> <sropency> org.apache.logging.log4j </rougeid> <soph> 2.8 </version> </sependency> <reperency> <roupiD> com.lmax </groupId> <StifactId> disruptor </shintifactid> <splection> 3.3.6 </version> </sependency> </repreadencies>
2. إضافة ملف تكوين log4j2
قم بإنشاء ملف log4j2.xml في الدليل الجذر لملف موارد الموارد الخاص بالمشروع ونسخ الكود التالي في الملف.
<؟ لا يمكن تعيينه. عندما يتم تعيينه على تتبع ، سترى العديد من المخرجات التفصيلية داخل Log4J2. يمكن تعيينه على OFF (OFF) أو خطأ (معلومات خطأ الإخراج فقط)-> <IGUNCETSTATUS = "OFF"> <!-دليل ملفات السجل وتكوين دليل الملف المضغوط-> <Perferies> <Pertorname = "filename">/home/kylin/log/knight/spring_log </propertyname = "filegz" </properties> <appenders> <!-التكوين لسجلات وحدة التحكم في الإخراج-> <solloName = "Console" target = "system_out"> <!-وحدة التحكم فقط تخرج المعلومات عند المستوى وما فوق (onmatch) ، وغيرها من عمليات الرفض المباشر (onMismatch)-> <thersholdfilterlevel = "inmatch = on" onmismatch " <dateMlayOutPattern = "٪ d {hh: mm: ss.sss} [٪ t] ٪ -5Level ٪ logger {36}- ٪ msg ٪ n"/> </sonsole> <!- طباعة جميع المعلومات. في كل مرة يتجاوز الحجم الحجم ، سيتم تخزين سجل هذا الحجم تلقائيًا في المجلد الذي تم إنشاؤه بحلول العام وضغطه كأرشيف-> <LollingRandomAccessFilename = "Infofile" fileName = "$ {filename} /web-info.log" forgle " filepattern = "$ {filegz}/$$ {date: yyyy-mm}/app- ٪ d {mm-dd-yyyy}-٪ ٪ msg ٪ xex ٪ n "/> <comiCies> <TimebasedTriggeringPolicyInterval =" 6 "modulate =" true "/> <SizeBasedTriggeringPolicys =" 50 mb "/> </sidiCATACH> <! <thresholdfilterlevel = "info" onMatch = "قبول" onMismatch = "deny"/> </filters> <!-حدد الحد الأقصى لعدد الحزم المضغوطة في اليوم ، الافتراضي 7 ، إذا كان يتجاوز الحزمة السابقة ، فسيتم تسجيله فوقه- <LollingRandomAccessFiLename = "errorfile" filename = "$ {fileName} /web-error.log" foreriateflush = "false" filepattern = "$ {filegz}/$$ {date: yyyy-mm}/app- ٪ d <dateMlayOutPattern = "٪ d {yyyyy-mm-dd 'في' hh: mm: ss z} [٪ t] ٪ -5Level ٪ logger {36} ٪ l ٪ m-٪ msg ٪ xex ٪ n"/> <siveBalists> <timebasedtriggeringpolicyInterval = "6" mb "/> </silicies> <filters> <!-سجل معلومات مستوى الخطأ فقط-> <thresholdfilterlevel =" error "onMatch =" قبول "onMismatch =" deny "/> </filters> <!-حدد عدد الحزم المضغوطة في اليوم الواحد ، إذا كان يتجاوز واحد سابقًا ، </rollingrondomaccessfile> </appenders> <!-حدد الحد الأقصى لعدد الحزم المضغوطة يوميًا ، والافتراضي هو 7 ، وسيتم كتابة الحرف السابق-> <defaultrolloverstrategymax = "50"/> </rollingrandomaccessfile> </appenders> <! يتطلب asyncroot - التسجيل غير المتزامن - الدعم من LMAX Disruptor -> <Shyncrootlevel = "info" additivity = "false"3. اكتب Log4J2 فئة المساعدة
بعد إجراء التكوين أعلاه ، يمكننا كتابة فئة مساعدة لجعلنا أكثر ملاءمة بالنسبة لنا لاستخدام Log4J2 لتسجيل السجلات.
قم بإنشاء ملف فئة L.Java في حزمة Utils.
package com.spring.log4j2.Utils ؛ import org.apache.logging.log4j.logmanager ؛ import org.apache.logging.log4j.logger ؛/*** تسجيل الدخول الفئة المساعدة** التي تم إنشاؤها بواسطة kylin في 2017/5/11. */public classl {private static final logger = logManager.getLogger () ؛ لا يمكن إنشاء مثيله لـ Privatel () { / * } publicStaticLoggRgetLogger () {return logger ؛ } publicStaticVoidt (String msg) {logger.trace (msg) ؛ } publicStaticVoidd (String msg) {logger.debug (msg) ؛ } publicStaticVoidi (String msg) {logger.info (msg) ؛ } publicStaticVoidw (String msg) {logger.warn (msg) ؛ } publicStaticVoide (String msg) {logger.error (msg) ؛ }}بعد كتابة الفئة المساعدة ، يكون من السهل جدًا استخدامه ، ويمكن استخدامه بسهولة من خلال الكود التالي.
controllerpublic classWebController {REquestMapping ("/") PublicStringIndex () {String msg = "configuration واستخدام log4j2 في SPRING BOOT Series" ؛ LT (MSG) ؛ LD (MSG) ؛ لي (MSG) ؛ LW (MSG) ؛ LE (MSG) ؛ إرجاع "فهرس" ؛ }}يكتب الفئة المساعدة هنا بعض طرق الاستخدام الأساسية ، يمكنك تخصيصها وفقًا لاحتياجاتك وإضافة المزيد من الطرق الإضافية. بالنسبة للطرق غير المقدمة في فئة المساعد ، يمكنك أيضًا استخدام طريقة L.GetLogger () للحصول على مثيل المسجل لاستخدامه.
4. التحقق من نتيجة
تصنيف مستوى السجلات: تتبع <debug <info <warn <error <fatal.
لأنه يتم تعيين المستوى في Log4J2 الخاص بي على مستوى المعلومات. لذلك ، يمكن رؤية ثلاثة مستويات فقط من المعلومات ، والتحذير ، والخطأ في معلومات الطباعة (لا تتم طباعة المعلومات على المستوى المميت ، وإلا يمكن رؤيتها).
تظهر معلومات الطباعة في الشكل أدناه:
في الوقت نفسه ، تم إنشاء ملف سجل في نظام الكمبيوتر ، كما هو موضح في الشكل أدناه:
من خلال مراقبة المسار ، يمكنك أن تجد أن هذا المسار هو بالضبط المسار المحدد في log4j2.xml:
<!-دليل ملف السجل وتكوين دليل ملفات الملف المضغوط-> <Properties> <PurpertyName = "filename">/home/kylin/log/knight/spring_log </propect
5. أكثر
عنوان github log4j2: https://github.com/apache/logging-log4j2
عنوان رمز نموذج هذا البرنامج التعليمي: https://github.com/dkylin/springboot-sample/tree/springboot-log4j2
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.