View Javadoc

    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one or more
    3    * contributor license agreements.  See the NOTICE file distributed with
    4    * this work for additional information regarding copyright ownership.
    5    * The ASF licenses this file to You under the Apache License, Version 2.0
    6    * (the "License"); you may not use this file except in compliance with
    7    * the License.  You may obtain a copy of the License at
    8    *
    9    *      http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the License for the specific language governing permissions and
    15   * limitations under the License.
    16   */
    17
    18  package org.apache.log4j.spi;
    19
    20  import org.apache.log4j.*;
    21  import org.apache.log4j.helpers.LogLog;
    22
    23
    24  // Contibutors: Mathias Bogaert
    25
    26  /***
    27     RootLogger sits at the top of the logger hierachy. It is a
    28     regular logger except that it provides several guarantees.
    29
    30     <p>First, it cannot be assigned a <code>null</code>
    31     level. Second, since root logger cannot have a parent, the
    32     {@link #getChainedLevel} method always returns the value of the
    33     level field without walking the hierarchy.
    34
    35     @author Ceki G&uuml;lc&uuml;
    36
    37   */
    38  public final class RootLogger extends Logger {
    39    /***
    40       The root logger names itself as "root". However, the root
    41       logger cannot be retrieved by name.
    42    */
    43    public RootLogger(Level level) {
    44      super("root");
    45      setLevel(level);
    46    }
    47
    48    /***
    49       Return the assigned level value without walking the logger
    50       hierarchy.
    51    */
    52    public final Level getChainedLevel() {
    53      return level;
    54    }
    55
    56    /***
    57       Setting a null value to the level of the root logger may have catastrophic
    58       results. We prevent this here.
    59
    60       @since 0.8.3 */
    61    public final void setLevel(Level level) {
    62      if (level == null) {
    63        LogLog.error(
    64          "You have tried to set a null level to root.", new Throwable());
    65      } else {
    66        this.level = level;
    67      }
    68    }
    69
    70  }