Объект Logger

5,635 views

Published on

Published in: Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,635
On SlideShare
0
From Embeds
0
Number of Embeds
24
Actions
Shares
0
Downloads
31
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide
  • Объект Logger

    1. 1. Язык Java Использование Logger java.util.logging
    2. 2. Введение <ul> <li>Logging API появился в JDK, начиная с версии 1.4 </ul> <ul> <li>Предназначен для информирования разработчиков и администраторов о состоянии контролируемого объекта </ul> <ul> <li>API находится в пакете java.util.logging </ul>
    3. 3. Классы, входящие в java.util.logging <ul> <li>ConsoleHandler </ul> <ul> <li>FileHandler </ul> <ul> <li>Filter </ul> <ul> <li>Formatter </ul> <ul> <li>Handler </ul> <ul> <li>Level </ul> <ul> <li>Logger </ul> <ul> <li>LoggingPermission </ul> <ul> <li>LogManager </ul> <ul> <li>LogRecord </ul> <ul> <li>MemoryHandler </ul> <ul> <li>SimpleFormatter </ul> <ul> <li>SocketHandler </ul> <ul> <li>StreamHandler </ul> <ul> <li>XMLFormatter </ul>
    4. 4. Управление уровнем сообщений <ul> <li>Для указания уровней сообщений используется класс Level </ul> <ul> <li>Предопределенные уровни </ul> <ul> <ul> <li>SEVERE — наивысшее значение, наиболее значимое сообщение (например, фатальная ошибка) </ul> </ul> <ul> <ul> <li>WARNING — значение для предупреждений </ul> </ul> <ul> <ul> <li>INFO — информационные сообщения времени выполнения </ul> </ul> <ul> <ul> <li>CONFIG — информационные сообщения о конфигурации </ul> </ul> <ul> <ul> <li>FINE — используется для детализированного вывода информации при отладке </ul> </ul> <ul> <ul> <li>FINER — Еще более детализированное сообщение </ul> </ul> <ul> <ul> <li>FINEST — сообщение с наименьшим приоритетом для наиболее подробной информации </ul> </ul> <ul> <li>Добавочные значения ALL и OFF </ul>
    5. 5. Использование класса Level <ul> <li>По умолчанию записываются сообщения с уровнем Level.INFO и выше </ul> <ul> <li>Для изменения уровня записи необходимо: </ul> <ul> <ul> <li>Поменять уровень записи Logger </ul> </ul> <ul> <ul> <li>Поменять уровень записи соответствующего Handler'а </ul> </ul>
    6. 6. Класс Logger <ul> <li>public static synchronized Logger getLogger(String name) </ul> <ul> <li>public static synchronized Logger getAnonymousLogger() </ul> <ul> <li>public void setFilter(Filter newFilter) throws SecurityException </ul> <ul> <li>public Filter getFilter() </ul> <ul> <li>public void log(LogRecord record) </ul> <ul> <li>public void log(Level level, String msg) </ul> <ul> <li>public void log(Level level, String msg, Throwable thrown) </ul> <ul> <li>public void logp(Level level, String sourceClass, String sourceMethod, String msg) </ul> <ul> <li>public void logp(Level level, String sourceClass, String sourceMethod, String msg, Throwable thrown) </ul> <ul> <li>public void entering(String sourceClass, String sourceMethod) </ul> <ul> <li>public void exiting(String sourceClass, String sourceMethod) </ul> <ul> <li>public void throwing(String sourceClass, String sourceMethod, Throwable thrown) </ul> <ul> <li>public void severe(String msg) </ul> <ul> <li>public void warning(String msg) </ul>
    7. 7. Класс Logger <ul> <li>public void info(String msg) </ul> <ul> <li>public void config(String msg) </ul> <ul> <li>public void fine(String msg) </ul> <ul> <li>public void finer(String msg) </ul> <ul> <li>public void finest(String msg) </ul> <ul> <li>public void setLevel(Level newLevel) throws SecurityException </ul> <ul> <li>public Level getLevel() </ul> <ul> <li>public boolean isLoggable(Level level) </ul> <ul> <li>public String getName() </ul> <ul> <li>public synchronized void addHandler(Handler handler) throws SecurityException </ul> <ul> <li>public synchronized void removeHandler(Handler handler) throws SecurityException </ul> <ul> <li>public synchronized Handler[] getHandlers() </ul> <ul> <li>public Logger getParent() </ul> <ul> <li>public void setParent(Logger parent) </ul>
    8. 8. Объект LogManager <ul> <li>Центральный класс пакета logging </ul> <ul> <li>Обеспечивает контроль над журналированием </ul> <ul> <li>Позволяет выставлять различные уровни для разных частей программы </ul> <ul> <ul> <li>LogManager.setLevel(String name, Level level) </ul> </ul> <ul> <ul> <li>например, </ul> </ul> <ul> <ul> <ul> <li>LogManager.getLogManager().setLevel(«logging», Level.FINE) </ul> </ul> </ul> <ul> <li>Позволяет управлять handler'ами </ul> <ul> <li>Позволяет управлять logger'ами </ul>
    9. 9. Методы класса LogManager <ul> <li>public static LogManager getLogManager() - получение глобального объекта LogManager </ul> <ul> <li>public synchronized boolean addLogger(Logger logger) — добавление именованного Logger'а. </ul> <ul> <li>public synchronized Logger getLogger(String name) — получение именованного Logger'а </ul> <ul> <li>public synchronized Enumeration<String> getLoggerNames() </ul>
    10. 10. Класс LogRecord <ul> <li>public LogRecord(Level level, String msg) </ul> <ul> <li>public String getLoggerName() </ul> <ul> <li>public void setLoggerName(String name) </ul> <ul> <li>public Level getLevel() </ul> <ul> <li>public void setLevel(Level level) </ul> <ul> <li>public String getMessage() </ul> <ul> <li>public void setMessage(String message) </ul>
    11. 11. Интерфейс Filter <ul> <li>public boolean isLoggable(LogRecord record); </ul> <ul> <li>Возвращает значения </ul> <ul> <ul> <li>true — если запись может быть добавлена в Logger </ul> </ul> <ul> <ul> <li>false — если запись не может быть добавлена в Logger </ul> </ul>
    12. 12. Использование FileHandler <ul> <li>Для записи полученных сообщений в файл используется объект FileHandler </ul> <ul> <li>public FileHandler() throws IOException, SecurityException </ul> <ul> <li>public FileHandler(String pattern) throws IOException, SecurityException </ul> <ul> <ul> <li>Паттерн: </ul> </ul> <ul> <ul> <ul> <li>&quot;/&quot; - разделитель пути </ul> </ul> </ul> <ul> <ul> <ul> <li>&quot;%t&quot; — системная временная директория </ul> </ul> </ul> <ul> <ul> <ul> <li>&quot;%h&quot; - домашняя директория пользователя </ul> </ul> </ul> <ul> <ul> <ul> <li>&quot;%g&quot; — генерируемый номер для лог файла (ротация) </ul> </ul> </ul> <ul> <ul> <ul> <li>&quot;%u&quot; — уникальный номер для избежания конфликтов </ul> </ul> </ul> <ul> <ul> <ul> <li>&quot;%%&quot; - символ &quot;%&quot; </ul> </ul> </ul>
    13. 13. Класс FileHandler <ul> <li>public FileHandler(String pattern, boolean append) throws IOException, SecurityException </ul> <ul> <li>public FileHandler(String pattern, int limit, int count), где limit — количество байт в файле, count — количество файлов </ul> <ul> <li>public FileHandler(String pattern, int limit, int count, boolean append) throws IOException, SecurityException </ul> <ul> <li>public synchronized void publish(LogRecord record) </ul> <ul> <li>public synchronized void close() throws SecurityException </ul>
    14. 14. Класс ConsoleHandler <ul> <li>public ConsoleHandler() </ul> <ul> <li>public void publish(LogRecord record) </ul> <ul> <li>public void close() </ul>
    15. 15. Пример использования <ul> <li>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); } </ul>
    16. 16. Пример использования <ul> <li>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); } </ul>
    17. 17. Пример использования <ul> <li>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;); } </ul>
    18. 18. Пример использования <ul> <li>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()); } } } </ul>
    19. 19. Конец Вопросы e-mail: a.bovanenko@gmail.com

    ×