Объект Logger
Upcoming SlideShare
Loading in...5
×
 

Объект Logger

on

  • 6,608 views

 

Statistics

Views

Total Views
6,608
Slideshare-icon Views on SlideShare
6,588
Embed Views
20

Actions

Likes
3
Downloads
28
Comments
0

2 Embeds 20

http://www.slideshare.net 18
http://www.slideee.com 2

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Объект Logger Объект Logger Presentation Transcript

  • Язык Java Использование Logger java.util.logging
  • Введение
    • Logging API появился в JDK, начиная с версии 1.4
    • Предназначен для информирования разработчиков и администраторов о состоянии контролируемого объекта
    • API находится в пакете java.util.logging
  • Классы, входящие в java.util.logging
    • ConsoleHandler
    • FileHandler
    • Filter
    • Formatter
    • Handler
    • Level
    • Logger
    • LoggingPermission
    • LogManager
    • LogRecord
    • MemoryHandler
    • SimpleFormatter
    • SocketHandler
    • StreamHandler
    • XMLFormatter
  • Управление уровнем сообщений
    • Для указания уровней сообщений используется класс Level
    • Предопределенные уровни
      • SEVERE — наивысшее значение, наиболее значимое сообщение (например, фатальная ошибка)
      • WARNING — значение для предупреждений
      • INFO — информационные сообщения времени выполнения
      • CONFIG — информационные сообщения о конфигурации
      • FINE — используется для детализированного вывода информации при отладке
      • FINER — Еще более детализированное сообщение
      • FINEST — сообщение с наименьшим приоритетом для наиболее подробной информации
    • Добавочные значения ALL и OFF
  • Использование класса Level
    • По умолчанию записываются сообщения с уровнем Level.INFO и выше
    • Для изменения уровня записи необходимо:
      • Поменять уровень записи Logger
      • Поменять уровень записи соответствующего Handler'а
  • Класс Logger
    • public static synchronized Logger getLogger(String name)
    • public static synchronized Logger getAnonymousLogger()
    • public void setFilter(Filter newFilter) throws SecurityException
    • public Filter getFilter()
    • public void log(LogRecord record)
    • public void log(Level level, String msg)
    • public void log(Level level, String msg, Throwable thrown)
    • public void logp(Level level, String sourceClass, String sourceMethod, String msg)
    • public void logp(Level level, String sourceClass, String sourceMethod, String msg, Throwable thrown)
    • public void entering(String sourceClass, String sourceMethod)
    • public void exiting(String sourceClass, String sourceMethod)
    • public void throwing(String sourceClass, String sourceMethod, Throwable thrown)
    • public void severe(String msg)
    • public void warning(String msg)
  • Класс Logger
    • public void info(String msg)
    • public void config(String msg)
    • public void fine(String msg)
    • public void finer(String msg)
    • public void finest(String msg)
    • public void setLevel(Level newLevel) throws SecurityException
    • public Level getLevel()
    • public boolean isLoggable(Level level)
    • public String getName()
    • public synchronized void addHandler(Handler handler) throws SecurityException
    • public synchronized void removeHandler(Handler handler) throws SecurityException
    • public synchronized Handler[] getHandlers()
    • public Logger getParent()
    • public void setParent(Logger parent)
  • Объект LogManager
    • Центральный класс пакета logging
    • Обеспечивает контроль над журналированием
    • Позволяет выставлять различные уровни для разных частей программы
      • LogManager.setLevel(String name, Level level)
      • например,
        • LogManager.getLogManager().setLevel(«logging», Level.FINE)
    • Позволяет управлять handler'ами
    • Позволяет управлять logger'ами
  • Методы класса LogManager
    • public static LogManager getLogManager() - получение глобального объекта LogManager
    • public synchronized boolean addLogger(Logger logger) — добавление именованного Logger'а.
    • public synchronized Logger getLogger(String name) — получение именованного Logger'а
    • public synchronized Enumeration<String> getLoggerNames()
  • Класс LogRecord
    • public LogRecord(Level level, String msg)
    • public String getLoggerName()
    • public void setLoggerName(String name)
    • public Level getLevel()
    • public void setLevel(Level level)
    • public String getMessage()
    • public void setMessage(String message)
  • Интерфейс Filter
    • public boolean isLoggable(LogRecord record);
    • Возвращает значения
      • true — если запись может быть добавлена в Logger
      • false — если запись не может быть добавлена в Logger
  • Использование FileHandler
    • Для записи полученных сообщений в файл используется объект FileHandler
    • public FileHandler() throws IOException, SecurityException
    • public FileHandler(String pattern) throws IOException, SecurityException
      • Паттерн:
        • &quot;/&quot; - разделитель пути
        • &quot;%t&quot; — системная временная директория
        • &quot;%h&quot; - домашняя директория пользователя
        • &quot;%g&quot; — генерируемый номер для лог файла (ротация)
        • &quot;%u&quot; — уникальный номер для избежания конфликтов
        • &quot;%%&quot; - символ &quot;%&quot;
  • Класс FileHandler
    • public FileHandler(String pattern, boolean append) throws IOException, SecurityException
    • public FileHandler(String pattern, int limit, int count), где limit — количество байт в файле, count — количество файлов
    • public FileHandler(String pattern, int limit, int count, boolean append) throws IOException, SecurityException
    • public synchronized void publish(LogRecord record)
    • public synchronized void close() throws SecurityException
  • Класс ConsoleHandler
    • public ConsoleHandler()
    • public void publish(LogRecord record)
    • public void close()
  • Пример использования
    • public class NewClass { private static final Logger log=Logger.getLogger(NewClass.class.getName()); private FileHandler fh; private ConsoleHandler ch; public NewClass() { try { fh = new FileHandler(&quot;%h/test.log&quot;, 1024, 10); log.addHandler(fh); } catch (IOException ex) { Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex); } catch (SecurityException ex) { Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex); }
  • Пример использования
    • ch=new ConsoleHandler(); log.addHandler(ch); ch.setFilter(new Filter() { public boolean isLoggable(LogRecord record) { return (record.getLevel().intValue()>=Level.WARNING.intValue()); } }); fh.setFilter(new Filter() { public boolean isLoggable(LogRecord record) { return record.getLevel().intValue()>Level.FINEST.intValue(); } }); log.setLevel(Level.FINEST); }
  • Пример использования
    • public void method1() { log.entering(NewClass.class.getName(), &quot;method1&quot;);try{ method2(); }catch(MyException e) { LogRecord lr=new LogRecord(Level.SEVERE,&quot;MyException was catched&quot;); log.log(lr); } log.exiting(NewClass.class.getName(), &quot;method1&quot;); }
  • Пример использования
    • public void method2() throws MyException { if((((int)(Math.random()*100))&1)==0){ log.warning(&quot;It's Even!!!!&quot;); throw new MyException(&quot;It's EVEN!!!&quot;); }else{ log.info(&quot;It's odd!!!!!&quot;); } } public void method3() { LogManager lm=LogManager.getLogManager(); Enumeration<String> names=lm.getLoggerNames(); while(names.hasMoreElements()) { System.out.println(names.nextElement()); } } }
  • Конец Вопросы e-mail: a.bovanenko@gmail.com