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.config;
19
20 import org.apache.logging.log4j.Level;
21 import org.apache.logging.log4j.Marker;
22 import org.apache.logging.log4j.core.LogEvent;
23 import org.apache.logging.log4j.message.Message;
24 import org.apache.logging.log4j.util.Supplier;
25
26 /**
27 * Interface for objects that know how to ensure delivery of log events to the appropriate appenders, even during and
28 * after the configuration has been modified while the system is actively used.
29 */
30 public interface ReliabilityStrategy {
31
32 /**
33 * Logs an event.
34 *
35 * @param reconfigured supplies the next LoggerConfig if the strategy's LoggerConfig is no longer active
36 * @param loggerName The name of the Logger.
37 * @param fqcn The fully qualified class name of the caller.
38 * @param marker A Marker or null if none is present.
39 * @param level The event Level.
40 * @param data The Message.
41 * @param t A Throwable or null.
42 */
43 void log(Supplier<LoggerConfig> reconfigured, String loggerName, String fqcn, Marker marker, Level level,
44 Message data, Throwable t);
45
46 /**
47 * Logs an event.
48 *
49 * @param reconfigured supplies the next LoggerConfig if the strategy's LoggerConfig is no longer active
50 * @param event The log event.
51 */
52 void log(Supplier<LoggerConfig> reconfigured, LogEvent event);
53
54 /**
55 * For internal use by the ReliabilityStrategy; returns the LoggerConfig to use.
56 *
57 * @param next supplies the next LoggerConfig if the strategy's LoggerConfig is no longer active
58 * @return the currently active LoggerConfig
59 */
60 LoggerConfig getActiveLoggerConfig(Supplier<LoggerConfig> next);
61
62 /**
63 * Called after a log event was logged.
64 */
65 void afterLogEvent();
66
67 /**
68 * Called before all appenders are stopped.
69 */
70 void beforeStopAppenders();
71
72 /**
73 * Called before the configuration is stopped.
74 *
75 * @param configuration the configuration that will be stopped
76 */
77 void beforeStopConfiguration(Configuration configuration);
78
79 }