Your SlideShare is downloading. ×
0
Объект Logger
Объект Logger
Объект Logger
Объект Logger
Объект Logger
Объект Logger
Объект Logger
Объект Logger
Объект Logger
Объект Logger
Объект Logger
Объект Logger
Объект Logger
Объект Logger
Объект Logger
Объект Logger
Объект Logger
Объект Logger
Объект Logger
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Объект Logger

5,172

Published on

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

No Downloads
Views
Total Views
5,172
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
30
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Transcript

    • 1. Язык Java Использование Logger java.util.logging
    • 2. Введение <ul> <li>Logging API появился в JDK, начиная с версии 1.4 </ul> <ul> <li>Предназначен для информирования разработчиков и администраторов о состоянии контролируемого объекта </ul> <ul> <li>API находится в пакете java.util.logging </ul>
    • 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. Управление уровнем сообщений <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. Использование класса Level <ul> <li>По умолчанию записываются сообщения с уровнем Level.INFO и выше </ul> <ul> <li>Для изменения уровня записи необходимо: </ul> <ul> <ul> <li>Поменять уровень записи Logger </ul> </ul> <ul> <ul> <li>Поменять уровень записи соответствующего Handler&apos;а </ul> </ul>
    • 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. Класс 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. Объект 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&apos;ами </ul> <ul> <li>Позволяет управлять logger&apos;ами </ul>
    • 9. Методы класса LogManager <ul> <li>public static LogManager getLogManager() - получение глобального объекта LogManager </ul> <ul> <li>public synchronized boolean addLogger(Logger logger) — добавление именованного Logger&apos;а. </ul> <ul> <li>public synchronized Logger getLogger(String name) — получение именованного Logger&apos;а </ul> <ul> <li>public synchronized Enumeration&lt;String&gt; getLoggerNames() </ul>
    • 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. Интерфейс 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. Использование 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>&amp;quot;/&amp;quot; - разделитель пути </ul> </ul> </ul> <ul> <ul> <ul> <li>&amp;quot;%t&amp;quot; — системная временная директория </ul> </ul> </ul> <ul> <ul> <ul> <li>&amp;quot;%h&amp;quot; - домашняя директория пользователя </ul> </ul> </ul> <ul> <ul> <ul> <li>&amp;quot;%g&amp;quot; — генерируемый номер для лог файла (ротация) </ul> </ul> </ul> <ul> <ul> <ul> <li>&amp;quot;%u&amp;quot; — уникальный номер для избежания конфликтов </ul> </ul> </ul> <ul> <ul> <ul> <li>&amp;quot;%%&amp;quot; - символ &amp;quot;%&amp;quot; </ul> </ul> </ul>
    • 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. Класс ConsoleHandler <ul> <li>public ConsoleHandler() </ul> <ul> <li>public void publish(LogRecord record) </ul> <ul> <li>public void close() </ul>
    • 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(&amp;quot;%h/test.log&amp;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. Пример использования <ul> <li>ch=new ConsoleHandler(); log.addHandler(ch); ch.setFilter(new Filter() { public boolean isLoggable(LogRecord record) { return (record.getLevel().intValue()&gt;=Level.WARNING.intValue()); } }); fh.setFilter(new Filter() { public boolean isLoggable(LogRecord record) { return record.getLevel().intValue()&gt;Level.FINEST.intValue(); } }); log.setLevel(Level.FINEST); } </ul>
    • 17. Пример использования <ul> <li>public void method1() { log.entering(NewClass.class.getName(), &amp;quot;method1&amp;quot;);try{ method2(); }catch(MyException e) { LogRecord lr=new LogRecord(Level.SEVERE,&amp;quot;MyException was catched&amp;quot;); log.log(lr); } log.exiting(NewClass.class.getName(), &amp;quot;method1&amp;quot;); } </ul>
    • 18. Пример использования <ul> <li>public void method2() throws MyException { if((((int)(Math.random()*100))&amp;1)==0){ log.warning(&amp;quot;It&apos;s Even!!!!&amp;quot;); throw new MyException(&amp;quot;It&apos;s EVEN!!!&amp;quot;); }else{ log.info(&amp;quot;It&apos;s odd!!!!!&amp;quot;); } } public void method3() { LogManager lm=LogManager.getLogManager(); Enumeration&lt;String&gt; names=lm.getLoggerNames(); while(names.hasMoreElements()) { System.out.println(names.nextElement()); } } } </ul>
    • 19. Конец Вопросы e-mail: a.bovanenko@gmail.com

    ×