001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements. See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache license, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License. You may obtain a copy of the License at
008     *
009     *      http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the license for the specific language governing permissions and
015     * limitations under the license.
016     */
017    package org.apache.logging.log4j.spi;
018    
019    import org.apache.logging.log4j.Level;
020    import org.apache.logging.log4j.Logger;
021    import org.apache.logging.log4j.Marker;
022    import org.apache.logging.log4j.message.Message;
023    
024    /**
025     * Extends the {@code Logger} interface with methods that facilitate implementing or extending {@code Logger}s. Users
026     * should not need to use this interface.
027     */
028    public interface ExtendedLogger extends Logger {
029    
030        /**
031         * Determines if logging is enabled.
032         * 
033         * @param level The logging Level to check.
034         * @param marker A Marker or null.
035         * @param message The Message.
036         * @param t A Throwable.
037         * @return True if logging is enabled, false otherwise.
038         */
039        boolean isEnabled(Level level, Marker marker, Message message, Throwable t);
040    
041        /**
042         * Determines if logging is enabled.
043         * 
044         * @param level The logging Level to check.
045         * @param marker A Marker or null.
046         * @param message The message.
047         * @param t A Throwable.
048         * @return True if logging is enabled, false otherwise.
049         */
050        boolean isEnabled(Level level, Marker marker, Object message, Throwable t);
051    
052        /**
053         * Determines if logging is enabled.
054         * 
055         * @param level The logging Level to check.
056         * @param marker A Marker or null.
057         * @param message The message.
058         * @return True if logging is enabled, false otherwise.
059         * @param t the exception to log, including its stack trace.
060         */
061        boolean isEnabled(Level level, Marker marker, String message, Throwable t);
062    
063        /**
064         * Determine if logging is enabled.
065         * 
066         * @param level The logging Level to check.
067         * @param marker A Marker or null.
068         * @param message The message.
069         * @return True if logging is enabled, false otherwise.
070         */
071        boolean isEnabled(Level level, Marker marker, String message);
072    
073        /**
074         * Determines if logging is enabled.
075         * 
076         * @param level The logging Level to check.
077         * @param marker A Marker or null.
078         * @param message The message.
079         * @param params The parameters.
080         * @return True if logging is enabled, false otherwise.
081         */
082        boolean isEnabled(Level level, Marker marker, String message, Object... params);
083    
084        /**
085         * Logs a message if the specified level is active.
086         * 
087         * @param fqcn The fully qualified class name of the logger entry point, used to determine the caller class and
088         *            method when location information needs to be logged.
089         * @param level The logging Level to check.
090         * @param marker A Marker or null.
091         * @param message The Message.
092         * @param t the exception to log, including its stack trace.
093         */
094        void logIfEnabled(String fqcn, Level level, Marker marker, Message message, Throwable t);
095    
096        /**
097         * Logs a message if the specified level is active.
098         * 
099         * @param fqcn The fully qualified class name of the logger entry point, used to determine the caller class and
100         *            method when location information needs to be logged.
101         * @param level The logging Level to check.
102         * @param marker A Marker or null.
103         * @param message The message.
104         * @param t the exception to log, including its stack trace.
105         */
106        void logIfEnabled(String fqcn, Level level, Marker marker, Object message, Throwable t);
107    
108        /**
109         * Logs a message if the specified level is active.
110         * 
111         * @param fqcn The fully qualified class name of the logger entry point, used to determine the caller class and
112         *            method when location information needs to be logged.
113         * @param level The logging Level to check.
114         * @param marker A Marker or null.
115         * @param message The message.
116         * @param t the exception to log, including its stack trace.
117         */
118        void logIfEnabled(String fqcn, Level level, Marker marker, String message, Throwable t);
119    
120        /**
121         * Logs a message if the specified level is active.
122         * 
123         * @param fqcn The fully qualified class name of the logger entry point, used to determine the caller class and
124         *            method when location information needs to be logged.
125         * @param level The logging Level to check.
126         * @param marker A Marker or null.
127         * @param message The message.
128         */
129        void logIfEnabled(String fqcn, Level level, Marker marker, String message);
130    
131        /**
132         * Logs a message if the specified level is active.
133         * 
134         * @param fqcn The fully qualified class name of the logger entry point, used to determine the caller class and
135         *            method when location information needs to be logged.
136         * @param level The logging Level to check.
137         * @param marker A Marker or null.
138         * @param message The message format.
139         * @param params The message parameters.
140         */
141        void logIfEnabled(String fqcn, Level level, Marker marker, String message, Object... params);
142    
143        /**
144         * Always logs a message at the specified level. It is the responsibility of the caller to ensure the specified
145         * level is enabled.
146         * 
147         * @param fqcn The fully qualified class name of the logger entry point, used to determine the caller class and
148         *            method when location information needs to be logged.
149         * @param level The logging Level to check.
150         * @param marker A Marker or null.
151         * @param message The Message.
152         * @param t the exception to log, including its stack trace.
153         */
154        void logMessage(String fqcn, Level level, Marker marker, Message message, Throwable t);
155    }