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 package org.apache.logging.log4j; 18 19 import org.apache.logging.log4j.message.Message; 20 import org.apache.logging.log4j.util.Supplier; 21 22 23 /** 24 * Interface for constructing log events before logging them. Instances of LogBuilders should only be created 25 * by calling one of the Logger methods that return a LogBuilder. 26 */ 27 public interface LogBuilder { 28 29 public static final LogBuilder NOOP = new LogBuilder() {}; 30 31 /** 32 * Includes a Marker in the log event. Interface default method does nothing. 33 * @param marker The Marker to log. 34 * @return The LogBuilder. 35 */ 36 default LogBuilder withMarker(Marker marker) { 37 return this; 38 } 39 40 /** 41 * Includes a Throwable in the log event. Interface default method does nothing. 42 * @param throwable The Throwable to log. 43 * @return the LogBuilder. 44 */ 45 default LogBuilder withThrowable(Throwable throwable) { 46 return this; 47 } 48 49 /** 50 * An implementation will calculate the caller's stack frame and include it in the log event. 51 * Interface default method does nothing. 52 * @return The LogBuilder. 53 */ 54 default LogBuilder withLocation() { 55 return this; 56 } 57 58 /** 59 * Adds the specified stack trace element to the log event. Interface default method does nothing. 60 * @param location The stack trace element to include in the log event. 61 * @return The LogBuilder. 62 */ 63 default LogBuilder withLocation(StackTraceElement location) { 64 return this; 65 } 66 67 /** 68 * Causes all the data collected to be logged along with the message. Interface default method does nothing. 69 * @param message The message to log. 70 */ 71 default void log(CharSequence message) { 72 } 73 74 /** 75 * Causes all the data collected to be logged along with the message. Interface default method does nothing. 76 * @param message The message to log. 77 */ 78 default void log(String message) { 79 } 80 81 /** 82 * Logs a message with parameters. Interface default method does nothing. 83 * 84 * @param message the message to log; the format depends on the message factory. 85 * @param params parameters to the message. 86 * 87 * @see org.apache.logging.log4j.util.Unbox 88 */ 89 default void log(String message, Object... params) { 90 } 91 92 /** 93 * Causes all the data collected to be logged along with the message and parameters. 94 * Interface default method does nothing. 95 * @param message The message. 96 * @param params Parameters to the message. 97 */ 98 default void log(String message, Supplier<?>... params) { 99 } 100 101 /** 102 * Causes all the data collected to be logged along with the message. Interface default method does nothing. 103 * @param message The message to log. 104 */ 105 default void log(Message message) { 106 } 107 108 /** 109 * Causes all the data collected to be logged along with the message. Interface default method does nothing. 110 * @param messageSupplier The supplier of the message to log. 111 */ 112 default void log(Supplier<Message> messageSupplier) { 113 } 114 115 /** 116 * Causes all the data collected to be logged along with the message. Interface default method does nothing. 117 * @param message The message to log. 118 */ 119 default void log(Object message) { 120 } 121 122 /** 123 * Logs a message with parameters. Interface default method does nothing. 124 * 125 * @param message the message to log; the format depends on the message factory. 126 * @param p0 parameter to the message. 127 * 128 * @see org.apache.logging.log4j.util.Unbox 129 */ 130 default void log(String message, Object p0) { 131 } 132 133 /** 134 * Logs a message with parameters. Interface default method does nothing. 135 * 136 * @param message the message to log; the format depends on the message factory. 137 * @param p0 parameter to the message. 138 * @param p1 parameter to the message. 139 * 140 * @see org.apache.logging.log4j.util.Unbox 141 */ 142 default void log(String message, Object p0, Object p1) { 143 } 144 145 /** 146 * Logs a message with parameters. Interface default method does nothing. 147 * 148 * @param message the message to log; the format depends on the message factory. 149 * @param p0 parameter to the message. 150 * @param p1 parameter to the message. 151 * @param p2 parameter to the message. 152 * 153 * @see org.apache.logging.log4j.util.Unbox 154 */ 155 default void log(String message, Object p0, Object p1, Object p2) { 156 } 157 158 /** 159 * Logs a message with parameters. Interface default method does nothing. 160 * 161 * @param message the message to log; the format depends on the message factory. 162 * @param p0 parameter to the message. 163 * @param p1 parameter to the message. 164 * @param p2 parameter to the message. 165 * @param p3 parameter to the message. 166 * 167 * @see org.apache.logging.log4j.util.Unbox 168 */ 169 default void log(String message, Object p0, Object p1, Object p2, Object p3) { 170 } 171 172 /** 173 * Logs a message with parameters. Interface default method does nothing. 174 * 175 * @param message the message to log; the format depends on the message factory. 176 * @param p0 parameter to the message. 177 * @param p1 parameter to the message. 178 * @param p2 parameter to the message. 179 * @param p3 parameter to the message. 180 * @param p4 parameter to the message. 181 * 182 * @see org.apache.logging.log4j.util.Unbox 183 */ 184 default void log(String message, Object p0, Object p1, Object p2, Object p3, Object p4) { 185 } 186 187 /** 188 * Logs a message with parameters. Interface default method does nothing. 189 * 190 * @param message the message to log; the format depends on the message factory. 191 * @param p0 parameter to the message. 192 * @param p1 parameter to the message. 193 * @param p2 parameter to the message. 194 * @param p3 parameter to the message. 195 * @param p4 parameter to the message. 196 * @param p5 parameter to the message. 197 * 198 * @see org.apache.logging.log4j.util.Unbox 199 */ 200 default void log(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5) { 201 } 202 203 /** 204 * Logs a message with parameters. 205 * 206 * @param message the message to log; the format depends on the message factory. 207 * @param p0 parameter to the message. 208 * @param p1 parameter to the message. 209 * @param p2 parameter to the message. 210 * @param p3 parameter to the message. 211 * @param p4 parameter to the message. 212 * @param p5 parameter to the message. 213 * @param p6 parameter to the message. 214 * 215 * @see org.apache.logging.log4j.util.Unbox 216 */ 217 default void log(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6) { 218 } 219 220 /** 221 * Logs a message with parameters. Interface default method does nothing. 222 * 223 * @param message the message to log; the format depends on the message factory. 224 * @param p0 parameter to the message. 225 * @param p1 parameter to the message. 226 * @param p2 parameter to the message. 227 * @param p3 parameter to the message. 228 * @param p4 parameter to the message. 229 * @param p5 parameter to the message. 230 * @param p6 parameter to the message. 231 * @param p7 parameter to the message. 232 * 233 * @see org.apache.logging.log4j.util.Unbox 234 */ 235 default void log(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, 236 Object p7) { 237 } 238 239 /** 240 * Logs a message with parameters. Interface default method does nothing. 241 * 242 * @param message the message to log; the format depends on the message factory. 243 * @param p0 parameter to the message. 244 * @param p1 parameter to the message. 245 * @param p2 parameter to the message. 246 * @param p3 parameter to the message. 247 * @param p4 parameter to the message. 248 * @param p5 parameter to the message. 249 * @param p6 parameter to the message. 250 * @param p7 parameter to the message. 251 * @param p8 parameter to the message. 252 * 253 * @see org.apache.logging.log4j.util.Unbox 254 */ 255 default void log(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, 256 Object p7, Object p8) { 257 } 258 259 /** 260 * Logs a message with parameters. Interface default method does nothing. 261 * 262 * @param message the message to log; the format depends on the message factory. 263 * @param p0 parameter to the message. 264 * @param p1 parameter to the message. 265 * @param p2 parameter to the message. 266 * @param p3 parameter to the message. 267 * @param p4 parameter to the message. 268 * @param p5 parameter to the message. 269 * @param p6 parameter to the message. 270 * @param p7 parameter to the message. 271 * @param p8 parameter to the message. 272 * @param p9 parameter to the message. 273 * 274 * @see org.apache.logging.log4j.util.Unbox 275 */ 276 default void log(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, 277 Object p7, Object p8, Object p9) { 278 } 279 280 /** 281 * Causes all the data collected to be logged. Default implementatoin does nothing. 282 */ 283 default void log() { 284 } 285 }