ConsoleHandler.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. /* ConsoleHandler.java -- a class for publishing log messages to System.err
  2. Copyright (C) 2002, 2004 Free Software Foundation, Inc.
  3. This file is part of GNU Classpath.
  4. GNU Classpath is free software; you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation; either version 2, or (at your option)
  7. any later version.
  8. GNU Classpath is distributed in the hope that it will be useful, but
  9. WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  11. General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with GNU Classpath; see the file COPYING. If not, write to the
  14. Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  15. 02110-1301 USA.
  16. Linking this library statically or dynamically with other modules is
  17. making a combined work based on this library. Thus, the terms and
  18. conditions of the GNU General Public License cover the whole
  19. combination.
  20. As a special exception, the copyright holders of this library give you
  21. permission to link this library with independent modules to produce an
  22. executable, regardless of the license terms of these independent
  23. modules, and to copy and distribute the resulting executable under
  24. terms of your choice, provided that you also meet, for each linked
  25. independent module, the terms and conditions of the license of that
  26. module. An independent module is a module which is not derived from
  27. or based on this library. If you modify this library, you may extend
  28. this exception to your version of the library, but you are not
  29. obligated to do so. If you do not wish to do so, delete this
  30. exception statement from your version. */
  31. package java.util.logging;
  32. /**
  33. * A <code>ConsoleHandler</code> publishes log records to
  34. * <code>System.err</code>.
  35. *
  36. * <p><strong>Configuration:</strong> Values of the subsequent
  37. * <code>LogManager</code> properties are taken into consideration
  38. * when a <code>ConsoleHandler</code> is initialized.
  39. * If a property is not defined, or if it has an invalid
  40. * value, a default is taken without an exception being thrown.
  41. *
  42. * <ul>
  43. *
  44. * <li><code>java.util.logging.ConsoleHandler.level</code> - specifies
  45. * the initial severity level threshold. Default value:
  46. * <code>Level.INFO</code>.</li>
  47. *
  48. * <li><code>java.util.logging.ConsoleHandler.filter</code> - specifies
  49. * the name of a Filter class. Default value: No Filter.</li>
  50. *
  51. * <li><code>java.util.logging.ConsoleHandler.formatter</code> - specifies
  52. * the name of a Formatter class. Default value:
  53. * <code>java.util.logging.SimpleFormatter</code>.</li>
  54. *
  55. * <li><code>java.util.logging.ConsoleHandler.encoding</code> - specifies
  56. * the name of the character encoding. Default value:
  57. * the default platform encoding.</li>
  58. *
  59. * </ul>
  60. *
  61. * @author Sascha Brawer (brawer@acm.org)
  62. */
  63. public class ConsoleHandler
  64. extends StreamHandler
  65. {
  66. /**
  67. * Constructs a <code>StreamHandler</code> that publishes
  68. * log records to <code>System.err</code>. The initial
  69. * configuration is determined by the <code>LogManager</code>
  70. * properties described above.
  71. */
  72. public ConsoleHandler()
  73. {
  74. super(System.err, "java.util.logging.ConsoleHandler", Level.INFO,
  75. /* formatter */ null, SimpleFormatter.class);
  76. }
  77. /**
  78. * Forces any data that may have been buffered to the underlying
  79. * output device, but does <i>not</i> close <code>System.err</code>.
  80. *
  81. * <p>In case of an I/O failure, the <code>ErrorManager</code>
  82. * of this <code>ConsoleHandler</code> will be informed, but the caller
  83. * of this method will not receive an exception.
  84. */
  85. public void close()
  86. {
  87. flush();
  88. }
  89. /**
  90. * Publishes a <code>LogRecord</code> to the console, provided the
  91. * record passes all tests for being loggable.
  92. *
  93. * <p>Most applications do not need to call this method directly.
  94. * Instead, they will use use a <code>Logger</code>, which will
  95. * create LogRecords and distribute them to registered handlers.
  96. *
  97. * <p>In case of an I/O failure, the <code>ErrorManager</code>
  98. * of this <code>SocketHandler</code> will be informed, but the caller
  99. * of this method will not receive an exception.
  100. *
  101. * <p>The GNU implementation of <code>ConsoleHandler.publish</code>
  102. * calls flush() for every request to publish a record, so
  103. * they appear immediately on the console.
  104. *
  105. * @param record the log event to be published.
  106. */
  107. public void publish(LogRecord record)
  108. {
  109. super.publish(record);
  110. flush();
  111. }
  112. }