Skip to content

File tree

2 files changed

+167
-204
lines changed

2 files changed

+167
-204
lines changed
 

‎log4j-sdk/src/main/java/org/apache/logging/log4j/sdk/logger/AbstractLogger.java

+166-198
Original file line numberDiff line numberDiff line change
@@ -285,8 +285,10 @@ protected boolean requiresLocation() {
285285
return false;
286286
}
287287

288-
// <editor-fold desc="Message factories">
288+
// <editor-fold desc="Unconditional logging">
289289
// Methods that always log a message regardless of the current logger level.
290+
291+
// <editor-fold desc="Logging methods">
290292
@PerformanceSensitive
291293
protected void logMessage(
292294
final String fqcn,
@@ -521,6 +523,58 @@ protected void logMessage(
521523
}
522524
// </editor-fold>
523525

526+
// <editor-fold desc="Flow messages">
527+
protected @Nullable EntryMessage logEnterMessage(
528+
final String fqcn, final @Nullable String format, final @Nullable Object... params) {
529+
final EntryMessage entryMessage = flowMessageFactory.newEntryMessage(format, params);
530+
logMessageSafely(fqcn, null, Level.TRACE, ENTRY_MARKER, entryMessage, null);
531+
return entryMessage;
532+
}
533+
534+
protected @Nullable EntryMessage logEnterMessage(final String fqcn, final @Nullable Message message) {
535+
final EntryMessage entryMessage = flowMessageFactory.newEntryMessage(message);
536+
logMessageSafely(fqcn, null, Level.TRACE, ENTRY_MARKER, entryMessage, null);
537+
return entryMessage;
538+
}
539+
540+
protected void logExitMessage(
541+
final String fqcn, final @Nullable EntryMessage message, final @Nullable Object result) {
542+
logMessageSafely(
543+
fqcn, null, Level.TRACE, EXIT_MARKER, flowMessageFactory.newExitMessage(result, message), null);
544+
}
545+
546+
protected void logExitMessage(final String fqcn, final @Nullable Message message, final @Nullable Object result) {
547+
logMessageSafely(
548+
fqcn, null, Level.TRACE, EXIT_MARKER, flowMessageFactory.newExitMessage(result, message), null);
549+
}
550+
551+
protected void logExitMessage(final String fqcn, final @Nullable String format, final @Nullable Object result) {
552+
logMessageSafely(fqcn, null, Level.TRACE, EXIT_MARKER, flowMessageFactory.newExitMessage(format, result), null);
553+
}
554+
// </editor-fold>
555+
556+
// <editor-fold desc="Miscellaneous">
557+
protected void logCatchingMessage(final String fqcn, final Level level, final @Nullable Throwable throwable) {
558+
logMessageSafely(fqcn, null, level, CATCHING_MARKER, messageFactory.newMessage(CATCHING), throwable);
559+
}
560+
561+
protected void logPrintfMessage(
562+
final String fqcn,
563+
final Level level,
564+
final @Nullable Marker marker,
565+
final String format,
566+
final Object... params) {
567+
final Message message = new StringFormattedMessage(format, params);
568+
logMessageSafely(fqcn, null, level, marker, message, message.getThrowable());
569+
}
570+
571+
protected void logThrowingMessage(final String fqcn, final Level level, final Throwable throwable) {
572+
logMessageSafely(fqcn, null, level, THROWING_MARKER, messageFactory.newMessage(THROWING), throwable);
573+
}
574+
// </editor-fold>
575+
576+
// </editor-fold>
577+
524578
// <editor-fold desc="Filter methods">
525579
@Override
526580
public boolean isDebugEnabled() {
@@ -1076,162 +1130,6 @@ public void logMessage(
10761130
}
10771131
// </editor-fold>
10781132

1079-
// <editor-fold desc="Flow messages">
1080-
/**
1081-
* Logs entry to a method with location information.
1082-
*
1083-
* @param fqcn The fully qualified class name of the <b>caller</b>.
1084-
* @param format The format String for the parameters.
1085-
* @param params The parameters to the method.
1086-
* @return The EntryMessage.
1087-
*/
1088-
protected @Nullable EntryMessage enter(
1089-
final String fqcn, final @Nullable String format, final @Nullable Object... params) {
1090-
EntryMessage entryMsg = null;
1091-
if (isEnabled(Level.TRACE, ENTRY_MARKER)) {
1092-
logMessageSafely(
1093-
fqcn,
1094-
null,
1095-
Level.TRACE,
1096-
ENTRY_MARKER,
1097-
entryMsg = flowMessageFactory.newEntryMessage(format, params),
1098-
null);
1099-
}
1100-
return entryMsg;
1101-
}
1102-
1103-
/**
1104-
* Logs entry to a method with location information.
1105-
*
1106-
* @param fqcn The fully qualified class name of the <b>caller</b>.
1107-
* @param message the Message.
1108-
* @return The EntryMessage.
1109-
* @since 2.6
1110-
*/
1111-
protected @Nullable EntryMessage enter(final String fqcn, final @Nullable Message message) {
1112-
EntryMessage flowMessage = null;
1113-
if (isEnabled(Level.TRACE, ENTRY_MARKER)) {
1114-
logMessageSafely(
1115-
fqcn,
1116-
null,
1117-
Level.TRACE,
1118-
ENTRY_MARKER,
1119-
flowMessage = flowMessageFactory.newEntryMessage(message),
1120-
null);
1121-
}
1122-
return flowMessage;
1123-
}
1124-
1125-
/**
1126-
* Logs entry to a method with location information.
1127-
*
1128-
* @param fqcn The fully qualified class name of the <b>caller</b>.
1129-
* @param format Format String for the parameters.
1130-
* @param paramSuppliers The Suppliers of the parameters.
1131-
* @return The EntryMessage.
1132-
*/
1133-
@SuppressWarnings("deprecation")
1134-
protected @Nullable EntryMessage enter(
1135-
final String fqcn, final @Nullable String format, final Supplier<?>... paramSuppliers) {
1136-
EntryMessage entryMsg = null;
1137-
if (isEnabled(Level.TRACE, ENTRY_MARKER)) {
1138-
final Message message =
1139-
entryMsg = flowMessageFactory.newEntryMessage(format, LambdaUtil.getAll(paramSuppliers));
1140-
logMessageSafely(fqcn, null, Level.TRACE, ENTRY_MARKER, message, null);
1141-
}
1142-
return entryMsg;
1143-
}
1144-
1145-
/**
1146-
* Logs exiting from a method with the result and location information.
1147-
*
1148-
* @param fqcn The fully qualified class name of the <b>caller</b>.
1149-
* @param <R> The type of the parameter and object being returned.
1150-
* @param result The result being returned from the method call.
1151-
* @return the return value passed to this method.
1152-
*/
1153-
protected <R> R exit(final String fqcn, final R result) {
1154-
if (isEnabled(Level.TRACE, EXIT_MARKER)) {
1155-
final Message exitMessage = flowMessageFactory.newExitMessage(null, result);
1156-
logMessageSafely(fqcn, null, Level.TRACE, EXIT_MARKER, exitMessage, null);
1157-
}
1158-
return result;
1159-
}
1160-
1161-
protected <R> @Nullable R exit(final String fqcn, final @Nullable EntryMessage message, final @Nullable R result) {
1162-
// If the message is null, traceEnter returned null because flow logging was disabled, we can optimize out
1163-
// calling isEnabled().
1164-
if (message != null && isEnabled(Level.TRACE, EXIT_MARKER, message, null)) {
1165-
final Message exitMessage = flowMessageFactory.newExitMessage(result, message);
1166-
logMessageSafely(fqcn, null, Level.TRACE, EXIT_MARKER, exitMessage, null);
1167-
}
1168-
return result;
1169-
}
1170-
1171-
protected <R> @Nullable R exit(final String fqcn, final @Nullable Message message, final @Nullable R result) {
1172-
// If the message is null, traceEnter returned null because flow logging was disabled, we can optimize out
1173-
// calling isEnabled().
1174-
if (message != null && isEnabled(Level.TRACE, EXIT_MARKER, message, null)) {
1175-
final Message exitMessage = flowMessageFactory.newExitMessage(result, message);
1176-
logMessageSafely(fqcn, null, Level.TRACE, EXIT_MARKER, exitMessage, null);
1177-
}
1178-
return result;
1179-
}
1180-
1181-
/**
1182-
* Logs exiting from a method with the result and location information.
1183-
*
1184-
* @param fqcn The fully qualified class name of the <b>caller</b>.
1185-
* @param format The format string.
1186-
* @param <R> The type of the parameter and object being returned.
1187-
* @param result The result being returned from the method call.
1188-
* @return the return value passed to this method.
1189-
*/
1190-
protected <R> @Nullable R exit(final String fqcn, final @Nullable String format, final @Nullable R result) {
1191-
if (isEnabled(Level.TRACE, EXIT_MARKER)) {
1192-
final Message exitMessage = flowMessageFactory.newExitMessage(format, result);
1193-
logMessageSafely(fqcn, null, Level.TRACE, EXIT_MARKER, exitMessage, null);
1194-
}
1195-
return result;
1196-
}
1197-
// </editor-fold>
1198-
1199-
// <editor-fold desc="Miscellaneous">
1200-
protected void catching(final String fqcn, final Level level, final @Nullable Throwable throwable) {
1201-
if (isEnabled(level, CATCHING_MARKER)) {
1202-
logMessageSafely(fqcn, null, level, CATCHING_MARKER, messageFactory.newMessage(CATCHING), throwable);
1203-
}
1204-
}
1205-
1206-
protected void printf(
1207-
final String fqcn,
1208-
final Level level,
1209-
final @Nullable Marker marker,
1210-
final String format,
1211-
final Object... params) {
1212-
if (isEnabled(level, marker, format, params)) {
1213-
final Message message = new StringFormattedMessage(format, params);
1214-
logMessageSafely(fqcn, null, level, marker, message, message.getThrowable());
1215-
}
1216-
}
1217-
1218-
/**
1219-
* Logs a Throwable to be thrown.
1220-
*
1221-
* @param <T> the type of the Throwable.
1222-
* @param fqcn the fully qualified class name of this Logger implementation.
1223-
* @param level The logging Level.
1224-
* @param throwable The Throwable.
1225-
* @return the Throwable.
1226-
*/
1227-
protected <T extends Throwable> T throwing(final String fqcn, final Level level, final T throwable) {
1228-
if (isEnabled(level, THROWING_MARKER)) {
1229-
logMessageSafely(fqcn, null, level, THROWING_MARKER, messageFactory.newMessage(THROWING), throwable);
1230-
}
1231-
return throwable;
1232-
}
1233-
// </editor-fold>
1234-
12351133
// </editor-fold>
12361134

12371135
// <editor-fold desc="Public API">
@@ -3877,109 +3775,179 @@ public void warn(
38773775
// </editor-fold>
38783776

38793777
// <editor-fold desc="Flow messages">
3778+
private @Nullable EntryMessage enter(final @Nullable String format, final @Nullable Object... params) {
3779+
EntryMessage entryMessage = null;
3780+
if (isEnabled(Level.TRACE, ENTRY_MARKER)) {
3781+
entryMessage = logEnterMessage(FQCN, format, params);
3782+
}
3783+
return entryMessage;
3784+
}
3785+
38803786
@Override
3881-
public @Nullable EntryMessage traceEntry() {
3882-
return enter(FQCN, null, EMPTY_PARAMS);
3787+
public final @Nullable EntryMessage traceEntry() {
3788+
return enter(null, EMPTY_PARAMS);
38833789
}
38843790

38853791
@Override
3886-
public @Nullable EntryMessage traceEntry(final String format, final Object... params) {
3887-
return enter(FQCN, format, params);
3792+
public final @Nullable EntryMessage traceEntry(final String format, final Object... params) {
3793+
return enter(format, params);
3794+
}
3795+
3796+
@SuppressWarnings("deprecation")
3797+
private @Nullable EntryMessage enter(final @Nullable String format, final Supplier<?>... paramSuppliers) {
3798+
EntryMessage entryMessage = null;
3799+
if (isEnabled(Level.TRACE, ENTRY_MARKER)) {
3800+
entryMessage = logEnterMessage(FQCN, format, LambdaUtil.getAll(paramSuppliers));
3801+
}
3802+
return entryMessage;
38883803
}
38893804

38903805
@Override
38913806
@SuppressWarnings("deprecation")
3892-
public @Nullable EntryMessage traceEntry(final Supplier<?>... paramSuppliers) {
3893-
return enter(FQCN, null, paramSuppliers);
3807+
public final @Nullable EntryMessage traceEntry(final Supplier<?>... paramSuppliers) {
3808+
return enter(null, paramSuppliers);
38943809
}
38953810

38963811
@Override
38973812
@SuppressWarnings("deprecation")
3898-
public @Nullable EntryMessage traceEntry(final String format, final Supplier<?>... paramSuppliers) {
3899-
return enter(FQCN, format, paramSuppliers);
3813+
public final @Nullable EntryMessage traceEntry(final String format, final Supplier<?>... paramSuppliers) {
3814+
return enter(format, paramSuppliers);
3815+
}
3816+
3817+
@Override
3818+
public final @Nullable EntryMessage traceEntry(final @Nullable Message message) {
3819+
EntryMessage entryMessage = null;
3820+
if (isEnabled(Level.TRACE, ENTRY_MARKER)) {
3821+
entryMessage = logEnterMessage(FQCN, message);
3822+
}
3823+
return entryMessage;
3824+
}
3825+
3826+
private <R> @Nullable R exit(final @Nullable String format, final @Nullable R result) {
3827+
if (isEnabled(Level.TRACE, EXIT_MARKER)) {
3828+
logExitMessage(FQCN, format, result);
3829+
}
3830+
return result;
39003831
}
39013832

39023833
@Override
3903-
public @Nullable EntryMessage traceEntry(final @Nullable Message message) {
3904-
return enter(FQCN, message);
3834+
public final void traceExit() {
3835+
exit((String) null, null);
39053836
}
39063837

39073838
@Override
3908-
public void traceExit() {
3909-
exit(FQCN, (String) null, null);
3839+
public final <R> @Nullable R traceExit(final @Nullable R result) {
3840+
return exit((String) null, result);
39103841
}
39113842

39123843
@Override
3913-
public <R> @Nullable R traceExit(final R result) {
3914-
return exit(FQCN, (String) null, result);
3844+
public final <R> @Nullable R traceExit(final String format, final @Nullable R result) {
3845+
return exit(format, result);
3846+
}
3847+
3848+
private <R> @Nullable R exit(final @Nullable EntryMessage message, final @Nullable R result) {
3849+
// If the message is null, traceEnter returned null because flow logging was disabled, we can optimize out
3850+
// calling isEnabled().
3851+
if (message != null && isEnabled(Level.TRACE, EXIT_MARKER, message, null)) {
3852+
logExitMessage(FQCN, message, result);
3853+
}
3854+
return result;
3855+
}
3856+
3857+
@Override
3858+
public final void traceExit(final EntryMessage message) {
3859+
exit(message, null);
3860+
}
3861+
3862+
@Override
3863+
public final <R> @Nullable R traceExit(final EntryMessage message, final @Nullable R result) {
3864+
return exit(message, result);
3865+
}
3866+
3867+
@Override
3868+
public final <R> @Nullable R traceExit(final @Nullable Message message, final @Nullable R result) {
3869+
// If the message is null, traceEnter returned null because flow logging was disabled, we can optimize out
3870+
// calling isEnabled().
3871+
if (message != null && isEnabled(Level.TRACE, EXIT_MARKER, message, null)) {
3872+
logExitMessage(FQCN, message, result);
3873+
}
3874+
return result;
39153875
}
39163876

39173877
@Override
3918-
public <R> @Nullable R traceExit(final String format, final R result) {
3919-
return exit(FQCN, format, result);
3878+
public void entry() {
3879+
enter(null, EMPTY_PARAMS);
39203880
}
39213881

39223882
@Override
3923-
public void traceExit(final EntryMessage message) {
3924-
exit(FQCN, message, null);
3883+
public void entry(final Object... params) {
3884+
enter(null, params);
39253885
}
39263886

39273887
@Override
3928-
public <R> @Nullable R traceExit(final EntryMessage message, final R result) {
3929-
return exit(FQCN, message, result);
3888+
public void exit() {
3889+
exit((String) null, null);
39303890
}
39313891

39323892
@Override
3933-
public <R> @Nullable R traceExit(final @Nullable Message message, final R result) {
3934-
return exit(FQCN, message, result);
3893+
public <R> R exit(final R result) {
3894+
return exit((String) null, result);
39353895
}
39363896
// </editor-fold>
39373897

39383898
// <editor-fold desc="Miscellaneous">
39393899
@Override
3940-
public void catching(final Level level, final @Nullable Throwable throwable) {
3941-
catching(FQCN, level, throwable);
3900+
public final void catching(final Level level, final @Nullable Throwable throwable) {
3901+
if (isEnabled(level, CATCHING_MARKER)) {
3902+
logCatchingMessage(FQCN, level, throwable);
3903+
}
39423904
}
39433905

39443906
@Override
3945-
public void catching(final @Nullable Throwable throwable) {
3946-
catching(FQCN, Level.ERROR, throwable);
3907+
public final void catching(final @Nullable Throwable throwable) {
3908+
catching(Level.ERROR, throwable);
39473909
}
39483910

3949-
@SuppressWarnings("unchecked")
39503911
@Override
3951-
public <MF extends MessageFactory> MF getMessageFactory() {
3952-
return (MF) messageFactory;
3912+
public final void printf(
3913+
final Level level, final @Nullable Marker marker, final String format, final Object... params) {
3914+
if (isEnabled(level, marker, format, params)) {
3915+
logPrintfMessage(FQCN, level, marker, format, params);
3916+
}
39533917
}
39543918

39553919
@Override
3956-
public FlowMessageFactory getFlowMessageFactory() {
3957-
return flowMessageFactory;
3920+
public final void printf(final Level level, final String format, final Object... params) {
3921+
printf(level, null, format, params);
39583922
}
39593923

39603924
@Override
3961-
public String getName() {
3962-
return name;
3925+
public final <T extends Throwable> T throwing(final T throwable) {
3926+
return throwing(Level.ERROR, throwable);
39633927
}
39643928

39653929
@Override
3966-
public void printf(final Level level, final @Nullable Marker marker, final String format, final Object... params) {
3967-
printf(FQCN, level, marker, format, params);
3930+
public final <T extends Throwable> T throwing(final Level level, final T throwable) {
3931+
if (isEnabled(level, THROWING_MARKER)) {
3932+
logThrowingMessage(FQCN, level, throwable);
3933+
}
3934+
return throwable;
39683935
}
39693936

3937+
@SuppressWarnings("unchecked")
39703938
@Override
3971-
public void printf(final Level level, final String format, final Object... params) {
3972-
printf(FQCN, level, null, format, params);
3939+
public <MF extends MessageFactory> MF getMessageFactory() {
3940+
return (MF) messageFactory;
39733941
}
39743942

39753943
@Override
3976-
public <T extends Throwable> T throwing(final T throwable) {
3977-
return throwing(FQCN, Level.ERROR, throwable);
3944+
public FlowMessageFactory getFlowMessageFactory() {
3945+
return flowMessageFactory;
39783946
}
39793947

39803948
@Override
3981-
public <T extends Throwable> T throwing(final Level level, final T throwable) {
3982-
return throwing(FQCN, level, throwable);
3949+
public String getName() {
3950+
return name;
39833951
}
39843952
// </editor-fold>
39853953

‎log4j-sdk/src/test/java/org/apache/logging/log4j/sdk/logger/AbstractLoggerTest.java

+1-6
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,7 @@ public class AbstractLoggerTest {
4242
"logMessage(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;",
4343
"logMessage(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Ljava/lang/String;[Lorg/apache/logging/log4j/util/Supplier;)V",
4444
// logging methods with more than 3 parameters
45-
"logIfEnabled(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;",
46-
// some exotic methods
47-
"enter(",
48-
"exit(",
49-
"printf(Ljava/lang/String;",
50-
"throwing(Ljava/lang/String;");
45+
"logIfEnabled(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;");
5146

5247
@Test
5348
void does_not_exceed_MaxInlineSize() throws Exception {

0 commit comments

Comments
 (0)
Please sign in to comment.