Эта статья в основном вводит конфигурацию SLF4J+ROSECK в Java Engineering.
Прежде чем представить конфигурацию журнала SLF4J+, сначала введите резервную программу логирования компонента журнала.
(1) Введение и конфигурация авторитета компонента журнала
1. Введение в защитник
Rogack - еще один компонент журнала с открытым исходным кодом, разработанный основателем Log4J. В настоящее время резервен на три модуля: CORMACK-CORE, CORMACK-CLASSIC и HORCACK-активность. Corpack-Core является основным модулем двух других модулей. Logback-Classic-это улучшенная версия Log4J. Кроме того, логическая классическая полностью реализует API SLF4J, чтобы вы могли легко заменить его другими системами ведения журнала, таких как журнал Log4J или JDK14. Модуль доступа к Access в регистрации интегрируется с контейнерами сервлетов, чтобы обеспечить функцию доступа к журналам через HTTP. Заготовитель - это официальный веб -сайт, который объединяет два компонента с SLF4J следующим образом:
Официальный веб -сайт журнала: http://logback.qos.ch
Официальный веб -сайт SLF4J: http://www.slf4j.org
Компоненты, используемые в этой статье, следующие: пожалуйста, перейдите на официальный сайт, чтобы загрузить!
Rogack -access -.0.0.jar
LOGACK -CLASSIC -.0.0.JAR
РАЗРЕШЕНИЕ-КОР-КОР-1.0.0.JAR
SLF4J-API-1.6.0.jar
2. Причины замены замены log4j:
ROGACK и LOG4J очень похожи. Вот некоторые преимущества авторитета по сравнению с log4j:
1. быстрее реализовать переписывание ядра заканчивая, и производительность увеличивается более чем в 10 раз по некоторым путям выполнения ключей. Более того, журнал не только улучшает производительность, но и имеет менее инициализированные нагрузки на память.
2. Очень полная проверка тестирования было протестировано в течение нескольких лет, бесчисленное количество часов. Тест «Логик» совершенно другой. С точки зрения автора, это простая и важная причина выбора защитника вместо log4j.
3. При использовании SLF4J вы не можете чувствовать себя защитником. Более того, потому что резервные реализации SLF4J очень естественно, переход на Log4J или другой очень прост.
4. Официальный веб -сайт очень полного документа имеет более 200 страниц документов.
5. Автоматически перезагрузить файл конфигурации В качестве изменения файла конфигурации, логическая классика может автоматически перезагрузить файл конфигурации. Процесс сканирования быстрый и безопасный, ему не нужно создавать еще один сканирующий поток. Эта технология полностью гарантирует, что приложение может работать в среде JEE.
6. Лилит Лилит является наблюдателем инцидента с логарифмами, похожим на бензопилу log4j. Лилит также может обрабатывать большие объемы данных журнала.
7. Режим осторожности и очень дружелюбное восстановление в режиме осторожности, несколько экземпляров FileAppender, запускаемых по нескольким JVM, и могут безопасно написать один и тот же файл журнала. RollingFileAppender будет иметь некоторые ограничения. FileAppender от Legack и его подклассы, включая RollingFileAppender, способны восстановиться после исключений ввода/вывода очень дружелюбны.
8. Файлы конфигурации могут обрабатывать различные ситуации. Эти файлы конфигурации представляют собой лишь небольшие различия, которые могут быть реализованы и реализовать, так что файл конфигурации может адаптироваться к нескольким средам.
9. Фильтры (фильтры) Иногда требуется проблема, и требуется журнал. В Log4J только снижение уровня журнала, но это сделает много журналов и повлияет на производительность приложения. В Research вы можете продолжать поддерживать этот уровень журнала и удалять некоторые особые случаи. Для достижения этой функции вам нужно добавить только 4 строки конфигурации XML. Вы можете обратиться к MDCFilter.
10. SiftingAppener (очень много -функциональный приложение). Он может использоваться для разделения файла журнала в соответствии с любыми данными рабочими параметрами. Например, SiftingAppender может отличить сеанс пользователя, который следует за сеансом пользователя, а затем у каждого пользователя будет файл журнала.
11. Автоматически сжатие журнала RollingFileAppender, который был достигнут. Сжатие является асинхронным процессом, поэтому даже для больших файлов журнала приложения не будут затронуты в процессе сжатия.
12.
13. Автоматическое удаление старого файла журнала, установив свойство Maxhistory Of TimeBasedRollingPolicy или SizeandTimeBasedFnatp. Если установлен Maxhistory 12, эти файлы журнала, которые были более 12 месяцев, будут автоматически удалены.
Короче говоря, Logack лучше, чем Log4J.
3. Введение в конфигурацию заказа
1. Логист, приложение и макет
Логист, как регистратор журнала, связывает его в соответствующем контексте, который используется, в основном используется для хранения объектов журнала.
Приложение в основном используется для указания пункта назначения вывода журнала.
Макет отвечает за вывод события в строку, отформатированную информацию журнала.
2. Контекст регистрации
Каждый журнал связан с LoggerContext. Все остальные регистрации также были получены с помощью статического метода org.slf4j.loggerfactory class getLogger. Метод GetLogger назван Logger. Используйте то же имя, чтобы вызвать метод loggerfactory.getlogger.
3. Наследование эффективных уровней и уровней
Регистратор может быть назначен. Уровни включают в себя: трассировку, отладку, информацию, предупреждение и ошибку, определенные в CH.Qos.logback.classic.level Class. Если регистратор не назначен, то он унаследовал уровень от ближайшего предка уровня распределения. Уровень по умолчанию корневого регистратора отладка.
4. Метод печати и правила базового выбора <Br /> Методы печати определяют уровень запроса. Например, если L - экземпляр регистрации, то оператор L.Info ("..") является оператором записи с информацией об уровне. Уровень запроса журнала называется включенным, когда он выше или равен действительному уровню его регистратора, в противном случае он называется отключенным. Уровень запроса записи равен P, а допустимый уровень регистрации составляет Q.
Это правило лежит в основе резервного защитника. Сортировка уровня: Trace <Debug <info <warn <ошибка
4. Конфигурация по умолчанию Learback <br /> Если файлы конфигурации fyleback-test.xml и brogback.xml не существуют, то журнал вызовет BasicConfigurator по умолчанию, чтобы создать минимизированную конфигурацию. Для минимизации конфигурации, состоящей из консоляпендера, связанного с корневым регистратором. Режим вывода %d {HH: MM: Ss.SSS} [ %поток] %-5Level %logger {36} - %MSG %N PatternLayOutendCoder. Уровень по умолчанию корневого регистратора отладка.
1. Файл конфигурации в защите
Синтаксис файла конфигурации Logack очень гибкий. Из -за гибкости нельзя определить схема DTD или XML. Тем не менее, вы можете описать основную структуру файла конфигурации таким образом: запустите с <figureturation>, есть нулевые или более элементов <ppender>, ноль или более элементов <logger> и максимум элементов <root>.
2. Шаги конфигурации по умолчанию резервного защитника
(1).
(2).
(3).
3. file restrack.xml
<? Приложение name = "stdout"> <!-Выходная система Ширина символа 5-го уровня от левого дисплея 5 Ширина символа%msg: сообщение журнала,%n-это символ-изменение-> <Sutern>%d {yyyy-mm-dd hh: mm: ss.ss} [%tread]%- 5Level %logger {50}- %msg %n </pattern> </layout> </appender> <!-генерировать файлы журнала каждый день-> <ppender name = "file"> <concoding> utf-8 <// Encoding> <lllingpolicy> <!-Имя файла выводится с помощью файла log-> <filenamepattern> $ {log_home} /myapp.log.%d {yyyy-mm-dd}. /maxhistory> </rollingpolice> <playout> <!-Сформулированный выход:%d представляет дату,%потока представляет имя потока,%d представляет имя потока,%-5Level: 5 символов, отображаемая с левого%MSG: Сообщение журнала,%n-это изменение символа-> <tlement>%d {yyyy-mm-dd hh: mm: ss.ss} [%thread]%-5level%logger {50}-%msg%n </pattern > </Mayout> <!-Самый большой размер файла журнала-> <SriggeringPolice> <MaxFilesize> 10MB </maxFilesize> </riggeringPolice> </appen der> <!-Показать параметры для Hibernate SQL, посвященный настройке Hibernate Hibernate -> <logger name = "organnate.type.descriptor.sql.basicbinder =" trace " /> <logger =" org.hibernate. org.hibernate.sql "level =" def " /> <log. erameters" level = "Debug" /> <name = "org.hibernate.engine.qury.hqlqueryplan" level = "Debug" /> <!- Выходная система Level-> <root level = "info"> <ppender-ref = "stdout" /> <ppender-ref ref = "file" /> < /root> <!-журналы в базу данных-> <ppender name = "DB"> <! DatabaseName </url> <uster> root </user> <shours> root </password> </dataSource> </connectionsource> </appender> -> </configuration >> </configuration >> </configuration >> </Конфигурация >> 5. Используйте программу охраны справочного регистрации в программе
пакет com.stu.system.action; класс);
Далее, давайте представим конфигурацию SLF4J+ROSECK в проекте Java.
1. Maven на основе SLF4J+ROSECACK POM.XML Конфигурация
<dependency> <groupid> org.slf4j </groupid> <artifactid> slf4j-api </artifactid> <sersive> 1.7.10 </version> </getyederiation> <groupid> c h.qos.logback </GroupId> <Artifactid> rougeclack-classic </artifactid> <serse> 1.1.2 </version> </deendecy> <g.qos. /Версия> </Зависимость>
2. Создайте новый файл конфигурации regaback.xml в каталоге ClassPath
<? xml version = "1.0" Encoding = "UTF-8"?> <!-сканирование: когда это свойство установлено на TRUE, если файл конфигурации изменится, оно будет перезагружено, и значение по умолчанию является true. Scanperiod: Устанавливает интервал времени, чтобы отслеживать, существует ли модификация файла конфигурации. Интервал времени по умолчанию составляет 1 минуту. DEBUG: Когда этот атрибут устанавливается на TRUE, информация о внутреннем журнале LOGACK будет напечатана для проверки статуса работы в режиме реального времени. Значение по умолчанию неверно. -> <configuration scan = "false" scanperiod = "60 секунд" debug = "false"> <!-определить корневую каталог журнала-> <name = "log_home" value = "/app/log " /> <!-определить имя файла журнала-> <name =" appname "value =" netty "> < / property> <!-Ch.QOS.Logback.core.consoleappender Указывает консоль-> <Приложение name = "stdout"> <concoding> UTF-8 </encoding> <!-Формат вывода журнала:%d означает дата,%потока указывает имя потока,%-5Level: Ширина символов 5 уровня 5 символов с левого%% %%%%%% 5 Ширина символа %%%%%%% Logger {50} означает, что имя регистрации составляет 50 символов, в противном случае оно будет разделено в соответствии с периодом. %msg: сообщение журнала, %n-это изменение строк-> <Mayout> <tlement> %d {yyyy-mm-dd hh: mm: ss.ss} [ %thread] %-5level %logger {50}- % msg% n </pattern> </layout> </appender> <!- Прокрутите, чтобы записать файл, сначала запишите журнал в указанный файл, и когда выполнено определенное условие, запишите журнал в другие файлы- -> <appender name = "ApplogAppender"> <concoding> utf-8 </encoding> <!-Имя назначенного файла журнала-> <File> $ {log_home}/$ {appName} .log </file> <! -> appname}-%d {yyyy-mm-dd}-%i.log </filenamepattern> <!-Необязательный узел, управляйте зарезервированным архивным файлом, самый большой, если количество превышает количество, удалите старый файл. Предполагая, что он катится каждый день, а Maxhistory -365, только последний 365 -дневный файл сохраняется для удаления старого файла ранее. Обратите внимание, что старые файлы удалены, и этот каталог, созданный для архивов, также будет удален. -> <maxhistory> 365 </maxhistory> <!-Размер файла журнала превышает MaxFilesize, а файл журнала, который я упоминал, обращают внимание на размер конфигурации. TimeBasedFilEnamingAndTriggingPolicy> <MaxFilesize> 100MB </maxFilesize> </timebadeFilenamingan dtriggeringpolicy> </rollingpolicy> <!-Формат вывода журнала:%d представляет время даты,%нить указывает на название потока,%-5lev Левый дисплей 5 Ширина символа%logger {50} указывает, что имя регистрации составляет 50 символов, в противном случае оно будет разделено в соответствии с периодом. %msg: сообщение журнала, %n-это изменение строк-> <laayout> <tlempt> %d {yyyy-mm-dd HH: MM: Ss.SS} [ %поток]-[ %-5Level] [ %регистратора {50}: %line]- %msg %n </pattern> </mayout> </appender> <!- Логист в основном используется для хранения объектов журнала. Первая половина уровня пакета: записан уровень журнала, включая Trace <Debug <Info <WARN <Ошибка Дополнения: Функция заключается Приложение текущего регистратора используется -Ref, true: adpender-ref и rootlogger текущих логических реф-реф и rootlogger-refs эффективны-> <!-hibernate logger-> <name = "org.hibernate" Уровень = "Ошибка" /> <! "level =" info "Additivality =" true "> <ppender-Ref ref =" ApplogAppender " /> < /logger> <!-root и logger-это отношение между отцом и сыном. Если нет особого определения, это есть По умолчанию. -> <root level = "info"> <ppender-ref = "stdout" /> <ppender-ref = "ApplogAppender" /> < /root> < /configuration>