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.logging.log4j.jul;
19  
20  import java.util.logging.Level;
21  import java.util.logging.Logger;
22  
23  /**
24   * Log4j Core implementation of the JUL {@link Logger} class. <strong>Note that this implementation does
25   * <em>not</em> use the {@link java.util.logging.Handler} class.</strong> Instead, logging is delegated to the
26   * underlying Log4j {@link org.apache.logging.log4j.core.Logger} which uses
27   * {@link org.apache.logging.log4j.core.Appender Appenders} instead.
28   *
29   * @since 2.1
30   */
31  public class CoreLogger extends ApiLogger {
32  
33      private final org.apache.logging.log4j.core.Logger logger;
34  
35      /**
36       * Constructs a Logger using a Log4j {@link org.apache.logging.log4j.core.Logger}.
37       *
38       * @param logger the underlying Logger to base this Logger on
39       */
40      CoreLogger(final org.apache.logging.log4j.core.Logger logger) {
41          super(logger);
42          this.logger = logger;
43      }
44  
45      @Override
46      public void setLevel(final Level level) throws SecurityException {
47          logger.setLevel(LevelTranslator.toLevel(level));
48          super.doSetLevel(level);
49      }
50  
51      /**
52       * Marks the underlying {@link org.apache.logging.log4j.core.Logger} as additive.
53       *
54       * @param additive {@code true} if this Logger should be additive
55       * @see org.apache.logging.log4j.core.Logger#setAdditive(boolean)
56       */
57      @Override
58      public synchronized void setUseParentHandlers(final boolean additive) {
59          logger.setAdditive(additive);
60      }
61  
62      /**
63       * Indicates if the underlying {@link org.apache.logging.log4j.core.Logger} is additive. <strong>Note that the
64       * Log4j version of JDK Loggers do <em>not</em> use Handlers.</strong>
65       *
66       * @return {@code true} if this Logger is additive, or {@code false} otherwise
67       * @see org.apache.logging.log4j.core.Logger#isAdditive()
68       */
69      @Override
70      public synchronized boolean getUseParentHandlers() {
71          return logger.isAdditive();
72      }
73  
74      @Override
75      public Logger getParent() {
76          final org.apache.logging.log4j.core.Logger parent = logger.getParent();
77          return parent == null ? null : Logger.getLogger(parent.getName());
78      }
79  }