في تطبيقات Java ، تنقسم السجلات عمومًا إلى المستويات الخمسة التالية:
يستخدم SPRING BOOT تسجيلات المشاع من Apache كإطار تسجيل داخلي. إنها مجرد واجهة سجل. في التطبيقات الفعلية ، من الضروري تحديد تطبيق السجل المقابل لهذه الواجهة.
تطبيق السجل الافتراضي لـ SpringBT هو تسجيل Java Util ، وهو حزمة سجل مدمجة في JDK. بالإضافة إلى ذلك ، يدعم SpringBT أيضًا تطبيقات السجل الشائعة جدًا مثل Log4J و Logback.
يشار إلى تطبيقات السجل أعلاه مجتمعة كأطر السجل
دعنا نمارسه أدناه!
باستخدام البرنامج المساعد لتسجيل التمهيد الربيع
أضف التكوين أولاً إلى ملف Application.Properties:
logging.level.root = info
رمز وحدة التحكم على النحو التالي:
حزمة com.hansonwang99.controller ؛ استيراد com.hansonwang99.k8SresCtrLapPlication ؛ استيراد org.slf4j.logger org.springframework.web.bind.annotation.requestmapping ؛ استيراد org.springframework.web.bind.annotation.restController ؛@restController@requestmapping ("/testlogging") فئة publictestcontroller {private static logger = loggerfactory.getLogger (K8SresCtrLapPlication.class) ؛ getMapping ("/hello") السلسلة العامة Hello () {logger.info ("Test Logging ...") ؛ العودة "مرحبا" ؛ }}نتائج التشغيل
نظرًا لأن مستوى السجل يتم تعيينه على المعلومات ، سيتم طباعة معلومات السجل التي تحتوي على معلومات وما فوق
كما يتضح هنا ، فإن معظم سجلات المعلومات تأتي من إطار عمل SpringBT نفسه. إذا أردنا حظرها ، فيمكننا تعيين مستوى السجل على الخطأ أولاً ، حتى لا تتم طباعة معلومات المعلومات الخاصة بالإطار نفسه. ثم قم بتعيين الحزمة المحددة في التطبيق على سجل مستوى التصحيح ، بحيث يمكنك فقط رؤية سجلات مستوى التصحيح في الحزمة التي تهتم بها.
يتحكم في مستوى السجل لحزمة معينة
تغيير التكوين في application.yml
التسجيل: المستوى: الجذر: خطأ com.hansonwang99.controller: Debug
من الواضح أن مستوى سجل الجذر قد تم تعيينه على خطأ ، ثم يتم تعيين مستوى السجل لحزمة com.hansonwang99.controller على تصحيح الأخطاء ، مما يعني: أولاً حظر جميع الإعدادات ثم السماح بالإعدادات الفردية.
رمز وحدة التحكم
package com.hansonwang99.controller ؛ استيراد org.slf4j.logger ؛ استيراد org.slf4j.loggerfactory ؛ استيراد org.springframework.web.bind.annotation.getMapp org.springframework.web.bind.annotation.restController ؛@restController@requestMapping ("/testlogging") الفئة العامة loggingTestController {private logger logger = loggerfactory.getLogger (this.getClass ()) ؛ getMapping ("/hello") السلسلة العامة Hello () {logger.info ("Test Logging ...") ؛ العودة "مرحبا" ؛ }}نتائج التشغيل
يمكن ملاحظة أن الإطار نفسه يحتوي على جميع سجلات مستوى المعلومات مخفية ، ويتم طباعة السجلات في الحزمة المحددة بنجاح وفقًا للمستوى.
سجلات الإخراج إلى ملف
التسجيل: المستوى: الجذر: خطأ com.hansonwang99.controller: debug ملف: $ {user.home} /logs/hello.logنتائج التشغيل
باستخدام تسجيل حذاء الربيع ، وجدنا أنه على الرغم من أن السجل قد تم إخراجه إلى الملف ، إلا أنه سيتم طباعة نسخة في وحدة التحكم. وجدنا أن استخدام org.slf4j.Logger لا يمكن حل هذه المشكلة
إطار سجل log4j المتكامل
إضافة تبعيات في pom.xml
<Rependency> <roupled> org.springframework.boot </rougiD> <intifactid> Spring-Boot-Starter-Web </stifactid> <Svisplusions> <Section> <roucid> org.springframework.boot </roucidid> <Srifactid> spring-b logging OOT-starter </stifactid> </section> </sivesions> </premitency> <reperency> <roupiD> org.springframework.boot </groupid> <StifactId> Spring-boot-Starter-Log4J2 </shintifactid> </rependency>
أضف ملف log4j2.xml في دليل الموارد ، والمحتوى كما يلي:
<؟ </espenders> <loggers> <root level = "error"> <appender-Ref Ref = "file"/> </round> <logger name = "com.hansonwang99.Controller" level = "debug"/> </loggers> </ispixuration>
يبقى الرمز الآخر كما هو
وجد تشغيل البرنامج أن وحدة التحكم لا تحتوي على سجل ، وهناك محتوى في ملف Hello2.log ، والذي يتماشى مع توقعاتنا:
وتنسيق السجل يطابق التعريف في pattern="%d{HH:mm:ss,SSS} %p %c (%L) - %m%n"
يأخذ Log4J مزيد من الممارسة
تكوين pom.xml:
<Rependency> <roupled> org.springframework.boot </rougiD> <intifactid> Spring-Boot-Starter-Web </stifactid> <Svisplusions> <Section> <roucid> org.springframework.boot </roucidid> <Srifactid> spring-b logging OOT-starter </stifactid> </section> </sivesions> </premitency> <reperency> <roupiD> org.springframework.boot </groupid> <StifactId> Spring-boot-Starter-Log4J2 </shintifactid> </rependency>
log4j2.xml التكوين
<؟ pattern = "[٪ d] [٪ t] [٪ p] [٪ l] ٪ m ٪ n"/> </sonsole> <rollingfile name = "RollingFileInfo" fileName = "$ {log_path} /info.log" filepattern = "$ {log_path}/$$ {date: yyyy-mm}/info- ٪ d {yyyy-mm-dd}-٪ pattern = "[٪ d] [٪ t] [٪ p] [٪ c: ٪ l] ٪ m ٪ n" /> <سياسات> <!-أرشيف الملفات اليومية-> <StiveBasedTriggeringPolicy الفاصل الزمني = "1" modulate = "true" /> <! <defaultrolloverstrategy compressionlevel = "0" max = "10"/> </rollingfile> <llingfile name = "RollingFileWarn" fileName = "$ {log_path} /warn.log" filepattern = "$ {log_path}/$$ {date: yyyy-mm}/warn- ٪ d {yyyy-mm-dd}-٪ pattern = "[٪ d] [٪ t] [٪ p] [٪ c: ٪ l] ٪ m ٪ n" /> <سياسات> <!-أرشيف الملفات اليومية-> <StiveBasedTriggeringPolicy الفاصل الزمني = "1" modulate = "true" /> <! <defaultrolloverstrategy compressionlevel = "0" max = "10"/> </rollingfile> <llingfile name = "RollingFileRor" fileName = "$ {log_path} /error.log" filepattern = "$ {log_path} /$$ {date: yyyy-mm} /error- ٪ d {yyyy-mm-dd}-٪ <timeBasedTriggeringPolicy interval = "1" modulate = "true"/> <!-الحد من حجم الملف الواحد-> <SizeBasedTriggeringPolicy size = "2 mb"/> </solicies> <!-الحد من عدد الملفات يوميًا-> Level = "Info"> <appender-Ref Ref = "Console" /> <appender-ref Ref = "RollingFileInfo" /> <appender-Ref Ref = "RollingFileWarn" /> <appender-Ref Ref = "RollingFileRror" /> < /root> < /loggers> < /configuration>رمز وحدة التحكم:
حزمة com.hansonwang99.controller ؛ استيراد org.apache.logging.log4j.logmanager ؛ استيراد org.apache.logging.log4j.logger ؛ استيراد org.springframework.web.bind.annotation.getMapping ؛ استيراد org.springframework.webind. org.springframework.web.bind.annotation.restController ؛@restController@requestMapping ("/testlogging") الفئة العامة loggingTestController {private final logger = logmanager.getLogger (this.getClass ()) ؛ getMapping ("/hello") السلسلة العامة Hello () {for (int i = 0 ؛ i <10_0000 ؛ i ++) {logger.info ("info execute index method") ؛ logger.warn ("تحذير تنفيذ طريقة الفهرس") ؛ logger.error ("خطأ تنفيذ طريقة الفهرس") ؛ } إرجاع "تطبيق Springboot الأول" ؛ }}نتائج التشغيل
سيتم تخزين السجلات في ملفات مختلفة وفقًا لمستويات مختلفة. عندما يتجاوز حجم ملف السجل 2 متر ، سيتم ضغط ملفات متعددة وتخزينها. يوصى بضبط حجم ملف السجل لبيئة الإنتاج إلى 20-50 ميغابايت.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.