تقدم هذه المقالة بشكل أساسي تكوين LOGBACK SLF4J في هندسة Java.
قبل تقديم تكوين تسجيل الدخول SLF4J+، قم أولاً بتقديم تسجيل تسجيل الدخول لمكون السجل.
(1) مقدمة وتكوين تسجيل تسجيل مكونات السجل
1. مقدمة في Logback
Logback هو مكون آخر مفتوح المصدر مصمم من قبل مؤسس Log4J. logback当前分成三个模块:logback-core,logback- classic和logback-access。 logback-core是其它两个模块的基础模块。 logback-classic是log4j的一个改良版本。 بالإضافة إلى ذلك ، ينفذ كلاسيك كلاسيك بالكامل SLF4J API بحيث يمكنك بسهولة استبداله بأنظمة تسجيل أخرى مثل تسجيل Log4J أو JDK14. logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。 Logback是要与SLF4J结合起来用两个组件的官方网站如下:
logback的官方网站: http://logback.qos.ch
SLF4J的官方网站:http://www.slf4j.org
本文章用到的组件如下:请自行到官方网站下载!
وصول المسجل -0.0.jar
كلاسيك التسجيل -0.0.jar
تسجيل الغلاف -1.0.0.JAR
SLF4J-API-1.6.0.JAR
2. أسباب تسجيل الدخول لاستبدال log4j:
Logback و Log4J متشابهان للغاية. فيما يلي بعض مزايا التسجيل على log4j:
1. تنفيذ أسرع لإعادة كتابة kernel للازغ ، ويزداد الأداء بأكثر من 10 مرات على بعض مسارات التنفيذ الرئيسية. علاوة على ذلك ، لا يحسن Logback الأداء فحسب ، بل يحتوي أيضًا على أحمال ذاكرة أقل تهيئًا.
2. تم اختبار تسجيل تسجيل الدخول الكامل للغاية لبضع سنوات ، ساعات لا تحصى. Logback的测试完全不同级别的。 من وجهة نظر المؤلف ، يعد هذا سببًا بسيطًا وهامًا لاختيار تسجيل الدخول بدلاً من Log4J.
3. يتم تنفيذ كلاسيك مسجل بشكل طبيعي مع SLF4J تسجيل الدخول الكلاسيكي لتحقيق SLF4J. في استخدام SLF4J ، لا يمكنك أن تشعر كلاسيكيات تسجيل الدخول. علاوة على ذلك ، نظرًا لأن SLF4J ينفذ بشكل طبيعي للغاية ، فإن التبديل إلى Log4J أو غيره أمر سهل للغاية.
4. موقع وثيقة رسمية كاملة للغاية لديه أكثر من 200 صفحة من المستندات.
5. إعادة تحميل ملف التكوين تلقائيًا كتعديل لملف التكوين ، يمكن للاسجيل كلاسيك إعادة تحميل ملف التكوين تلقائيًا. عملية المسح سريعة وآمنة ، لا تحتاج إلى إنشاء مؤشر ترابط مسح آخر. تضمن هذه التقنية تمامًا أن التطبيق يمكن أن يعمل في بيئة JEE.
6. ليليث ليليث هو مراقب لحادث السجل ، على غرار منشار Log4J. يمكن ليليث أيضًا معالجة كميات كبيرة من بيانات السجل.
7. وضع الحذر والاسترداد الودي للغاية في وضع الحذر ، يتم تشغيل مثيلات متعددة في FileAppender تحت JVMs متعددة ، ويمكنها كتابة نفس ملف السجل بأمان. سيكون لدى رولينجفيلياس بعض القيود. يمكن لـ FilePender's Logback ودراساته الفرعية بما في ذلك RollingFileAppender التعافي من استثناءات الإدخال/الإخراج ودية للغاية.
8. يمكن لملفات التكوين التعامل مع المواقف المختلفة. تعد ملفات التكوين هذه اختلافات صغيرة فقط ، والتي يمكن تنفيذها والتنفيذ ، بحيث يمكن أن يتكيف ملف التكوين مع بيئات متعددة.
9. المرشحات (المرشحات) في بعض الأحيان ، هناك حاجة إلى مشكلة ، وهناك حاجة إلى سجل. في log4j ، تقليل مستوى السجل فقط ، ولكن هذا سيؤدي إلى الكثير من السجلات ويؤثر على أداء التطبيق. في Logback ، يمكنك الاستمرار في الحفاظ على مستوى السجل وإزالة بعض الحالات الخاصة. لتحقيق هذه الوظيفة ، تحتاج فقط إلى إضافة 4 أسطر من تكوين XML. يمكنك الرجوع إلى mdcfilter.
10. SiftingAppener (APPENDER متعدد الوظائف للغاية) يمكن استخدامه لتقسيم ملف السجل وفقًا لأي معلمات تشغيل معينة. على سبيل المثال ، يمكن لـ SiftingAppender التمييز بين جلسة المستخدم التي تتبع جلسة المستخدم ، ومن ثم سيكون لكل مستخدم ملف سجل.
11. ضغط السجل RollingFilePender تلقائيًا.压缩是个异步过程,所以甚至对于大的日志文件,在压缩过程中应用不会受任何影响。
12
13. قم بإزالة ملف السجل القديم تلقائيًا عن طريق تعيين خاصية MaxHistory الخاصة بـ TimeBasedRollingPolicy أو SizeAndTimeBasedFnatp. إذا تم تعيين MaxHistory 12 ، فسيتم إزالة ملفات السجل التي تجاوزت 12 شهرًا تلقائيًا.
باختصار ، لا يزال تسجيل الدخول أفضل من Log4J.
3. مقدمة لتكوين Logback
1. المسجل ، الجسد والتخطيط
يربطه المسجل ، كمسجل للسجل ، على السياق المقابل الذي يتم استخدامه ، بشكل أساسي لتخزين كائنات السجل.
يستخدم Appender بشكل أساسي لتحديد وجهة سجل السجل.
التصميم هو المسؤول عن إخراج الحدث في سلسلة من معلومات السجل المنسقة.
2. سياق المسجل
يرتبط كل مسجل بـ LoggerContext. تم الحصول على جميع المسجلات الأخرى أيضًا من خلال الطريقة الثابتة لفئة GetLogger org.slf4j.loggerfactory. تم تسمية طريقة getLogger بواسطة Logger. استخدم نفس الاسم لاستدعاء طريقة LoggerFactory.GetLogger.
3. ميراث المستويات والمستويات الفعالة
يمكن تعيين المسجل. تشمل المستويات: تتبع ، تصحيح ، معلومات ، تحذير ، والخطأ ، المحدد في CH.QOS.LOGBACK.CLASTIC.LEVEL. إذا لم يتم تعيين المسجل ، فسوف يرث المستوى من أقرب سلف لمستوى التوزيع. المستوى الافتراضي لجذر لوجبر هو تصحيح.
4. طريقة الطباعة وقواعد الاختيار الأساسية <BR /> تحدد طرق الطباعة مستوى الطلب. على سبيل المثال ، إذا كان L هو مثيل مسجل ، فإن العبارة L.Info ("..") هي عبارة سجل مع معلومات مستوى. يتم تمكين مستوى طلب السجل عندما يكون أعلى من أو يساوي المستوى الصحيح من المسجل الخاص به ، وإلا فإنه يطلق عليه تعطيل. مستوى طلب السجل هو p ، والمستوى الصحيح للمسجل هو Q.
هذه القاعدة في قلب السوس. فرز المستوى هو: تتبع <debug <info <warn <error
4. التكوين الافتراضي للوجود <BR /> إذا كانت ملفات التكوين لاختبار تسجيل الدخول إلى test.xml و Logback.xml غير موجودة ، فسيقوم Logback بالاتصال BasicConfigurator افتراضيًا لإنشاء تكوين مصقول. لتقليل التكوين الذي يتكون من موحد المرتبط بمسجل الجذر.输出用模式为%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 的PatternLayoutEncoder 进行格式化。 المستوى الافتراضي لجذر لوجبر هو تصحيح.
1. ملف التكوين من الظهور
بناء الجملة لملف تكوين السوج مرن للغاية. بسبب المرونة ، لا يمكن تعريف مخطط DTD أو XML. ومع ذلك ، يمكنك وصف الهيكل الأساسي لملف التكوين بهذه الطريقة: ابدأ بـ <simpuration> ، هناك عناصر صفر أو أكثر <Ppender> ، عناصر صفر أو أكثر ، وحد أقصى من عناصر <Root>.
2. خطوات التكوين الافتراضي للأسود
(1).
(2).
(3).
3. logback.xml ملف
<إصدار XML؟ appender name = "stdout"> <!-سجل الإخراج الترميز-> <Choding> utf-8 </ishoding> <laayout> <!-إخراج التنسيق: ٪ d يعني تاريخ ، ٪ مؤشر ترابط اسم مؤشر الترابط ، ٪-5Level: مستوى المستوى 5 من الحرف من العرض الأيسر 5 عرض الحرف msg: رسالة السجل ، ٪ n هو رمز تغيير-> <STERNT> ٪ d {yyyy-mm-dd hh: mm: ss.sss} [٪ thread] ٪- 5Level ٪ Logger {50}-٪ msg ٪ n </pattern> </layout> </appender> <!-إنشاء ملفات سجل كل يوم-> <ppender name = "file" الترميز> <RollingPolicy> <!-إخراج اسم الملف بواسطة ملف السجل-> <FileNamepattern> $ {log_home} /myapp.log. ٪ d {yyyy-mm-dd}. /maxhistory> </rollingpolice> <rayout> <!-الإخراج المصمم: ٪ d يمثل التاريخ ، يمثل مؤشر الترابط اسم مؤشر الترابط ، ٪ d يمثل اسم مؤشر الترابط ، ٪ -5LEVEL: عرض 5 أحرف معروضة من ٪ msg ٪: رسالة السجل ، ٪ n هي حرف تغيير-> <turday> ٪ d {yyyy-mm-dd hh: mm: ss.sss} [٪ thread] ٪ -5level ٪ logger {50}-٪ msg ٪ n </pattern > </syrayout> <!-أكبر حجم لملف السجل-> <ReggeringPolice> <MaxFilesize> 10mb </akxfilesize> </reggeringpolice> </appen der> <!-إظهار المعلمات لـ Hibernate SQL مخصصة لتخصيص hibernate -> <logger name = "Organnate.type.descriptor.sql.basicbinder =" Trace " /> <logger =" org.hibernate. org.hibernate.sql "level =" def " /> <log. مستوى إخراج السجل-> <root level = "info"> <ppender-ref = "stdout" /> <ppender-ref Ref = "file" /> </roun = "db"> <! databasEname </url> <serper> root </suster> <sword> root </suredpoord> </dataSource> </oncelnectionource> </appender> -> </configuration >> </configuration >> </configuration>> </configuration >>五、在程序用引用Logback
package com.stu.system.action ؛ الفصل) ؛
بعد ذلك ، دعنا نقدم تكوين تسجيل الدخول SLF4J+في مشروع Java.
1.
<Rependency> <roupend> org.slf4j </rougiD> <StifactId> slf4j-api </stifactid> <splection> 1.7.10 </version> </repreadency> <StifactId> كلاسيك تسجيل الدخول </insifactid> <الإصدار> 1.1.2 </الإصدار> </deendecy> <g.qos. /الإصدار> </التبعية>
2. قم بإنشاء ملف تكوين Logback.xml جديد في دليل ClassPath
<؟ Scanperiod: يحدد الفاصل الزمني لمراقبة ما إذا كان هناك تعديل لملف التكوين. الفاصل الزمني الافتراضي هو دقيقة واحدة. Debug: عندما يتم تعيين هذه السمة على TRUE ، سيتم طباعة معلومات السجل الداخلي للأسود للتحقق من حالة تشغيل Logback في الوقت الفعلي. القيمة الافتراضية خاطئة. -> <configuration scan = "false" scanperiod = "60 ثانية" debug = "false"> <!-حدد الدليل الجذر للسجل-> <property name = "log_home" value = "/app/log " /> <!-تحديد اسم ملف السجل-> <property name =" appname "value =" netty "> < / property> <!-ch.qos.logback.core.consolePender يشير إلى إخراج وحدة التحكم-> <appender name = "stdout"> <croding> utf-8 </ishoding> <!-تنسيق إخراج السجل: ٪ d يعني تاريخ ، موضوع ٪ يشير إلى اسم مؤشر الترابط ، ٪-5Level: مستوى 5 أحرف من 5 أحرف من ٪ ٪ ٪٪٪٪٪٪ 5 Width ٪٪٪٪٪ Logger {50} يعني أن اسم المسجل هو 50 حرفًا ، وإلا فسيتم تقسيمه وفقًا للفترة. %msg: log message, %n is a change of lines-> <layout> <Pattern> %d {yyyy-mm-dd Hh: mm: ss.sss} [ %thread] %-5level %logger {50}- ٪ msg ٪ n </pattern> </layout> </appender> <!- قم بالتمرير لتسجيل الملف ، أولاً سجل السجل إلى الملف المحدد ، وعندما يتم استيفاء شرط معين ، قم بتسجيل السجل إلى الملفات الأخرى- -> <appender name = "ApproGappender"> <Choding> utf-8 </ishoding> <!-اسم ملف السجل المعين-> <ilem> $ {log_home}/$ {appname} .log </file> < -> <RollingPolicy> <!-موقع التخزين واسم الملف الذي تم إنشاؤه أثناء Rolling ٪ D {Yyyy-MM-DD}: Roll Roll حسب اليوم. AppName}-٪ d {yyyy-mm-dd}-٪ على افتراض أنه يتم لفه كل يوم وأن ماكسستوري هو 365 ، يتم حفظ آخر ملف 365 يومًا فقط لحذف الملف القديم من قبل. لاحظ أنه يتم حذف الملفات القديمة ، وسيتم أيضًا حذف الدليل الذي تم إنشاؤه للأرشيفات. -> <MaxHistory> 365 </maxhistory> <!-يتجاوز حجم ملف السجل maxfilesize ، ويجب تكوين ملف السجل وفقًا للنسبة المذكورة أعلاه إلى SizeBasedTricgepolicy. timebasedfilenamingandtriggeringpolicy> <MaxFilesize> 100mb </akxfilesize> </timebasedfilenamingan dtriggeringpolicy> </rollingpolic يشير عرض الأحرف اليسرى 5 حرف ٪ {50} إلى أن اسم المسجل هو 50 حرفًا ، وإلا سيتم تقسيمه وفقًا للفترة. ٪ msg: رسالة السجل ، ٪ n هو تغيير الخطوط-> <laayout> <datple> ٪ d {yyyym-mm-dd hh: mm: ss.sss} [٪ ٪]-[٪ -5Level] [٪ logger {50}: ٪ Line]- ٪ msg ٪ n </pattern> </layout> </appender> <!- يتم استخدام المسجل بشكل أساسي لتخزين كائنات السجل. النصف الأول من مستوى الحزمة: مستوى السجل المراد تسجيله ، بما في ذلك التتبع <debug <info <warn <error adda: الوظيفة هي ما إذا كان الأطفال يستخدمون الزائدة التي تم تكوينها بواسطة Rootlogger للإخراج ، فهذا يعني أنه يتم استخدام جاذبية المسجل الحالي-ref ، صحيح: appender-ref و rootlogger للمسجل الحالي-ref و rootlogger-refs فعالة-> <!-logger-hibernate-> <logger name = "org.hibernate" = "خطأ" /> < "Level =" info "additivity =" true "> <ppender-ref Ref =" ApplogAppender " /> </dgger> <!-الجذر والمسجل هو العلاقة بين الأب والابن. إذا لم يكن هناك تعريف خاص ، فهو هو الافتراضي. --> <root level="info"> <appender-ref ref="stdout" /> <appender-ref ref="appLogAppender" /> </root></configuration>