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  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 }