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.core.util;
    19
    20  import org.apache.logging.log4j.Marker;
    21  import org.apache.logging.log4j.MarkerManager;
    22
    23  /**
    24   * Registry used for Runnable shutdown callback instances. Due to differing requirements of how late in the JVM
    25   * lifecycle Log4j should be shut down, this interface is provided for customizing how to register shutdown hook
    26   * callbacks. Implementations may optionally implement {@link org.apache.logging.log4j.core.LifeCycle}.
    27   *
    28   * @since 2.1
    29   */
    30  public interface ShutdownCallbackRegistry {
    31
    32      /**
    33       * System property to set to choose the ShutdownCallbackRegistry.
    34       */
    35      String SHUTDOWN_CALLBACK_REGISTRY = "log4j.shutdownCallbackRegistry";
    36
    37      /**
    38       * System property to set to override the global ability to register shutdown hooks.
    39       */
    40      String SHUTDOWN_HOOK_ENABLED = "log4j.shutdownHookEnabled";
    41
    42      /**
    43       * Shared Marker to indicate log messages corresponding to shutdown hooks.
    44       */
    45      Marker SHUTDOWN_HOOK_MARKER = MarkerManager.getMarker("SHUTDOWN HOOK");
    46
    47      /**
    48       * Adds a Runnable shutdown callback to this class.
    49       *
    50       * @param callback the shutdown callback to be executed upon shutdown.
    51       * @return a Cancellable wrapper of the provided callback or {@code null} if the shutdown hook is disabled and
    52       * cannot be added.
    53       * @since 2.1
    54       */
    55      Cancellable addShutdownCallback(Runnable callback);
    56  }