1f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements.  See the NOTICE file distributed with
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership.
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License.  You may obtain a copy of the License at
8f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage java.util.logging;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * A handler that writes log messages to the standard output stream
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code System.err}.
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * This handler reads the following properties from the log manager to
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * initialize itself:
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <ul>
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <li>java.util.logging.ConsoleHandler.level specifies the logging level,
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * defaults to {@code Level.INFO} if this property is not found or has an
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * invalid value.
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <li>java.util.logging.ConsoleHandler.filter specifies the name of the filter
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * class to be associated with this handler, defaults to {@code null} if this
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * property is not found or has an invalid value.
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <li>java.util.logging.ConsoleHandler.formatter specifies the name of the
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * formatter class to be associated with this handler, defaults to
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code java.util.logging.SimpleFormatter} if this property is not found or
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * has an invalid value.
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <li>java.util.logging.ConsoleHandler.encoding specifies the encoding this
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * handler will use to encode log messages, defaults to {@code null} if this
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * property is not found or has an invalid value.
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </ul>
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * This class is not thread-safe.
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class ConsoleHandler extends StreamHandler {
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Constructs a {@code ConsoleHandler} object.
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public ConsoleHandler() {
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super(System.err);
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Closes this handler. The {@code System.err} is flushed but not closed.
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void close() {
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super.close(false);
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Logs a record if necessary. A flush operation will be done.
639a0fbe99031759393563ee69ac4640f66f182686Jesse Wilson     *
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param record
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the log record to be logged.
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void publish(LogRecord record) {
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super.publish(record);
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super.flush();
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
73