Skip to content

Commit 2558aee

Browse files
committed
feat(SimpleLoggerAdvisor): Add log level configuration function
Signed-off-by: engineer <[email protected]>
1 parent dca1f98 commit 2558aee

File tree

1 file changed

+73
-7
lines changed

1 file changed

+73
-7
lines changed

spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/SimpleLoggerAdvisor.java

Lines changed: 73 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,11 @@
3434
import org.springframework.lang.Nullable;
3535

3636
/**
37-
* A simple logger advisor that logs the request and response messages.
37+
* A configurable logger advisor that logs the request and response messages at
38+
* configurable log levels.
3839
*
3940
* @author Christian Tzolov
41+
* @author Engineer Zhong
4042
*/
4143
public class SimpleLoggerAdvisor implements CallAdvisor, StreamAdvisor {
4244

@@ -52,19 +54,26 @@ public class SimpleLoggerAdvisor implements CallAdvisor, StreamAdvisor {
5254

5355
private final int order;
5456

57+
private final LogLevel requestLogLevel;
58+
59+
private final LogLevel responseLogLevel;
60+
5561
public SimpleLoggerAdvisor() {
56-
this(DEFAULT_REQUEST_TO_STRING, DEFAULT_RESPONSE_TO_STRING, 0);
62+
this(DEFAULT_REQUEST_TO_STRING, DEFAULT_RESPONSE_TO_STRING, 0, LogLevel.DEBUG, LogLevel.DEBUG);
5763
}
5864

5965
public SimpleLoggerAdvisor(int order) {
60-
this(DEFAULT_REQUEST_TO_STRING, DEFAULT_RESPONSE_TO_STRING, order);
66+
this(DEFAULT_REQUEST_TO_STRING, DEFAULT_RESPONSE_TO_STRING, order, LogLevel.DEBUG, LogLevel.DEBUG);
6167
}
6268

6369
public SimpleLoggerAdvisor(@Nullable Function<ChatClientRequest, String> requestToString,
64-
@Nullable Function<ChatResponse, String> responseToString, int order) {
70+
@Nullable Function<ChatResponse, String> responseToString, int order, LogLevel requestLogLevel,
71+
LogLevel responseLogLevel) {
6572
this.requestToString = requestToString != null ? requestToString : DEFAULT_REQUEST_TO_STRING;
6673
this.responseToString = responseToString != null ? responseToString : DEFAULT_RESPONSE_TO_STRING;
6774
this.order = order;
75+
this.requestLogLevel = requestLogLevel;
76+
this.responseLogLevel = responseLogLevel;
6877
}
6978

7079
@Override
@@ -89,11 +98,41 @@ public Flux<ChatClientResponse> adviseStream(ChatClientRequest chatClientRequest
8998
}
9099

91100
private void logRequest(ChatClientRequest request) {
92-
logger.debug("request: {}", this.requestToString.apply(request));
101+
logMessage(requestLogLevel, "request: {}", this.requestToString.apply(request));
93102
}
94103

95104
private void logResponse(ChatClientResponse chatClientResponse) {
96-
logger.debug("response: {}", this.responseToString.apply(chatClientResponse.chatResponse()));
105+
logMessage(responseLogLevel, "response: {}", this.responseToString.apply(chatClientResponse.chatResponse()));
106+
}
107+
108+
private void logMessage(LogLevel level, String format, Object arg) {
109+
switch (level) {
110+
case TRACE:
111+
if (logger.isTraceEnabled()) {
112+
logger.trace(format, arg);
113+
}
114+
break;
115+
case DEBUG:
116+
if (logger.isDebugEnabled()) {
117+
logger.debug(format, arg);
118+
}
119+
break;
120+
case INFO:
121+
if (logger.isInfoEnabled()) {
122+
logger.info(format, arg);
123+
}
124+
break;
125+
case WARN:
126+
if (logger.isWarnEnabled()) {
127+
logger.warn(format, arg);
128+
}
129+
break;
130+
case ERROR:
131+
if (logger.isErrorEnabled()) {
132+
logger.error(format, arg);
133+
}
134+
break;
135+
}
97136
}
98137

99138
@Override
@@ -115,6 +154,12 @@ public static Builder builder() {
115154
return new Builder();
116155
}
117156

157+
public enum LogLevel {
158+
159+
TRACE, DEBUG, INFO, WARN, ERROR
160+
161+
}
162+
118163
public static final class Builder {
119164

120165
private Function<ChatClientRequest, String> requestToString;
@@ -123,6 +168,10 @@ public static final class Builder {
123168

124169
private int order = 0;
125170

171+
private LogLevel requestLogLevel = LogLevel.DEBUG;
172+
173+
private LogLevel responseLogLevel = LogLevel.DEBUG;
174+
126175
private Builder() {
127176
}
128177

@@ -141,8 +190,25 @@ public Builder order(int order) {
141190
return this;
142191
}
143192

193+
public Builder requestLogLevel(LogLevel logLevel) {
194+
this.requestLogLevel = logLevel;
195+
return this;
196+
}
197+
198+
public Builder responseLogLevel(LogLevel logLevel) {
199+
this.responseLogLevel = logLevel;
200+
return this;
201+
}
202+
203+
public Builder logLevel(LogLevel logLevel) {
204+
this.requestLogLevel = logLevel;
205+
this.responseLogLevel = logLevel;
206+
return this;
207+
}
208+
144209
public SimpleLoggerAdvisor build() {
145-
return new SimpleLoggerAdvisor(this.requestToString, this.responseToString, this.order);
210+
return new SimpleLoggerAdvisor(this.requestToString, this.responseToString, this.order,
211+
this.requestLogLevel, this.responseLogLevel);
146212
}
147213

148214
}

0 commit comments

Comments
 (0)