1818package org .minbox .framework .api .boot .autoconfigure .logging ;
1919
2020import org .minbox .framework .api .boot .plugin .logging .ApiBootLog ;
21+ import org .minbox .framework .api .boot .plugin .logging .admin .discovery .LoggingAdminDiscovery ;
22+ import org .minbox .framework .api .boot .plugin .logging .admin .discovery .support .LoggingAppointAdminDiscovery ;
23+ import org .minbox .framework .api .boot .plugin .logging .admin .discovery .support .LoggingRegistryCenterAdminDiscovery ;
24+ import org .minbox .framework .api .boot .plugin .logging .admin .report .LoggingAdminReport ;
25+ import org .minbox .framework .api .boot .plugin .logging .admin .report .LoggingReportScheduled ;
26+ import org .minbox .framework .api .boot .plugin .logging .admin .report .support .LoggingAdminReportSupport ;
27+ import org .minbox .framework .api .boot .plugin .logging .cache .LoggingCache ;
28+ import org .minbox .framework .api .boot .plugin .logging .cache .support .LoggingMemoryCache ;
2129import org .minbox .framework .api .boot .plugin .logging .filter .ApiBootLoggingBodyFilter ;
2230import org .minbox .framework .api .boot .plugin .logging .interceptor .ApiBootLoggingInterceptor ;
2331import org .minbox .framework .api .boot .plugin .logging .notice .away .ApiBootLogStorageNotice ;
2432import org .minbox .framework .api .boot .plugin .logging .notice .ApiBootLoggingNoticeListener ;
2533import org .minbox .framework .api .boot .plugin .logging .notice .ApiBootLogNotice ;
34+ import org .minbox .framework .api .boot .plugin .logging .notice .away .support .ApiBootLoggingAdminStorageNotice ;
2635import org .minbox .framework .api .boot .plugin .logging .notice .away .support .ApiBootLoggingLocalStorageNotice ;
2736import org .minbox .framework .api .boot .plugin .logging .span .ApiBootLoggingSpan ;
2837import org .minbox .framework .api .boot .plugin .logging .span .support .ApiBootLoggingDefaultSpan ;
2938import org .minbox .framework .api .boot .plugin .logging .tracer .ApiBootLoggingTracer ;
3039import org .minbox .framework .api .boot .plugin .logging .tracer .support .ApiBootLoggingDefaultTracer ;
3140import org .springframework .beans .factory .ObjectProvider ;
3241import org .springframework .boot .autoconfigure .AutoConfigureAfter ;
33- import org .springframework .boot .autoconfigure .condition .ConditionalOnClass ;
34- import org .springframework .boot .autoconfigure .condition .ConditionalOnMissingBean ;
42+ import org .springframework .boot .autoconfigure .condition .*;
3543import org .springframework .boot .autoconfigure .web .servlet .WebMvcAutoConfiguration ;
3644import org .springframework .boot .context .properties .EnableConfigurationProperties ;
45+ import org .springframework .cloud .client .loadbalancer .LoadBalancerClient ;
3746import org .springframework .context .annotation .Bean ;
3847import org .springframework .context .annotation .Configuration ;
3948import org .springframework .core .env .ConfigurableEnvironment ;
49+ import org .springframework .web .client .RestTemplate ;
4050import org .springframework .web .servlet .HandlerInterceptor ;
4151import org .springframework .web .servlet .config .annotation .InterceptorRegistry ;
4252import org .springframework .web .servlet .config .annotation .WebMvcConfigurer ;
4353
54+ import static org .minbox .framework .api .boot .autoconfigure .logging .ApiBootLoggingProperties .API_BOOT_LOGGING_PREFIX ;
55+
4456import java .util .List ;
4557
4658/**
5567 * GitHub:https://github.com/hengboy
5668 */
5769@ Configuration
58- @ ConditionalOnClass ({ ApiBootLog .class , HandlerInterceptor . class } )
70+ @ ConditionalOnClass (ApiBootLoggingInterceptor .class )
5971@ EnableConfigurationProperties (ApiBootLoggingProperties .class )
6072@ AutoConfigureAfter (WebMvcAutoConfiguration .class )
73+ @ ConditionalOnWebApplication
6174public class ApiBootLoggingAutoConfiguration implements WebMvcConfigurer {
6275 /**
6376 * ApiBoot Logging Properties
@@ -117,31 +130,81 @@ public ApiBootLoggingBodyFilter apiBootLoggingFilter() {
117130 return new ApiBootLoggingBodyFilter ();
118131 }
119132
133+ /**
134+ * ApiBoot Logging Console Notice Listener
135+ *
136+ * @param apiBootLogStorageNotice ApiBoot Logging Notice Support Instance
137+ * @return ApiBootLoggingNoticeListener
138+ * @see ApiBootLoggingLocalStorageNotice
139+ * @see org.minbox.framework.api.boot.plugin.logging.notice.away.support.ApiBootLoggingAdminStorageNotice
140+ * @see org.minbox.framework.api.boot.plugin.logging.notice.away.support.ApiBootLoggingLocalStorageNotice
141+ */
142+ @ Bean
143+ public ApiBootLoggingNoticeListener apiBootLoggingNoticeListener (ApiBootLogStorageNotice apiBootLogStorageNotice ) {
144+ return new ApiBootLoggingNoticeListener (apiBootLogStorageNotice , apiBootLoggingProperties .isFormatConsoleLogJson ());
145+ }
146+
147+
120148 /**
121149 * ApiBoot Logging Local Notice
122150 *
123151 * @return ApiBootLoggingLocalStorageNotice
124152 */
125153 @ Bean
126- @ ConditionalOnMissingBean
154+ @ ConditionalOnMissingBean ( LoggingAdminDiscovery . class )
127155 public ApiBootLoggingLocalStorageNotice apiBootLoggingLocalNotice (ObjectProvider <List <ApiBootLogNotice >> localNoticeObjectProvider ) {
128156 return new ApiBootLoggingLocalStorageNotice (localNoticeObjectProvider .getIfAvailable ());
129157 }
130158
131159 /**
132- * ApiBoot Logging Console Notice Listener
160+ * ApiBoot Logging Admin Notice
133161 *
134- * @param apiBootLogStorageNotice ApiBoot Logging Notice Support Instance
135- * @return ApiBootLoggingNoticeListener
136- * @see ApiBootLoggingLocalStorageNotice
137- * @see org.minbox.framework.api.boot.plugin.logging.notice.away.support.ApiBootLoggingRestStorageNotice
138- * @see org.minbox.framework.api.boot.plugin.logging.notice.away.support.ApiBootLoggingMqStorageNotice
162+ * @return ApiBootLoggingAdminStorageNotice
139163 */
140164 @ Bean
141- public ApiBootLoggingNoticeListener apiBootLoggingNoticeListener (ApiBootLogStorageNotice apiBootLogStorageNotice ) {
142- return new ApiBootLoggingNoticeListener (apiBootLogStorageNotice );
165+ @ ConditionalOnMissingBean
166+ @ ConditionalOnBean (LoggingAdminDiscovery .class )
167+ public ApiBootLoggingAdminStorageNotice apiBootLoggingAdminStorageNotice (LoggingCache loggingCache ) {
168+ return new ApiBootLoggingAdminStorageNotice (loggingCache );
143169 }
144170
171+ /**
172+ * Logging Memory Cache
173+ *
174+ * @return LoggingMemoryCache
175+ */
176+ @ Bean
177+ @ ConditionalOnProperty (prefix = API_BOOT_LOGGING_PREFIX , name = "logging-cache-away" , havingValue = "memory" , matchIfMissing = true )
178+ @ ConditionalOnMissingBean
179+ public LoggingCache loggingMemoryCache () {
180+ return new LoggingMemoryCache ();
181+ }
182+
183+ /**
184+ * Logging Admin Report
185+ *
186+ * @param loggingAdminDiscovery Logging Admin Discovery
187+ * @param restTemplate RestTemplate
188+ * @param loggingCache Logging Cache
189+ * @return LoggingAdminReportSupport
190+ */
191+ @ Bean
192+ @ ConditionalOnMissingBean
193+ public LoggingAdminReport loggingAdminReportSupport (LoggingAdminDiscovery loggingAdminDiscovery , RestTemplate restTemplate , LoggingCache loggingCache , ConfigurableEnvironment environment ) {
194+ return new LoggingAdminReportSupport (loggingAdminDiscovery , restTemplate , loggingCache , apiBootLoggingProperties .getNumberOfRequestLog (), environment );
195+ }
196+
197+ /**
198+ * Logging Report Scheduled Task Job
199+ *
200+ * @param loggingAdminReport Logging Admin Report
201+ * @return LoggingReportScheduled
202+ */
203+ @ Bean
204+ @ ConditionalOnMissingBean
205+ public LoggingReportScheduled loggingReportScheduled (LoggingAdminReport loggingAdminReport ) {
206+ return new LoggingReportScheduled (loggingAdminReport , apiBootLoggingProperties .getReportInitialDelaySecond (), apiBootLoggingProperties .getReportIntervalSecond ());
207+ }
145208
146209 /**
147210 * registry logging interceptor
@@ -152,4 +215,75 @@ public ApiBootLoggingNoticeListener apiBootLoggingNoticeListener(ApiBootLogStora
152215 public void addInterceptors (InterceptorRegistry registry ) {
153216 registry .addInterceptor (apiBootLoggingInterceptor ()).addPathPatterns (apiBootLoggingProperties .getLoggingPathPrefix ());
154217 }
218+
219+ /**
220+ * Rest Template Instance
221+ *
222+ * @return RestTemplate
223+ */
224+ @ Bean
225+ @ ConditionalOnMissingBean
226+ public RestTemplate restTemplate () {
227+ return new RestTemplate ();
228+ }
229+
230+ /**
231+ * ApiBoot Logging Admin Appoint Away
232+ */
233+ @ Configuration
234+ @ EnableConfigurationProperties (ApiBootLoggingProperties .class )
235+ @ ConditionalOnMissingBean (LoggingRegistryCenterAdminDiscovery .class )
236+ @ ConditionalOnProperty (prefix = API_BOOT_LOGGING_PREFIX , name = "admin.server-address" , matchIfMissing = true )
237+ public static class ApiBootLoggingAdminAppointAutoConfiguration {
238+ /**
239+ * ApiBoot Logging Properties
240+ */
241+ private ApiBootLoggingProperties apiBootLoggingProperties ;
242+
243+ public ApiBootLoggingAdminAppointAutoConfiguration (ApiBootLoggingProperties apiBootLoggingProperties ) {
244+ this .apiBootLoggingProperties = apiBootLoggingProperties ;
245+ }
246+
247+ /**
248+ * ApiBoot Logging Admin Config Discovery
249+ * Multiple Use "," Separation
250+ *
251+ * @return LoggingAdminDiscovery
252+ */
253+ @ Bean
254+ @ ConditionalOnMissingBean
255+ public LoggingAppointAdminDiscovery loggingConfigAdminDiscovery () {
256+ String [] serverAddressArray = apiBootLoggingProperties .getAdmin ().getServerAddress ().split ("," );
257+ return new LoggingAppointAdminDiscovery (serverAddressArray );
258+ }
259+ }
260+
261+ /**
262+ * ApiBoot Logging Admin Discovery Away
263+ */
264+ @ Configuration
265+ @ ConditionalOnClass (LoadBalancerClient .class )
266+ @ EnableConfigurationProperties (ApiBootLoggingProperties .class )
267+ @ ConditionalOnProperty (prefix = API_BOOT_LOGGING_PREFIX , name = "discovery.service-id" )
268+ public static class ApiBootLoggingAdminDiscoveryAutoConfiguration {
269+ /**
270+ * ApiBoot Logging Properties
271+ */
272+ private ApiBootLoggingProperties apiBootLoggingProperties ;
273+
274+ public ApiBootLoggingAdminDiscoveryAutoConfiguration (ApiBootLoggingProperties apiBootLoggingProperties ) {
275+ this .apiBootLoggingProperties = apiBootLoggingProperties ;
276+ }
277+
278+ /**
279+ * ApiBoot Logging Admin Registry Center Discovery
280+ *
281+ * @return LoggingRegistryCenterAdminDiscovery
282+ */
283+ @ Bean
284+ @ ConditionalOnMissingBean
285+ public LoggingRegistryCenterAdminDiscovery loggingRegistryCenterAdminDiscovery (LoadBalancerClient loadBalancerClient ) {
286+ return new LoggingRegistryCenterAdminDiscovery (apiBootLoggingProperties .getDiscovery ().getServiceId (), apiBootLoggingProperties .getDiscovery ().getUsername (), apiBootLoggingProperties .getDiscovery ().getPassword (), loadBalancerClient );
287+ }
288+ }
155289}
0 commit comments