1 © Luxoft Training 2013 Модуль 9 Введение Уровни логирования Хэндлеры Фильтры Иерархия логеров Общий сценарий логирования Конфигурационные файлы 9-1 Система.

Презентация:



Advertisements
Похожие презентации
1 © Luxoft Training 2013 Модуль 8 Введение Задачи аннотаций Стандартные аннотации Создание собственных аннотаций 8-1 Аннотации.
Advertisements

1 © Luxoft Training 2013 Модуль 7 Введение Исследование классов 7-1 Механизм Reflection.
Программная инженерия Дмитриев Андрей Владиславович
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Введение в Java Script УРОК 1. Пример ПЕРВЫЙ Открыть программу блокнот и записать следующую команду: Сохранить файл С расширением JS загрузить файл Двойным.
Эфрос-сканер Cканирование маршрутизаторов и МСЭ Cisco на основе сценариев и заданий, создание базы данных с описанием команд, их параметров и уровней привилегий.
OOП Инна Исаева. Подпрограмма – это большая программа, разделённая на меньшие части. В программе одна из подпрограмм является главной. Её задача состоит.
1 © Luxoft Training 2012 Java: расширенные вопросы Модуль #8.
Основы объектно-ориентированного программирования (ООП)
Основы ООП и C# Работа с объектами и классами. Классы Класс специальный тип данных для описания объектов. Он определяет данные и поведение типа. Определение.
Сетевые службы Для конечного пользователя сеть это не компьютеры, кабели и концентраторы и даже не информационные потоки, для него сеть это, прежде всего,
Программная инженерия Андрей Дмитриев ©
6.5. Создание реляционной БД в среде СУБД ACCESS Общие сведения Реляционные отношения в СУБД ACCESS представлены в двух формах: в виде таблиц и в виде.
Связи между таблицами являются необходимым элементом структуры БД. Для того, чтобы связь была возможна, таблицы должны иметь общие поля. Чаще всего в одной.
Интерфейс текстового процессора Microsoft Word. С помощью ленты можно быстро находить необходимые команды (элементы управления: кнопки, раскрывающиеся.
Работа с файлами Сазонов Д.О. ПМиЭММ Часть 2. Тема занятия: Работа с файлами через потоки Для реализации файлового ввода/вывода, необходимо включить в.
Тема 5. Основы современной технологии программирования Программирование в средах современных информационных систем. Интегрированные системы разработки.
OpenGL и Direct3D сравнение стандартов Выполнил: Пенкин А. Группа И-204.
Применение иерархического метода для построения защищенной операционной системы. Выполнила Шилова О. И-411.
Полиморфизм. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Транксрипт:

1 © Luxoft Training 2013 Модуль 9 Введение Уровни логирования Хэндлеры Фильтры Иерархия логеров Общий сценарий логирования Конфигурационные файлы 9-1 Система журналирования Java

2 © Luxoft Training 2013Журналирование Очень часто при создании даже небольших программ встает задача журналирования (logging), позволяющая выводить сообщения о ходе работы программы в различные источники (консоль, файл и т.д.) 9-2 Введение

3 © Luxoft Training 2013Журналирование Журналируемая информация может быть полезна: Конечным пользователям и системным администраторам (ошибки конфигурации, проблемы с безопасностью) Разработчикам (отслеживание стека выполнения программы, ошибки, помощь в отладке) 9-3 Введение

4 © Luxoft Training 2013Журналирование Существуют различные фреймворки реализующие задачу журналирования. К ним относятся: Apache log4java Apache Commons Logging SLF4J И др. 9-4 Существующие реализации

5 © Luxoft Training 2013Журналирование Начиная с версии JDK 1.4 Java поддерживает собственную систему журналирования (Java Logging), являющуюся частью платформы. Это имеет ряд плюсов и минусов 9-5 Существующие реализации

6 © Luxoft Training 2013Журналирование Отлаженность, т.к. базируется на уже существовавших фреймворках Легковесна и легка для понимания Является стандартом 9-6 Java Logging. Плюсы

7 © Luxoft Training 2013Журналирование Являясь стандартом платформы Java, новые версии фреймворка выходят редко Т.к Java Logging появился только в JDK 1.4, а log4j использовался и ранее, многие программисты продолжают использовать log4j по привычке 9-7 Java Logging. Минусы

8 © Luxoft Training 2013Журналирование Java logging фреймворк расположен в пакете java.util.logging Объект класс java.util.logging.Logger (логгер) служит для вывода сообщения из системы Каждый логгер имеет произвольное имя. Обычно, имя базируется на имени пакета и класса, для которого журналируется сообщение 9-8 Java Logging. Введение

9 © Luxoft Training 2013Журналирование Получить объект класса java.util.logging.Logger можно с помощью фабричного метода Logger.getLogger("loggerName") 9-9 Получение логгера

10 © Luxoft Training 2013 Модуль 9 Введение Уровни логирования Хэндлеры Фильтры Иерархия логеров Общий сценарий логирования Конфигурационные файлы 9-10 Система журналирования Java

11 © Luxoft Training 2013Журналирование Уровни логирования (log levels) – механизм, позволяющий контролировать, какие сообщения необходимо журналировать Чем выше уровень, тем более важная (критичная) информация должна быть журналирована 9-11 Уровни логирования

12 © Luxoft Training 2013Журналирование 9-12 Уровни логирования

13 © Luxoft Training 2013Журналирование Класс java.util.logging.Level инкапсулирует соответствующие значения уровней логирования Logging API подразумевает расширение, в частности создание собственных уровней логирования 9-13 Уровни логирования

14 © Luxoft Training 2013Журналирование При логировании строкового сообщения, создается объект java.util.logging.LogRecord, инкапсулирующее заданную строку 9-14 Уровни логирования

15 © Luxoft Training 2013Журналирование Класс Logger имеет ряд соответствующих методов, логирующих сообщение и задающих его уровень логирования Т.е. используя соответствующий метод задается «важность» сообщения 9-15 Уровни логирования

16 © Luxoft Training 2013Журналирование Впоследствии (рассмотрим далее) можно гибко управлять выводом сообщений учитывая их уровень логирования: например, при отладке необходимо выводить все сообщения, в production – только сообщения уровней SEVERE, WARNING и INFO 9-16 Уровни логирования

17 © Luxoft Training 2013Журналирование Уровни логирования образуют иерархию, т.е. если система логирования сконфигурирована на вывод сообщения данного уровня, то осуществляется также вывод всех сообщений более верхних (вплоть до SEVERE) уровней 9-17 Уровни логирования

18 © Luxoft Training 2013Журналирование По умолчанию Logging API сконфигурирована на вывод сообщений уровня INFO. Это означает, что будут выводиться сообщения уровней SEVERE, WARNING и INFO 9-18 Уровни логирования

19 © Luxoft Training 2013Журналирование Итак, программист в коде Java приложения: Получает экземпляр логгера по имени Логирует необходимое сообщение, присваивая ему тот или иной уровень логирования с помощью вызова одного из методов logger.severe(), warning(), info(), config(), fine(), finer(), finest() 9-19 Уровни логирования

20 © Luxoft Training 2013Журналирование 9-20 Пример. Что выведет этот код?

21 © Luxoft Training 2013 LoggerConfigTutor Журналирование Пример

22 © Luxoft Training 2013 Модуль 9 Введение Уровни логирования Хэндлеры Фильтры Иерархия логеров Общий сценарий логирования Конфигурационные файлы 9-22 Система журналирования Java

23 © Luxoft Training 2013Журналирование Хэндлер (handler) – механизм, осуществляющий вывод заблокированного сообщения в какой- либо источник (консоль, файл и т.п.) Логгер может иметь один или несколько ассоциированных с ним хендлеров, осуществляющих вывод сообщения в разные источники 9-23 Хэндлеры

24 © Luxoft Training 2013Журналирование Класс java.util.logging.Handler является базовым для всех хендлеров Java Logging API имеет следующие «встроенные» хендлеры: ConsoleHandler FileHander MemoryHandler SocketHandler StreamHandler 9-24 Хэндлеры

25 © Luxoft Training 2013Журналирование Можно реализовывать собственные хендлеры Методы Logger.addHandler(Handler), Logger.removeHandlers(), Logger.getHandlers()[] позволяют добавить, удалить, получить все хендлеры у логгера 9-25 Хэндлеры

26 © Luxoft Training 2013Журналирование ConsoleHandler осуществляет вывод сообщения на консоль FileHandler осуществляет запись в файл. Конструктор принимает имя файла для вывода, а также флаг, указывающий, необходимо ли добавлять в конец лога: file = new FileHandler("file.log", true); 9-26 ConsoleHandler и FileHandler

27 © Luxoft Training 2013Журналирование FileAppender поддерживает т.н. удерживание лога (log retention) – когда размер одного файла достигает некоторого значения, создается следующий файл file = new FileHandler("%t/java%g.log", , 10, true); В примере происходит удержание 10 фалов по 1 мегабайту 9-27 ConsoleHandler и FileHandler

28 © Luxoft Training 2013 Модуль 9 Введение Уровни логирования Хэндлеры Фильтры Иерархия логеров Общий сценарий логирования Конфигурационные файлы 9-28 Система журналирования Java

29 © Luxoft Training 2013Журналирование Фильтр – механизм, позволяющий осуществить проверку того, необходимо ли логировать сообщение Фильтр может назначаться логгеру и/или хендлеру Только 1 фильтр может быть назначен 9-29 Фильтры

30 © Luxoft Training 2013Журналирование Фильтр – интерфейс java.util.logging.Filter, определяющий метод isLoggable(LogRecord record), возвращающий значение boolean. Если оно true, сообщение выводится, в противном случае - игнорируется По умолчанию ни логгер, ни хэндрел не имеют фильтров 9-30 Фильтры

31 © Luxoft Training 2013Журналирование 9-31 Фильтры

32 © Luxoft Training 2013 LoggerLevelTutor Журналирование Фильтры

33 © Luxoft Training 2013 Модуль 9 Введение Уровни логирования Хэндлеры Фильтры Иерархия логеров Общий сценарий логирования Конфигурационные файлы 9-33 Система журналирования Java

34 © Luxoft Training 2013Журналирование Все логеры образуют иерархию. Для каждого логера можно задать родительский логер с помощью Logger.setParent(Logger) Однако, обычно явно родителя не задают. Иерархия основывается на имени логеров 9-34 Иерархия логеров

35 © Luxoft Training 2013Журналирование 9-35 Иерархия логеров

36 © Luxoft Training 2013Журналирование Установка свойств (уровня логирования, хендлеров или фильтров) у родительского логера не распространяется на дочерние логеры Однако, если у данного логера не установлено какое-либо свойство, он осуществляет подъем по иерархии и «наследует» необходимое свойство 9-36 Иерархия логеров

37 © Luxoft Training 2013Журналирование 9-37 Иерархия логеров. Пример

38 © Luxoft Training 2013Журналирование Иерархия логеров. Пример LogHierarchyTutor

39 © Luxoft Training 2013 Модуль 9 Введение Уровни логирования Хэндлеры Фильтры Иерархия логеров Общий сценарий логирования Конфигурационные файлы 9-39 Система журналирования Java

40 © Luxoft Training 2013Журналирование Общий сценарий логирования таков: Данный логер проверяет уровень логирования сообщения относительно своего уровня Если тест пройдет (учитывая иерархию уровней), логер создает LogRecord Если у логера зарегистрирован фильтр, он осуществляет проверку пригодности LogRecord 9-40 Складывая все вместе

41 © Luxoft Training 2013Журналирование Если сообщение прошло проверки, оно передается каждому зарегистрированному хендлеру Каждый хендлер применяет свой собственный уровень логирования и фильтр Затем логер передает сообщение на обработку хендлерам родительских логеров вверх по иерархии 9-41 Складывая все вместе

42 © Luxoft Training 2013Журналирование 9-42 Складывая все вместе

43 © Luxoft Training 2013 Модуль 9 Введение Уровни логирования Хэндлеры Фильтры Иерархия логеров Общий сценарий логирования Конфигурационные файлы 9-43 Система журналирования Java

44 © Luxoft Training 2013Журналирование Многие настройки можно задавать не программно, а с помощью конфигурационного файла. Он указывается с помощью java -Djava.util.logging.config.file= mylogging.properties Main 9-44 Конфигурационные файлы

45 © Luxoft Training 2013Журналирование #Уровень корневого логера.level= INFO java.util.logging.FileHandler.pattern = %h/java%u.log java.util.logging.FileHandler.limit = java.util.logging.FileHandler.count = 1 java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter java.util.logging.ConsoleHandler.level = INFO 9-45 Конфигурационные файлы

46 © Luxoft Training 2013 LoggerConfigTutor Журналирование Конфигурационные файлы

47 © Luxoft Training 2013Упражнение 9-47 Упражнение 21 Использование системы журналирования

48 © Luxoft Training 2013 Модуль 9 Введение Уровни логирования Хэндлеры Фильтры Иерархия логеров Общий сценарий логирования Конфигурационные файлы 9-48 Система журналирования Java