38
38
39
39
import org .slf4j .event .Level ;
40
40
import org .slf4j .spi .DefaultLoggingEventBuilder ;
41
+ import org .slf4j .spi .FluentLogApiStub ;
41
42
import org .slf4j .spi .LoggingEventBuilder ;
42
43
import org .slf4j .spi .NOPLoggingEventBuilder ;
43
44
45
+ import java .util .function .Consumer ;
46
+
44
47
/**
45
48
* The org.slf4j.Logger interface is the main user entry point of SLF4J API.
46
49
* It is expected that logging takes place through concrete implementations
@@ -96,7 +99,7 @@ public interface Logger {
96
99
public String getName ();
97
100
98
101
/**
99
- * Make a new {@link LoggingEventBuilder } instance as appropriate for this logger and the
102
+ * Make a new {@link FluentLogApiStub } instance as appropriate for this logger and the
100
103
* desired {@link Level} passed as parameter. If this Logger is disabled for the given Level, then
101
104
* a {@link NOPLoggingEventBuilder} is returned.
102
105
*
@@ -105,21 +108,34 @@ public interface Logger {
105
108
* @return a new {@link LoggingEventBuilder} instance as appropriate for this logger
106
109
* @since 2.0
107
110
*/
108
- default public LoggingEventBuilder makeLoggingEventBuilder (Level level ) {
111
+ default public FluentLogApiStub makeLoggingEventBuilder (Level level ) {
109
112
if (isEnabledForLevel (level )) {
110
113
return new DefaultLoggingEventBuilder (this , level );
111
114
} else {
112
115
return NOPLoggingEventBuilder .singleton ();
113
116
}
114
117
}
115
118
119
+ default public FluentLogApiStub atLevel (Level level ) {
120
+ return makeLoggingEventBuilder (level );
121
+ }
122
+
123
+
116
124
/**
117
- * A convenient alias for {@link #makeLoggingEventBuilder}.
118
- *
125
+ * Use provided LoggingEventBuilder consumer to construct the logging event, and log at provided level.
126
+ *
127
+ * <code>
128
+ * logger.atDebug(log->log.message("Temperature rise from {} to {}")
129
+ * </code>
130
+ *
119
131
* @since 2.0
120
132
*/
121
- default public LoggingEventBuilder atLevel (Level level ) {
122
- return makeLoggingEventBuilder (level );
133
+ default public void atLevel (Level level , Consumer <LoggingEventBuilder > eventBuilderConsumer ) {
134
+ if (isEnabledForLevel (level )) {
135
+ DefaultLoggingEventBuilder eventBuilder = new DefaultLoggingEventBuilder (this , level );
136
+ eventBuilderConsumer .accept (eventBuilder );
137
+ eventBuilder .log ();
138
+ }
123
139
}
124
140
125
141
@@ -233,16 +249,19 @@ default public boolean isEnabledForLevel(Level level) {
233
249
/**
234
250
* Entry point for fluent-logging for {@link org.slf4j.event.Level#TRACE} level.
235
251
*
236
- * @return LoggingEventBuilder instance as appropriate for level TRACE
252
+ * @return FluentLogApiStub instance as appropriate for level TRACE
237
253
* @since 2.0
238
254
*/
239
- default public LoggingEventBuilder atTrace () {
255
+ default public FluentLogApiStub atTrace () {
240
256
if (isTraceEnabled ()) {
241
257
return makeLoggingEventBuilder (TRACE );
242
258
} else {
243
259
return NOPLoggingEventBuilder .singleton ();
244
260
}
245
261
}
262
+ default public void atTrace (Consumer <LoggingEventBuilder > eventBuilderConsumer ) {
263
+ this .atLevel (TRACE , eventBuilderConsumer );
264
+ }
246
265
247
266
/**
248
267
* Log a message with the specific Marker at the TRACE level.
@@ -429,17 +448,21 @@ default public LoggingEventBuilder atTrace() {
429
448
/**
430
449
* Entry point for fluent-logging for {@link org.slf4j.event.Level#DEBUG} level.
431
450
*
432
- * @return LoggingEventBuilder instance as appropriate for level DEBUG
451
+ * @return FluentLogApiStub instance as appropriate for level DEBUG
433
452
* @since 2.0
434
453
*/
435
- default public LoggingEventBuilder atDebug () {
454
+ default public FluentLogApiStub atDebug () {
436
455
if (isDebugEnabled ()) {
437
456
return makeLoggingEventBuilder (DEBUG );
438
457
} else {
439
458
return NOPLoggingEventBuilder .singleton ();
440
459
}
441
460
}
442
461
462
+ default public void atDebug (Consumer <LoggingEventBuilder > eventBuilderConsumer ) {
463
+ this .atLevel (DEBUG , eventBuilderConsumer );
464
+ }
465
+
443
466
/**
444
467
* Is the logger instance enabled for the INFO level?
445
468
*
@@ -568,16 +591,19 @@ default public LoggingEventBuilder atDebug() {
568
591
/**
569
592
* Entry point for fluent-logging for {@link org.slf4j.event.Level#INFO} level.
570
593
*
571
- * @return LoggingEventBuilder instance as appropriate for level INFO
594
+ * @return FluentLogApiStub instance as appropriate for level INFO
572
595
* @since 2.0
573
596
*/
574
- default public LoggingEventBuilder atInfo () {
597
+ default public FluentLogApiStub atInfo () {
575
598
if (isInfoEnabled ()) {
576
599
return makeLoggingEventBuilder (INFO );
577
600
} else {
578
601
return NOPLoggingEventBuilder .singleton ();
579
602
}
580
603
}
604
+ default public void atInfo (Consumer <LoggingEventBuilder > eventBuilderConsumer ) {
605
+ this .atLevel (INFO , eventBuilderConsumer );
606
+ }
581
607
582
608
/**
583
609
* Is the logger instance enabled for the WARN level?
@@ -708,16 +734,19 @@ default public LoggingEventBuilder atInfo() {
708
734
/**
709
735
* Entry point for fluent-logging for {@link org.slf4j.event.Level#WARN} level.
710
736
*
711
- * @return LoggingEventBuilder instance as appropriate for level WARN
737
+ * @return FluentLogApiStub instance as appropriate for level WARN
712
738
* @since 2.0
713
739
*/
714
- default public LoggingEventBuilder atWarn () {
740
+ default public FluentLogApiStub atWarn () {
715
741
if (isWarnEnabled ()) {
716
742
return makeLoggingEventBuilder (WARN );
717
743
} else {
718
744
return NOPLoggingEventBuilder .singleton ();
719
745
}
720
746
}
747
+ default public void atWarn (Consumer <LoggingEventBuilder > eventBuilderConsumer ) {
748
+ this .atLevel (WARN , eventBuilderConsumer );
749
+ }
721
750
722
751
/**
723
752
* Is the logger instance enabled for the ERROR level?
@@ -849,15 +878,21 @@ default public LoggingEventBuilder atWarn() {
849
878
/**
850
879
* Entry point for fluent-logging for {@link org.slf4j.event.Level#ERROR} level.
851
880
*
852
- * @return LoggingEventBuilder instance as appropriate for level ERROR
881
+ * @return FluentLogApiStub instance as appropriate for level ERROR
853
882
* @since 2.0
854
883
*/
855
- default public LoggingEventBuilder atError () {
884
+ default public FluentLogApiStub atError () {
856
885
if (isErrorEnabled ()) {
857
886
return makeLoggingEventBuilder (ERROR );
858
887
} else {
859
888
return NOPLoggingEventBuilder .singleton ();
860
889
}
861
890
}
862
891
892
+ default public void atError (Consumer <LoggingEventBuilder > eventBuilderConsumer ) {
893
+ this .atLevel (ERROR , eventBuilderConsumer );
894
+ }
895
+
896
+
897
+
863
898
}
0 commit comments