diff --git a/azure/on-demand-spring-boot-starter-azure-grpc/build.gradle b/azure/on-demand-spring-boot-starter-azure-grpc/build.gradle deleted file mode 100644 index fb6655c4..00000000 --- a/azure/on-demand-spring-boot-starter-azure-grpc/build.gradle +++ /dev/null @@ -1,25 +0,0 @@ - -dependencies { - api project(':appender') - api project(':api') - - api("org.slf4j:slf4j-api:${slf4jVersion}") - - api ("org.codehaus.janino:commons-compiler:${janinoVersion}") - api ("org.codehaus.janino:commons-compiler-jdk:${janinoVersion}") - api ("org.codehaus.janino:janino:${janinoVersion}") - - api("org.springframework.boot:spring-boot-autoconfigure:${springBootVersion}") - api("org.springframework.boot:spring-boot-starter-logging:${springBootVersion}") - - api "io.grpc:grpc-netty:${grpcNettyVersion}" - - testImplementation("org.springframework.boot:spring-boot-starter-test:${springBootVersion}") - testImplementation project(":azure:spring-boot-autoconfigure-azure-test") - - testImplementation project(':azure:spring-boot-autoconfigure-azure') -} - - - - diff --git a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/GrpcServicesConfiguration.java b/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/GrpcServicesConfiguration.java deleted file mode 100644 index afbb8a78..00000000 --- a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/GrpcServicesConfiguration.java +++ /dev/null @@ -1,39 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.grpc.lognet.properties; - -import java.util.ArrayList; -import java.util.List; - -public class GrpcServicesConfiguration { - - private boolean enabled = true; - - private List services = new ArrayList<>(); - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - public boolean isEnabled() { - return enabled; - } - - public void setServices(List services) { - this.services = services; - } - - public List getServices() { - return services; - } - - - public boolean isActive() { - if (enabled) { - for (ServiceMatcherConfiguration service : services) { - if (service.isActive()) { - return true; - } - } - } - return false; - } -} \ No newline at end of file diff --git a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandFailure.java b/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandFailure.java deleted file mode 100644 index 97f493b2..00000000 --- a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandFailure.java +++ /dev/null @@ -1,33 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.grpc.lognet.properties; - -public class OndemandFailure { - - private String level = "info"; - - private OndemandGrpcResponseTrigger grpc = new OndemandGrpcResponseTrigger(); - private OndemandLogLevelTrigger logger = new OndemandLogLevelTrigger(); - - public void setLevel(String level) { - this.level = level; - } - - public String getLevel() { - return level; - } - - public OndemandGrpcResponseTrigger getGrpc() { - return grpc; - } - - public void setGrpc(OndemandGrpcResponseTrigger grpc) { - this.grpc = grpc; - } - - public OndemandLogLevelTrigger getLogger() { - return logger; - } - - public void setLogger(OndemandLogLevelTrigger logger) { - this.logger = logger; - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandGrpcHeader.java b/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandGrpcHeader.java deleted file mode 100644 index ed518efd..00000000 --- a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandGrpcHeader.java +++ /dev/null @@ -1,23 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.grpc.lognet.properties; - -public class OndemandGrpcHeader { - - private boolean enabled = true; - private String name; - - public String getName() { - return name; - } - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - public void setName(String name) { - this.name = name; - } - - public boolean isEnabled() { - return enabled; - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandGrpcRequestTrigger.java b/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandGrpcRequestTrigger.java deleted file mode 100644 index 4adb1d45..00000000 --- a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandGrpcRequestTrigger.java +++ /dev/null @@ -1,28 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.grpc.lognet.properties; - -import java.util.ArrayList; -import java.util.List; - -public class OndemandGrpcRequestTrigger { - - private boolean enabled = true; - - private List headers = new ArrayList<>(); - - public List getHeaders() { - return headers; - } - - public void setHeaders(List headers) { - this.headers = headers; - } - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - public boolean isEnabled() { - return enabled; - } - -} diff --git a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandGrpcResponseTrigger.java b/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandGrpcResponseTrigger.java deleted file mode 100644 index ff806b20..00000000 --- a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandGrpcResponseTrigger.java +++ /dev/null @@ -1,40 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.grpc.lognet.properties; - -import io.grpc.Status; - -import java.util.ArrayList; -import java.util.List; - -public class OndemandGrpcResponseTrigger { - - private static List allStatusCodesExceptOk() { - ArrayList list = new ArrayList(); - Status.Code[] values = Status.Code.values(); - for (Status.Code value : values) { - if(value != Status.Code.OK) { - list.add(value.toString()); - } - } - return list; - } - - private boolean enabled = true; - - private List status = allStatusCodesExceptOk(); - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - public boolean isEnabled() { - return enabled; - } - - public List getStatus() { - return status; - } - - public void setStatus(List status) { - this.status = status; - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandLogLevelTrigger.java b/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandLogLevelTrigger.java deleted file mode 100644 index 3e52b20e..00000000 --- a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandLogLevelTrigger.java +++ /dev/null @@ -1,37 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.grpc.lognet.properties; - -import java.util.ArrayList; -import java.util.List; - -public class OndemandLogLevelTrigger { - - private boolean enabled = true; - - private String level = "error"; - - private List name = new ArrayList<>(); - - public void setLevel(String level) { - this.level = level; - } - - public String getLevel() { - return level; - } - - public List getName() { - return name; - } - - public void setName(List name) { - this.name = name; - } - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - public boolean isEnabled() { - return enabled; - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandPath.java b/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandPath.java deleted file mode 100644 index 2c47ca1d..00000000 --- a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandPath.java +++ /dev/null @@ -1,66 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.grpc.lognet.properties; - -import java.util.ArrayList; -import java.util.List; - -public class OndemandPath { - - private boolean enabled = true; - - private String serviceName; - - private List methodNames = new ArrayList<>(); - - private OndemandSuccess success = new OndemandSuccess(); - private OndemandFailure failure = new OndemandFailure(); - - private OndemandTroubleshoot troubleshoot = new OndemandTroubleshoot(); - - public boolean isEnabled() { - return enabled; - } - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - public OndemandSuccess getSuccess() { - return success; - } - - public void setSuccess(OndemandSuccess success) { - this.success = success; - } - - public OndemandFailure getFailure() { - return failure; - } - - public void setFailure(OndemandFailure failure) { - this.failure = failure; - } - - public String getServiceName() { - return serviceName; - } - - public void setServiceName(String serviceName) { - this.serviceName = serviceName; - } - - public List getMethodNames() { - return methodNames; - } - - public void setMethodNames(List methodNames) { - this.methodNames = methodNames; - } - - public OndemandTroubleshoot getTroubleshoot() { - return troubleshoot; - } - - public void setTroubleshoot(OndemandTroubleshoot troubleshoot) { - this.troubleshoot = troubleshoot; - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandProperties.java b/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandProperties.java deleted file mode 100644 index 2aff94f8..00000000 --- a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandProperties.java +++ /dev/null @@ -1,71 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.grpc.lognet.properties; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.core.Ordered; - -import java.util.ArrayList; -import java.util.List; - -@ConfigurationProperties(prefix = "no.entur.logging.grpc.ondemand") -public class OndemandProperties { - - private boolean enabled; - - private int interceptorOrder = Ordered.HIGHEST_PRECEDENCE; - - private OndemandSuccess success = new OndemandSuccess(); - - private OndemandFailure failure = new OndemandFailure(); - - private OndemandTroubleshoot troubleshoot = new OndemandTroubleshoot(); - - private List paths = new ArrayList<>(); - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - public boolean isEnabled() { - return enabled; - } - - public OndemandSuccess getSuccess() { - return success; - } - - public void setSuccess(OndemandSuccess success) { - this.success = success; - } - - public OndemandFailure getFailure() { - return failure; - } - - public void setFailure(OndemandFailure failure) { - this.failure = failure; - } - - public List getPaths() { - return paths; - } - - public void setPaths(List paths) { - this.paths = paths; - } - - public OndemandTroubleshoot getTroubleshoot() { - return troubleshoot; - } - - public void setTroubleshoot(OndemandTroubleshoot troubleshoot) { - this.troubleshoot = troubleshoot; - } - - public int getInterceptorOrder() { - return interceptorOrder; - } - - public void setInterceptorOrder(int interceptorOrder) { - this.interceptorOrder = interceptorOrder; - } -} \ No newline at end of file diff --git a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandSuccess.java b/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandSuccess.java deleted file mode 100644 index cd4f6643..00000000 --- a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandSuccess.java +++ /dev/null @@ -1,14 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.grpc.lognet.properties; - -public class OndemandSuccess { - - private String level = "warn"; - - public void setLevel(String level) { - this.level = level; - } - - public String getLevel() { - return level; - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandTroubleshoot.java b/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandTroubleshoot.java deleted file mode 100644 index bc8e73b0..00000000 --- a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/OndemandTroubleshoot.java +++ /dev/null @@ -1,31 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.grpc.lognet.properties; - -/** - * - * Troubleshooting only works for requests, i.e. debugging is assumed to hold so much data that - * caching everything until the response is ready is too costly. - * - */ - -public class OndemandTroubleshoot { - - private String level = "debug"; - - private OndemandGrpcRequestTrigger grpc = new OndemandGrpcRequestTrigger(); - - public void setLevel(String level) { - this.level = level; - } - - public String getLevel() { - return level; - } - - public OndemandGrpcRequestTrigger getGrpc() { - return grpc; - } - - public void setGrpc(OndemandGrpcRequestTrigger grpc) { - this.grpc = grpc; - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/ServiceMatcherConfiguration.java b/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/ServiceMatcherConfiguration.java deleted file mode 100644 index 079e2b99..00000000 --- a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/properties/ServiceMatcherConfiguration.java +++ /dev/null @@ -1,44 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.grpc.lognet.properties; - -import java.util.ArrayList; -import java.util.List; - -public class ServiceMatcherConfiguration { - - private boolean enabled = true; - - private String name; - - private List methods = new ArrayList<>(); - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - public boolean isEnabled() { - return enabled; - } - - public boolean isActive() { - return enabled && !methods.isEmpty(); - } - - public boolean hasPatterns() { - return !methods.isEmpty(); - } - - public void setName(String name) { - this.name = name; - } - - public String getName() { - return name; - } - - public List getMethods() { - return methods; - } - public void setMethods(List methods) { - this.methods = methods; - } -} \ No newline at end of file diff --git a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/scope/GrpcContextLoggingScopeFactory.java b/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/scope/GrpcContextLoggingScopeFactory.java deleted file mode 100644 index 7df42a87..00000000 --- a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/scope/GrpcContextLoggingScopeFactory.java +++ /dev/null @@ -1,27 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.grpc.lognet.scope; - -import ch.qos.logback.classic.spi.ILoggingEvent; -import io.grpc.Context; -import no.entur.logging.cloud.appender.scope.LoggingScope; -import no.entur.logging.cloud.appender.scope.LoggingScopeFactory; -import no.entur.logging.cloud.appender.scope.LoggingScopeProvider; - -import java.util.function.Predicate; - -public class GrpcContextLoggingScopeFactory implements LoggingScopeFactory, LoggingScopeProvider { - - @Override - public GrpcLoggingScope openScope(Predicate queuePredicate, Predicate ignorePredicate, Predicate logLevelFailurePredicate) { - return new GrpcLoggingScope(queuePredicate, ignorePredicate, logLevelFailurePredicate); - } - - @Override - public void closeScope(LoggingScope scope) { - // do nothing - } - - @Override - public LoggingScope getCurrentScope() { - return GrpcLoggingScopeContextInterceptor.KEY_CONTEXT.get(); - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/scope/GrpcHeaderPresentPredicate.java b/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/scope/GrpcHeaderPresentPredicate.java deleted file mode 100644 index f0e9157c..00000000 --- a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/scope/GrpcHeaderPresentPredicate.java +++ /dev/null @@ -1,27 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.grpc.lognet.scope; - -import io.grpc.Metadata; - -import java.util.Enumeration; -import java.util.Set; -import java.util.function.Predicate; - - -public class GrpcHeaderPresentPredicate implements Predicate { - - protected final Set names; - - public GrpcHeaderPresentPredicate(Set names) { - this.names = names; - } - - @Override - public boolean test(Metadata metadata) { - for(String key : metadata.keys()) { - if(names.contains(key)) { - return true; - } - } - return false; - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/scope/GrpcLoggingScope.java b/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/scope/GrpcLoggingScope.java deleted file mode 100644 index a14448f3..00000000 --- a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/scope/GrpcLoggingScope.java +++ /dev/null @@ -1,13 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.grpc.lognet.scope; - -import ch.qos.logback.classic.spi.ILoggingEvent; -import no.entur.logging.cloud.appender.scope.DefaultLoggingScope; - -import java.util.function.Predicate; - -public class GrpcLoggingScope extends DefaultLoggingScope { - - public GrpcLoggingScope(Predicate queuePredicate, Predicate ignorePredicate, Predicate logLevelFailurePredicate) { - super(queuePredicate, ignorePredicate, logLevelFailurePredicate); - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeContextInterceptor.java b/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeContextInterceptor.java deleted file mode 100644 index 7a88884b..00000000 --- a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeContextInterceptor.java +++ /dev/null @@ -1,138 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.grpc.lognet.scope; - -import ch.qos.logback.classic.spi.ILoggingEvent; -import io.grpc.Context; -import io.grpc.Contexts; -import io.grpc.ForwardingServerCall; -import io.grpc.Metadata; -import io.grpc.MethodDescriptor; -import io.grpc.ServerCall; -import io.grpc.ServerCallHandler; -import io.grpc.ServerInterceptor; -import io.grpc.Status; -import no.entur.logging.cloud.appender.scope.LoggingScope; -import no.entur.logging.cloud.appender.scope.LoggingScopeSink; -import org.springframework.core.Ordered; - -import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.function.Predicate; - -/** - * Interceptor for adding MDC for a gRPC {@linkplain Context}. - */ - -public class GrpcLoggingScopeContextInterceptor implements ServerInterceptor, Ordered { - - public static final Context.Key KEY_CONTEXT = Context.key("LOGGING_SCOPE_CONTEXT"); - - public static Builder newBuilder() { - return new Builder(); - } - - public static class Builder { - - private int order = Ordered.HIGHEST_PRECEDENCE; - private LoggingScopeSink sink; - - private GrpcLoggingScopeFilters filters; - - private GrpcContextLoggingScopeFactory factory; - - public Builder withFactory(GrpcContextLoggingScopeFactory factory) { - this.factory = factory; - return this; - } - - public Builder withSink(LoggingScopeSink sink) { - this.sink = sink; - return this; - } - - public Builder withFilters(GrpcLoggingScopeFilters filters) { - this.filters = filters; - return this; - } - - public Builder withOrder(int order) { - this.order = order; - return this; - } - - public GrpcLoggingScopeContextInterceptor build() { - if(sink == null) { - throw new IllegalStateException(); - } - if(filters == null) { - throw new IllegalStateException(); - } - if(factory == null) { - throw new IllegalStateException(); - } - return new GrpcLoggingScopeContextInterceptor(sink, filters, factory, order); - } - } - - private final LoggingScopeSink sink; - - private final GrpcLoggingScopeFilters filters; - - private final int order; - - private final GrpcContextLoggingScopeFactory factory; - - protected GrpcLoggingScopeContextInterceptor(LoggingScopeSink sink, GrpcLoggingScopeFilters filters, GrpcContextLoggingScopeFactory factory, int order) { - // prefer to use builder - this.sink = sink; - this.filters = filters; - this.factory = factory; - this.order = order; - } - - @Override - public ServerCall.Listener interceptCall(ServerCall call, Metadata headers, ServerCallHandler next) { - MethodDescriptor methodDescriptor = call.getMethodDescriptor(); - String serviceName = methodDescriptor.getServiceName(); - String fullMethodName = methodDescriptor.getFullMethodName(); - - GrpcLoggingScopeFilter filter = filters.getFilter(serviceName, fullMethodName); - - Predicate queuePredicate = filter.getQueuePredicate(); - Predicate ignorePredicate = filter.getIgnorePredicate(); - - Predicate httpHeaderPresentPredicate = filter.getGrpcHeaderPresentPredicate(); - if(httpHeaderPresentPredicate.test(headers)) { - queuePredicate = filter.getTroubleshootQueuePredicate(); - ignorePredicate = filter.getTroubleshootIgnorePredicate(); - } - - LoggingScope scope = factory.openScope(queuePredicate, ignorePredicate, filter.getLogLevelFailurePredicate()); - - Context context = Context.current().withValue(KEY_CONTEXT, scope); - - ServerCall interceptCall = new ForwardingServerCall.SimpleForwardingServerCall(call) { - public void close(Status status, Metadata trailers) { - try { - if (filter.getGrpcStatusPredicate().test(status)) { - // was there an error response - sink.write(scope); - } else if(scope.isLogLevelFailure()) { - // there some dangerous error message - sink.write(scope); - } - } finally { - factory.closeScope(scope); // this is really a noop operation - } - - super.close(status, trailers); - } - }; - - return Contexts.interceptCall(context, interceptCall, headers, next); - } - - @Override - public int getOrder() { - return order; - } - -} diff --git a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeFilter.java b/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeFilter.java deleted file mode 100644 index 3404a2f9..00000000 --- a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeFilter.java +++ /dev/null @@ -1,80 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.grpc.lognet.scope; - -import ch.qos.logback.classic.spi.ILoggingEvent; -import io.grpc.Metadata; -import io.grpc.Status; - -import java.util.function.Predicate; - -public class GrpcLoggingScopeFilter { - - private Predicate queuePredicate; - private Predicate ignorePredicate; - - private Predicate logLevelFailurePredicate; - private Predicate grpcStatusPredicate; - - private Predicate troubleshootQueuePredicate; - - private Predicate troubleshootIgnorePredicate; - - private Predicate grpcHeaderPresentPredicate; - - public Predicate getGrpcStatusPredicate() { - return grpcStatusPredicate; - } - - public void setGrpcStatusPredicate(Predicate grpcStatusPredicate) { - this.grpcStatusPredicate = grpcStatusPredicate; - } - - public Predicate getQueuePredicate() { - return queuePredicate; - } - - public void setQueuePredicate(Predicate queuePredicate) { - this.queuePredicate = queuePredicate; - } - - public Predicate getIgnorePredicate() { - return ignorePredicate; - } - - public void setIgnorePredicate(Predicate ignorePredicate) { - this.ignorePredicate = ignorePredicate; - } - - public Predicate getLogLevelFailurePredicate() { - return logLevelFailurePredicate; - } - - public void setLogLevelFailurePredicate(Predicate logLevelFailurePredicate) { - this.logLevelFailurePredicate = logLevelFailurePredicate; - } - - public Predicate getTroubleshootIgnorePredicate() { - return troubleshootIgnorePredicate; - } - - public Predicate getTroubleshootQueuePredicate() { - return troubleshootQueuePredicate; - } - - public void setTroubleshootIgnorePredicate(Predicate troubleshootIgnorePredicate) { - this.troubleshootIgnorePredicate = troubleshootIgnorePredicate; - } - - public void setTroubleshootQueuePredicate(Predicate troubleshootQueuePredicate) { - this.troubleshootQueuePredicate = troubleshootQueuePredicate; - } - - public Predicate getGrpcHeaderPresentPredicate() { - return grpcHeaderPresentPredicate; - } - - public void setGrpcHeaderPresentPredicate(Predicate grpcHeaderPresentPredicate) { - this.grpcHeaderPresentPredicate = grpcHeaderPresentPredicate; - } - - -} diff --git a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeFilters.java b/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeFilters.java deleted file mode 100644 index 0d7eb8d8..00000000 --- a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeFilters.java +++ /dev/null @@ -1,49 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.grpc.lognet.scope; - -import java.util.HashMap; -import java.util.Map; - -public class GrpcLoggingScopeFilters { - - private Map services = new HashMap<>(); - - private Map> methods = new HashMap<>(); - - private GrpcLoggingScopeFilter defaultFilter; - - public void addFilter(String serviceName, GrpcLoggingScopeFilter filter) { - services.put(serviceName, filter); - } - - public void addFilter(String serviceName, String methodName, GrpcLoggingScopeFilter filter) { - Map map = methods.get(serviceName); - if(map == null) { - map = new HashMap<>(); - methods.put(serviceName, map); - } - map.put(methodName, filter); - } - - public void setDefaultFilter(GrpcLoggingScopeFilter defaultFilter) { - this.defaultFilter = defaultFilter; - } - - public GrpcLoggingScopeFilter getFilter(String serviceName, String methodName) { - - GrpcLoggingScopeFilter grpcLoggingScopeFilter = services.get(serviceName); - if(grpcLoggingScopeFilter != null) { - return grpcLoggingScopeFilter; - } - - Map serviceMethods = methods.get(serviceName); - if(serviceMethods != null) { - grpcLoggingScopeFilter = serviceMethods.get(methodName); - if(grpcLoggingScopeFilter != null) { - return grpcLoggingScopeFilter; - } - } - - return defaultFilter; - } - -} diff --git a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/azure/on-demand-spring-boot-starter-azure-grpc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index 440c9668..00000000 --- a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1 +0,0 @@ -no.entur.logging.cloud.azure.spring.ondemand.grpc.lognet.GrpcOndemandLoggingAutoConfiguration diff --git a/azure/on-demand-spring-boot-starter-azure-web/README.md b/azure/on-demand-spring-boot-starter-azure-web/README.md deleted file mode 100644 index 44eb8280..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/README.md +++ /dev/null @@ -1 +0,0 @@ -# on-demand-spring-boot-starter-azure-web diff --git a/azure/on-demand-spring-boot-starter-azure-web/build.gradle b/azure/on-demand-spring-boot-starter-azure-web/build.gradle deleted file mode 100644 index bc45d845..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/build.gradle +++ /dev/null @@ -1,24 +0,0 @@ - -dependencies { - api project(':appender') - api project(':api') - - api("org.slf4j:slf4j-api:${slf4jVersion}") - api ("org.codehaus.janino:commons-compiler:${janinoVersion}") - api ("org.codehaus.janino:commons-compiler-jdk:${janinoVersion}") - api ("org.codehaus.janino:janino:${janinoVersion}") - api("org.springframework.boot:spring-boot-autoconfigure:${springBootVersion}") - api("org.springframework.boot:spring-boot-starter-logging:${springBootVersion}") - api("org.springframework.boot:spring-boot-starter-web:${springBootVersion}") - api ("org.springframework.boot:spring-boot-starter-security:${springBootVersion}") - - api ("org.codehaus.janino:janino:${janinoVersion}") - - testImplementation("org.springframework.boot:spring-boot-starter-test:${springBootVersion}") - - testImplementation project(':azure:spring-boot-autoconfigure-azure') -} - - - - diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/AzureWebOndemandLoggingAutoConfiguration.java b/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/AzureWebOndemandLoggingAutoConfiguration.java deleted file mode 100644 index f2f6b448..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/AzureWebOndemandLoggingAutoConfiguration.java +++ /dev/null @@ -1,224 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.web; - - -import ch.qos.logback.classic.Level; -import ch.qos.logback.classic.Logger; -import ch.qos.logback.classic.spi.ILoggingEvent; -import ch.qos.logback.core.Appender; -import no.entur.logging.cloud.appender.scope.LoggingScopeAsyncAppender; -import no.entur.logging.cloud.appender.scope.predicate.HigherOrEqualToLogLevelPredicate; -import no.entur.logging.cloud.appender.scope.predicate.LoggerNamePrefixHigherOrEqualToLogLevelPredicate; -import no.entur.logging.cloud.azure.spring.ondemand.web.properties.*; -import no.entur.logging.cloud.azure.spring.ondemand.web.scope.*; -import org.slf4j.LoggerFactory; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.boot.web.servlet.FilterRegistrationBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.security.web.util.matcher.AntPathRequestMatcher; -import org.springframework.security.web.util.matcher.RequestMatcher; - -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Set; - -import static jakarta.servlet.DispatcherType.ERROR; -import static jakarta.servlet.DispatcherType.REQUEST; - -@Configuration -@EnableConfigurationProperties(value = {OndemandProperties.class}) -public class AzureWebOndemandLoggingAutoConfiguration { - - private static final Logger LOGGER = (Logger) LoggerFactory.getLogger(AzureWebOndemandLoggingAutoConfiguration.class); - - @Configuration - @ConditionalOnProperty(name = {"entur.logging.http.ondemand.enabled"}, havingValue = "true", matchIfMissing = false) - public static class OndemandConfiguration { - - @Bean - public FilterRegistrationBean ondemandFilter(OndemandProperties properties) { - LoggingScopeAsyncAppender appender = getAppender(); - - LOGGER.info("Configure on-demand HTTP logging "); - - HttpLoggingScopeFilters filters = new HttpLoggingScopeFilters(); - - HttpLoggingScopeFilter defaultFilter = toFilter(null, properties.getSuccess(), properties.getFailure(), properties.getTroubleshoot()); - filters.setDefaultFilter(defaultFilter); - - List paths = properties.getPaths(); - for (OndemandPath path : paths) { - if(!path.isEnabled()) { - continue; - } - HttpLoggingScopeFilter filter = toFilter(path.getMatcher(), path.getSuccess(), path.getFailure(), path.getTroubleshoot()); - RequestMatcher requestMatcher = AntPathRequestMatcher.antMatcher(path.getMatcher()); - filters.addFilter(requestMatcher, filter); - } - - ThreadLocalLoggingScopeFactory factory = new ThreadLocalLoggingScopeFactory(); - - OndemandFilter filter = new OndemandFilter(appender, filters, factory); - - appender.addScopeProvider(factory); - - FilterRegistrationBean registration = new FilterRegistrationBean<>(); - registration.setFilter(filter); - registration.setDispatcherTypes(REQUEST, ERROR); - - registration.setOrder(properties.getFilterOrder()); - registration.addUrlPatterns(properties.getFilterUrlPatterns()); - return registration; - } - - private static LoggingScopeAsyncAppender getAppender() { - Logger logger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); - Iterator> appenderIterator = logger.iteratorForAppenders(); - if(!appenderIterator.hasNext()) { - throw new IllegalStateException("No on-demand log appenders configured, expected at least one which is implementing " + LoggingScopeAsyncAppender.class.getName()); - } - while (appenderIterator.hasNext()) { - Appender appender = appenderIterator.next(); - if (appender instanceof LoggingScopeAsyncAppender) { - return (LoggingScopeAsyncAppender) appender; - } - } - throw new IllegalStateException("Expected on-demand log appender implementing " + LoggingScopeAsyncAppender.class.getName()); - } - - - public HttpLoggingScopeFilter toFilter(String matcher, OndemandSuccess success, OndemandFailure failure, OndemandTroubleshoot troubleshoot) { - HttpLoggingScopeFilter filter = new HttpLoggingScopeFilter(); - - List headers = troubleshoot.getHttp().getHeaders(); - if(headers != null) { - Set headerNames = new HashSet<>(); // thread safe for reading - for (OndemandHttpHeader header : headers) { - if(header.isEnabled()) { - headerNames.add(header.getName().toLowerCase()); - } - } - if(!headerNames.isEmpty()) { - filter.setHttpHeaderPresentPredicate(new HttpHeaderPresentPredicate(headerNames)); - } else { - filter.setHttpHeaderPresentPredicate((e) -> false); - } - } else { - filter.setHttpHeaderPresentPredicate((e) -> false); - } - - Level alwaysLogLevel = toLevel(success.getLevel()); - filter.setQueuePredicate( (e) -> e.getLevel().toInt() < alwaysLogLevel.toInt()); - - Level optionallyLogLevel = toLevel(failure.getLevel()); - filter.setIgnorePredicate( (e) -> e.getLevel().toInt() < optionallyLogLevel.toInt()); - - // troubleshooting: to take effect, the troubleshooting must be - // - lower than success, and/or - // - lower than failure - Level troubleShootAlwaysLogLevel = toLevel(troubleshoot.getLevel()); - if(troubleShootAlwaysLogLevel.toInt() > alwaysLogLevel.toInt()) { - filter.setTroubleshootQueuePredicate( (e) -> e.getLevel().toInt() < alwaysLogLevel.toInt()); - } else { - filter.setTroubleshootQueuePredicate( (e) -> e.getLevel().toInt() < troubleShootAlwaysLogLevel.toInt()); - } - - Level troubleShootOptionallyLogLevel = troubleShootAlwaysLogLevel; - if( troubleShootOptionallyLogLevel.toInt() > optionallyLogLevel.toInt()) { - filter.setTroubleshootIgnorePredicate( (e) -> e.getLevel().toInt() < optionallyLogLevel.toInt()); - } else { - filter.setTroubleshootIgnorePredicate( (e) -> e.getLevel().toInt() < troubleShootOptionallyLogLevel.toInt()); - } - - OndemandHttpResponseTrigger httpStatusCodeTrigger = failure.getHttp(); - if(httpStatusCodeTrigger.isEnabled()) { - OndemandHttpStatus statusCode = httpStatusCodeTrigger.getStatusCode(); - - int equalOrHigherThan = statusCode.getEqualOrHigherThan(); - List notEqualTo = statusCode.getNotEqualTo(); - List equalTo = statusCode.getEqualTo(); - - if(!notEqualTo.isEmpty() && !equalTo.isEmpty()) { - throw new IllegalStateException("Status code equal-to cannot be combined with not-equal-to"); - } - - // if equal-or-higher-to is configured, both equal-to and not-equal-to applies to the - // low or high range of the equal-or-higher-to limit - - if(equalOrHigherThan == -1 && notEqualTo.isEmpty() && !equalTo.isEmpty()) { - // only equal to - filter.setHttpStatusFailurePredicate(new HttpStatusEqualToPredicate(equalTo)); - - LOGGER.info("Configure {} on-demand logging for status codes equal to " + equalTo, matcher == null ? "default" : matcher); - } else if(equalOrHigherThan == -1 && equalTo.isEmpty() && !notEqualTo.isEmpty()) { - // only not equal to - LOGGER.info("Configure {} on-demand logging for status codes not equal to " + notEqualTo, matcher == null ? "default" : matcher); - filter.setHttpStatusFailurePredicate(new HttpStatusNotEqualToPredicate(notEqualTo)); - } else if(equalOrHigherThan != -1 && equalTo.isEmpty() && notEqualTo.isEmpty()) { - // only higher than - LOGGER.info("Configure {} on-demand logging for status codes at least " + equalOrHigherThan, matcher == null ? "default" : matcher); - - filter.setHttpStatusFailurePredicate(new HttpStatusAtLeastPredicate(equalOrHigherThan)); - } else if(equalOrHigherThan != -1) { - - for (Integer integer : notEqualTo) { - if(integer < equalOrHigherThan) { - throw new IllegalStateException("Not-equal-to " + integer + " is already included in higher-or-equal-to " + equalOrHigherThan); - } - } - - for (Integer integer : equalTo) { - if(integer >= equalOrHigherThan) { - throw new IllegalStateException("Equal-to " + integer + " is already included in higher-or-equal-to " + equalOrHigherThan); - } - } - - LOGGER.info("Configure {} on-demand logging for status codes at least " + equalOrHigherThan + ", excluding " + notEqualTo + " or including " + equalTo + ")", matcher == null ? "default" : matcher); - - filter.setHttpStatusFailurePredicate(new HttpStatusAtLeastOrNotPredicate(statusCode.getEqualOrHigherThan(), equalTo, notEqualTo)); - } else { - filter.setHttpStatusFailurePredicate((e) -> false); - } - } else { - filter.setHttpStatusFailurePredicate((e) -> false); - } - - OndemandLogLevelTrigger logLevelTrigger = failure.getLogger(); - if(logLevelTrigger.isEnabled()) { - Level flushForLevel = toLevel(logLevelTrigger.getLevel()); - List name = logLevelTrigger.getName(); - if(name.isEmpty()) { - filter.setLogLevelFailurePredicate(new HigherOrEqualToLogLevelPredicate(flushForLevel.toInt())); - } else { - filter.setLogLevelFailurePredicate(new LoggerNamePrefixHigherOrEqualToLogLevelPredicate(flushForLevel.toInt(), name)); - } - } else { - filter.setLogLevelFailurePredicate((e) -> false); - } - - return filter; - } - - - protected Level toLevel(String level) { - switch (level) { - case ("trace"): - return Level.TRACE; - case ("debug"): - return Level.DEBUG; - case ("info"): - return Level.INFO; - case ("warn"): - return Level.WARN; - case ("error"): - return Level.ERROR; - default: - throw new IllegalStateException("Level [" + level + "] not recognized."); - } - } - - } - -} diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/OndemandFilter.java b/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/OndemandFilter.java deleted file mode 100644 index c25be70c..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/OndemandFilter.java +++ /dev/null @@ -1,71 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.web; - -import ch.qos.logback.classic.spi.ILoggingEvent; -import jakarta.servlet.*; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import no.entur.logging.cloud.appender.scope.LoggingScope; -import no.entur.logging.cloud.appender.scope.LoggingScopeSink; -import no.entur.logging.cloud.azure.spring.ondemand.web.scope.HttpLoggingScopeFilter; -import no.entur.logging.cloud.azure.spring.ondemand.web.scope.HttpLoggingScopeFilters; -import no.entur.logging.cloud.azure.spring.ondemand.web.scope.ThreadLocalLoggingScopeFactory; - -import java.io.IOException; -import java.util.Enumeration; -import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.function.Predicate; - -public class OndemandFilter implements Filter { - - private final LoggingScopeSink sink; - private final HttpLoggingScopeFilters filters; - - private final ThreadLocalLoggingScopeFactory loggingScopeFactory; - - public OndemandFilter(LoggingScopeSink sink, HttpLoggingScopeFilters filters, ThreadLocalLoggingScopeFactory loggingScopeFactory) { - this.sink = sink; - this.filters = filters; - this.loggingScopeFactory = loggingScopeFactory; - } - - public void init(FilterConfig filterConfig) { - } - - public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { - if(servletRequest instanceof HttpServletRequest) { - HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest; - - HttpLoggingScopeFilter filter = filters.getScope(httpServletRequest); - - Predicate queuePredicate = filter.getQueuePredicate(); - Predicate ignorePredicate = filter.getIgnorePredicate(); - - Predicate> httpHeaderPresentPredicate = filter.getHttpHeaderPresentPredicate(); - if(httpHeaderPresentPredicate.test(httpServletRequest.getHeaderNames())) { - queuePredicate = filter.getTroubleshootQueuePredicate(); - ignorePredicate = filter.getTroubleshootIgnorePredicate(); - } - - LoggingScope scope = loggingScopeFactory.openScope(queuePredicate, ignorePredicate, filter.getLogLevelFailurePredicate()); - try { - filterChain.doFilter(httpServletRequest, servletResponse); - } finally { - HttpServletResponse response = (HttpServletResponse) servletResponse; - if(filter.getHttpStatusFailurePredicate().test(response.getStatus())) { - // was there an error response - sink.write(scope); - } else if(scope.isLogLevelFailure()) { - // was there some dangerous error message? - sink.write(scope); - } - loggingScopeFactory.closeScope(scope); - } - } else { - filterChain.doFilter(servletRequest, servletResponse); - } - } - - public void destroy() { - } - -} diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandFailure.java b/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandFailure.java deleted file mode 100644 index 48f1ba3c..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandFailure.java +++ /dev/null @@ -1,33 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.web.properties; - -public class OndemandFailure { - - private String level = "info"; - - private OndemandHttpResponseTrigger http = new OndemandHttpResponseTrigger(); - private OndemandLogLevelTrigger logger = new OndemandLogLevelTrigger(); - - public void setLevel(String level) { - this.level = level; - } - - public String getLevel() { - return level; - } - - public OndemandHttpResponseTrigger getHttp() { - return http; - } - - public void setHttp(OndemandHttpResponseTrigger http) { - this.http = http; - } - - public OndemandLogLevelTrigger getLogger() { - return logger; - } - - public void setLogger(OndemandLogLevelTrigger logger) { - this.logger = logger; - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandHttpHeader.java b/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandHttpHeader.java deleted file mode 100644 index 23a249b5..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandHttpHeader.java +++ /dev/null @@ -1,26 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.web.properties; - -import java.util.ArrayList; -import java.util.List; - -public class OndemandHttpHeader { - - private boolean enabled = true; - private String name; - - public String getName() { - return name; - } - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - public void setName(String name) { - this.name = name; - } - - public boolean isEnabled() { - return enabled; - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandHttpRequestTrigger.java b/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandHttpRequestTrigger.java deleted file mode 100644 index 9d8d9685..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandHttpRequestTrigger.java +++ /dev/null @@ -1,28 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.web.properties; - -import java.util.ArrayList; -import java.util.List; - -public class OndemandHttpRequestTrigger { - - private boolean enabled = true; - - private List headers = new ArrayList<>(); - - public List getHeaders() { - return headers; - } - - public void setHeaders(List headers) { - this.headers = headers; - } - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - public boolean isEnabled() { - return enabled; - } - -} diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandHttpResponseTrigger.java b/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandHttpResponseTrigger.java deleted file mode 100644 index ba4a484e..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandHttpResponseTrigger.java +++ /dev/null @@ -1,28 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.web.properties; - -import java.util.ArrayList; -import java.util.List; - -public class OndemandHttpResponseTrigger { - - private boolean enabled = true; - - private OndemandHttpStatus statusCode = new OndemandHttpStatus(); - - public void setStatusCode(OndemandHttpStatus statusCode) { - this.statusCode = statusCode; - } - - public OndemandHttpStatus getStatusCode() { - return statusCode; - } - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - public boolean isEnabled() { - return enabled; - } - -} diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandHttpStatus.java b/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandHttpStatus.java deleted file mode 100644 index b677eb90..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandHttpStatus.java +++ /dev/null @@ -1,46 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.web.properties; - -import java.util.ArrayList; -import java.util.List; - -public class OndemandHttpStatus { - - private boolean enabled = true; - private int equalOrHigherThan = -1; - - private List equalTo = new ArrayList<>(); - - private List notEqualTo = new ArrayList<>(); - - public int getEqualOrHigherThan() { - return equalOrHigherThan; - } - - public void setEqualOrHigherThan(int equalOrHigherThan) { - this.equalOrHigherThan = equalOrHigherThan; - } - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - public boolean isEnabled() { - return enabled; - } - - public List getEqualTo() { - return equalTo; - } - - public void setEqualTo(List equalTo) { - this.equalTo = equalTo; - } - - public List getNotEqualTo() { - return notEqualTo; - } - - public void setNotEqualTo(List notEqualTo) { - this.notEqualTo = notEqualTo; - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandPath.java b/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandPath.java deleted file mode 100644 index 33e835c4..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandPath.java +++ /dev/null @@ -1,52 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.web.properties; - -public class OndemandPath { - - private boolean enabled = true; - private String matcher; - - private OndemandSuccess success = new OndemandSuccess(); - private OndemandFailure failure = new OndemandFailure(); - - private OndemandTroubleshoot troubleshoot = new OndemandTroubleshoot(); - - public boolean isEnabled() { - return enabled; - } - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - public String getMatcher() { - return matcher; - } - - public void setMatcher(String matcher) { - this.matcher = matcher; - } - - public OndemandSuccess getSuccess() { - return success; - } - - public void setSuccess(OndemandSuccess success) { - this.success = success; - } - - public OndemandFailure getFailure() { - return failure; - } - - public void setFailure(OndemandFailure failure) { - this.failure = failure; - } - - public void setTroubleshoot(OndemandTroubleshoot troubleshoot) { - this.troubleshoot = troubleshoot; - } - - public OndemandTroubleshoot getTroubleshoot() { - return troubleshoot; - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandProperties.java b/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandProperties.java deleted file mode 100644 index b690bf2a..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandProperties.java +++ /dev/null @@ -1,85 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.web.properties; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.core.Ordered; - -import java.util.ArrayList; -import java.util.List; - -@ConfigurationProperties(prefix = "entur.logging.http.ondemand") -public class OndemandProperties { - - private boolean enabled; - private OndemandSuccess success = new OndemandSuccess(); - - private OndemandFailure failure = new OndemandFailure(); - - private OndemandTroubleshoot troubleshoot = new OndemandTroubleshoot(); - - public OndemandProperties() { - // set default value - failure.getHttp().getStatusCode().setEqualOrHigherThan(400); - } - - private int filterOrder = Ordered.HIGHEST_PRECEDENCE; - - private String filterUrlPatterns = "/*"; - - private List paths = new ArrayList<>(); - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - public boolean isEnabled() { - return enabled; - } - - public void setFilterOrder(int filterOrder) { - this.filterOrder = filterOrder; - } - - public int getFilterOrder() { - return filterOrder; - } - - public void setPaths(List paths) { - this.paths = paths; - } - - public List getPaths() { - return paths; - } - - public OndemandSuccess getSuccess() { - return success; - } - - public void setSuccess(OndemandSuccess success) { - this.success = success; - } - - public OndemandFailure getFailure() { - return failure; - } - - public void setFailure(OndemandFailure failure) { - this.failure = failure; - } - - public void setFilterUrlPatterns(String filterUrlPatterns) { - this.filterUrlPatterns = filterUrlPatterns; - } - - public String getFilterUrlPatterns() { - return filterUrlPatterns; - } - - public OndemandTroubleshoot getTroubleshoot() { - return troubleshoot; - } - - public void setTroubleshoot(OndemandTroubleshoot troubleshoot) { - this.troubleshoot = troubleshoot; - } -} \ No newline at end of file diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandTroubleshoot.java b/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandTroubleshoot.java deleted file mode 100644 index 367be7aa..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandTroubleshoot.java +++ /dev/null @@ -1,31 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.web.properties; - -/** - * - * Troubleshooting only works for requests, i.e. debugging is assumed to hold so much data that - * caching everything until the response is ready is too costly. - * - */ - -public class OndemandTroubleshoot { - - private String level = "debug"; - - private OndemandHttpRequestTrigger http = new OndemandHttpRequestTrigger(); - - public void setLevel(String level) { - this.level = level; - } - - public String getLevel() { - return level; - } - - public OndemandHttpRequestTrigger getHttp() { - return http; - } - - public void setHttp(OndemandHttpRequestTrigger http) { - this.http = http; - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/HttpHeaderPresentPredicate.java b/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/HttpHeaderPresentPredicate.java deleted file mode 100644 index 3253df58..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/HttpHeaderPresentPredicate.java +++ /dev/null @@ -1,25 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.web.scope; - -import java.util.Enumeration; -import java.util.Set; -import java.util.function.Predicate; - - -public class HttpHeaderPresentPredicate implements Predicate> { - - protected final Set names; - - public HttpHeaderPresentPredicate(Set names) { - this.names = names; - } - - @Override - public boolean test(Enumeration stringEnumeration) { - while(stringEnumeration.hasMoreElements()) { - if(names.contains(stringEnumeration.nextElement())) { - return true; - } - } - return false; - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/HttpLoggingScopeFilter.java b/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/HttpLoggingScopeFilter.java deleted file mode 100644 index 994c6c59..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/HttpLoggingScopeFilter.java +++ /dev/null @@ -1,78 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.web.scope; - -import ch.qos.logback.classic.spi.ILoggingEvent; - -import java.util.Enumeration; -import java.util.function.IntPredicate; -import java.util.function.Predicate; - -public class HttpLoggingScopeFilter { - - private Predicate queuePredicate; - private Predicate ignorePredicate; - - private Predicate troubleshootQueuePredicate; - - private Predicate troubleshootIgnorePredicate; - - private Predicate logLevelFailurePredicate; - private IntPredicate httpStatusFailurePredicate; - - private Predicate> httpHeaderPresentPredicate; - - public IntPredicate getHttpStatusFailurePredicate() { - return httpStatusFailurePredicate; - } - - public void setHttpStatusFailurePredicate(IntPredicate httpStatusFailurePredicate) { - this.httpStatusFailurePredicate = httpStatusFailurePredicate; - } - - public Predicate getQueuePredicate() { - return queuePredicate; - } - - public void setQueuePredicate(Predicate queuePredicate) { - this.queuePredicate = queuePredicate; - } - - public Predicate getIgnorePredicate() { - return ignorePredicate; - } - - public void setIgnorePredicate(Predicate ignorePredicate) { - this.ignorePredicate = ignorePredicate; - } - - public Predicate getLogLevelFailurePredicate() { - return logLevelFailurePredicate; - } - - public void setLogLevelFailurePredicate(Predicate logLevelFailurePredicate) { - this.logLevelFailurePredicate = logLevelFailurePredicate; - } - - public Predicate> getHttpHeaderPresentPredicate() { - return httpHeaderPresentPredicate; - } - - public void setHttpHeaderPresentPredicate(Predicate> httpHeaderPresentPredicate) { - this.httpHeaderPresentPredicate = httpHeaderPresentPredicate; - } - - public Predicate getTroubleshootIgnorePredicate() { - return troubleshootIgnorePredicate; - } - - public void setTroubleshootIgnorePredicate(Predicate troubleshootIgnorePredicate) { - this.troubleshootIgnorePredicate = troubleshootIgnorePredicate; - } - - public void setTroubleshootQueuePredicate(Predicate troubleshootQueuePredicate) { - this.troubleshootQueuePredicate = troubleshootQueuePredicate; - } - - public Predicate getTroubleshootQueuePredicate() { - return troubleshootQueuePredicate; - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/HttpLoggingScopeFilters.java b/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/HttpLoggingScopeFilters.java deleted file mode 100644 index ff5f570a..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/HttpLoggingScopeFilters.java +++ /dev/null @@ -1,42 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.web.scope; - -import jakarta.servlet.http.HttpServletRequest; -import org.springframework.security.web.util.matcher.RequestMatcher; - -import java.util.ArrayList; -import java.util.List; - -public class HttpLoggingScopeFilters { - - private static class Filter { - private RequestMatcher requestMatcher; - private HttpLoggingScopeFilter scope; - - public Filter(RequestMatcher requestMatcher, HttpLoggingScopeFilter scope) { - this.requestMatcher = requestMatcher; - this.scope = scope; - } - } - - private HttpLoggingScopeFilter defaultFilter; - - private List filters = new ArrayList<>(); - - public void addFilter(RequestMatcher pathMatcher, HttpLoggingScopeFilter filter) { - filters.add(new Filter(pathMatcher, filter)); - } - - public void setDefaultFilter(HttpLoggingScopeFilter defaultFilter) { - this.defaultFilter = defaultFilter; - } - - public HttpLoggingScopeFilter getScope(HttpServletRequest httpServletRequest) { - for (Filter filter : filters) { - if(filter.requestMatcher.matches(httpServletRequest)) { - return filter.scope; - } - } - return defaultFilter; - } - -} diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/HttpStatusAtLeastOrNotPredicate.java b/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/HttpStatusAtLeastOrNotPredicate.java deleted file mode 100644 index 19116213..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/HttpStatusAtLeastOrNotPredicate.java +++ /dev/null @@ -1,29 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.web.scope; - -import java.util.List; -import java.util.Set; - - -public class HttpStatusAtLeastOrNotPredicate extends HttpStatusAtLeastPredicate { - - protected final HttpStatusNotEqualToPredicate exclude; - protected final HttpStatusEqualToPredicate include; - - public HttpStatusAtLeastOrNotPredicate(int limit, List include, List exclude) { - super(limit); - - this.exclude = new HttpStatusNotEqualToPredicate(exclude); - this.include = new HttpStatusEqualToPredicate(include); - } - - @Override - public boolean test(int statusCode) { - if(super.test(statusCode)) { - // status code is equal or higher - return exclude.test(statusCode); - } else { - // status code is lower - return include.test(statusCode); - } - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/HttpStatusAtLeastPredicate.java b/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/HttpStatusAtLeastPredicate.java deleted file mode 100644 index 87b61196..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/HttpStatusAtLeastPredicate.java +++ /dev/null @@ -1,18 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.web.scope; - -import java.util.function.IntPredicate; - - -public class HttpStatusAtLeastPredicate implements IntPredicate { - - protected final int limit; - - public HttpStatusAtLeastPredicate(int limit) { - this.limit = limit; - } - - @Override - public boolean test(int i) { - return i >= limit; - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/HttpStatusEqualToPredicate.java b/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/HttpStatusEqualToPredicate.java deleted file mode 100644 index 937698f2..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/HttpStatusEqualToPredicate.java +++ /dev/null @@ -1,32 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.web.scope; - -import java.util.List; -import java.util.function.IntPredicate; - - -public class HttpStatusEqualToPredicate implements IntPredicate { - - protected final boolean[] matchers; - - public HttpStatusEqualToPredicate(List codes) { - Integer max = codes.get(0); - for(int i = 1; i < codes.size(); i++) { - if(max < codes.get(i)) { - max = codes.get(i); - } - } - - matchers = new boolean[max + 1]; - for (Integer code : codes) { - matchers[code] = true; - } - } - - @Override - public boolean test(int i) { - if(i >= matchers.length) { - return false; - } - return matchers[i]; - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/HttpStatusNotEqualToPredicate.java b/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/HttpStatusNotEqualToPredicate.java deleted file mode 100644 index 85059c59..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/HttpStatusNotEqualToPredicate.java +++ /dev/null @@ -1,36 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.web.scope; - -import java.util.List; -import java.util.function.IntPredicate; - - -public class HttpStatusNotEqualToPredicate implements IntPredicate { - - protected final boolean[] matchers; - - public HttpStatusNotEqualToPredicate(List codes) { - Integer max = codes.get(0); - for(int i = 1; i < codes.size(); i++) { - if(max < codes.get(i)) { - max = codes.get(i); - } - } - - matchers = new boolean[max + 1]; - for(int i = 0; i < matchers.length; i++) { - matchers[i] = true; - } - - for (Integer code : codes) { - matchers[code] = false; - } - } - - @Override - public boolean test(int i) { - if(i >= matchers.length) { - return true; - } - return matchers[i]; - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/ThreadLocalLoggingScopeFactory.java b/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/ThreadLocalLoggingScopeFactory.java deleted file mode 100644 index 143ef3ce..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/scope/ThreadLocalLoggingScopeFactory.java +++ /dev/null @@ -1,30 +0,0 @@ -package no.entur.logging.cloud.azure.spring.ondemand.web.scope; - -import no.entur.logging.cloud.appender.scope.DefaultLoggingScope; -import no.entur.logging.cloud.appender.scope.LoggingScope; -import no.entur.logging.cloud.appender.scope.LoggingScopeFactory; -import no.entur.logging.cloud.appender.scope.LoggingScopeProvider; - -import java.util.function.Predicate; - -public class ThreadLocalLoggingScopeFactory implements LoggingScopeFactory, LoggingScopeProvider { - - private final ThreadLocal queues = new ThreadLocal<>(); - - @Override - public LoggingScope openScope(Predicate queuePredicate, Predicate ignorePredicate, Predicate logLevelFailurePredicate) { - DefaultLoggingScope scope = new DefaultLoggingScope(queuePredicate, ignorePredicate, logLevelFailurePredicate); - queues.set(scope); - return scope; - } - - @Override - public LoggingScope getCurrentScope() { - return queues.get(); - } - - @Override - public void closeScope(LoggingScope scope) { - queues.remove(); - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/azure/on-demand-spring-boot-starter-azure-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index 33069504..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1 +0,0 @@ -no.entur.logging.cloud.azure.spring.ondemand.web.AzureWebOndemandLoggingAutoConfiguration \ No newline at end of file diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/HttpStatusAtLeastOrNotPredicateTest.java b/azure/on-demand-spring-boot-starter-azure-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/HttpStatusAtLeastOrNotPredicateTest.java deleted file mode 100644 index a8ff3080..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/HttpStatusAtLeastOrNotPredicateTest.java +++ /dev/null @@ -1,31 +0,0 @@ -package no.entur.logging.cloud.azure.spring.web; - -import no.entur.logging.cloud.azure.spring.ondemand.web.scope.HttpStatusAtLeastOrNotPredicate; -import org.junit.jupiter.api.Test; - -import java.util.Arrays; -import java.util.List; - -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; - -public class HttpStatusAtLeastOrNotPredicateTest { - - @Test - public void testNot() { - // true means extra logging should be triggered (positive failure) - - java.util.List include = Arrays.asList(300); - List exclude = Arrays.asList(500); - HttpStatusAtLeastOrNotPredicate notPredicate = new HttpStatusAtLeastOrNotPredicate(400, include, exclude); - - // regular cases - assertFalse(notPredicate.test(200)); - assertTrue(notPredicate.test(404)); - - // explicit cases - assertFalse(notPredicate.test(500)); - assertTrue(notPredicate.test(300)); - - } -} diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/LoadContextLoggingTest.java b/azure/on-demand-spring-boot-starter-azure-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/LoadContextLoggingTest.java deleted file mode 100644 index 78cd5b0d..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/LoadContextLoggingTest.java +++ /dev/null @@ -1,33 +0,0 @@ -package no.entur.logging.cloud.azure.spring.web; - -import no.entur.logging.cloud.api.DevOpsLogger; -import no.entur.logging.cloud.api.DevOpsLoggerFactory; -import org.junit.jupiter.api.Test; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.test.annotation.DirtiesContext; - -import java.io.IOException; - -@SpringBootTest(webEnvironment = WebEnvironment.NONE) -@DirtiesContext -@EnableAutoConfiguration -public class LoadContextLoggingTest { - - private static final DevOpsLogger LOGGER = DevOpsLoggerFactory.getLogger(LoadContextLoggingTest.class); - - @Test - public void testMachineReadableJson() throws IOException { - LOGGER.trace("Test trace message"); - LOGGER.debug("Test debug message"); - LOGGER.info("Test info message"); - LOGGER.warn("Test warn message"); - LOGGER.error("Test error message"); - - LOGGER.errorTellMeTomorrow("Test error tell me tomorrow message"); - LOGGER.errorInterruptMyDinner("Test error interrupt my dinner message"); - LOGGER.errorWakeMeUpRightNow("Test error wake me up right now message"); - } - -} diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/LoadOndemandContextLoggingTest.java b/azure/on-demand-spring-boot-starter-azure-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/LoadOndemandContextLoggingTest.java deleted file mode 100644 index 2b0eaa57..00000000 --- a/azure/on-demand-spring-boot-starter-azure-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/LoadOndemandContextLoggingTest.java +++ /dev/null @@ -1,41 +0,0 @@ -package no.entur.logging.cloud.azure.spring.web; - -import no.entur.logging.cloud.api.DevOpsLogger; -import no.entur.logging.cloud.api.DevOpsLoggerFactory; -import org.junit.jupiter.api.Test; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.TestPropertySource; - -import java.io.IOException; - -import static org.junit.jupiter.api.Assertions.assertTrue; - -@SpringBootTest(webEnvironment = WebEnvironment.NONE) -@DirtiesContext -@EnableAutoConfiguration -@TestPropertySource(properties = { - "entur.logging.http.ondemand.enabled=true", - "entur.logging.http.ondemand.failure.http.statusCode.equalOrHigherThan=400", - -}) -public class LoadOndemandContextLoggingTest { - - private static final DevOpsLogger LOGGER = DevOpsLoggerFactory.getLogger(LoadOndemandContextLoggingTest.class); - - @Test - public void testMachineReadableJson() throws IOException { - LOGGER.trace("Test trace message"); - LOGGER.debug("Test debug message"); - LOGGER.info("Test info message"); - LOGGER.warn("Test warn message"); - LOGGER.error("Test error message"); - - LOGGER.errorTellMeTomorrow("Test error tell me tomorrow message"); - LOGGER.errorInterruptMyDinner("Test error interrupt my dinner message"); - LOGGER.errorWakeMeUpRightNow("Test error wake me up right now message"); - } - -} diff --git a/azure/request-response-spring-boot-starter-azure-grpc-test/build.gradle b/azure/request-response-spring-boot-starter-azure-grpc-test/build.gradle index 9c8f840a..9eaeff0e 100644 --- a/azure/request-response-spring-boot-starter-azure-grpc-test/build.gradle +++ b/azure/request-response-spring-boot-starter-azure-grpc-test/build.gradle @@ -2,6 +2,7 @@ dependencies { api project(":azure:spring-boot-autoconfigure-azure-test") api project(':azure:request-response-spring-boot-starter-azure-grpc') + api project(':request-response:request-response-spring-boot-autoconfigure-grpc') api ("org.entur.jackson:jackson-syntax-highlight:${jacksonSyntaxHighlightVersion}") api ("org.entur.logback-logstash-syntax-highlighting-decorators:logback-logstash-syntax-highlighting-decorators:${logbackLogstashSyntaxHighlightingDecoratorsVersion}") diff --git a/azure/request-response-spring-boot-starter-azure-grpc-test/src/main/java/no/entur/logging/cloud/gcp/spring/azure/grpc/lognet/test/RequestResponseAzureGrpcLognetTestAutoConfiguration.java b/azure/request-response-spring-boot-starter-azure-grpc-test/src/main/java/no/entur/logging/cloud/azure/spring/azure/grpc/lognet/test/RequestResponseAzureGrpcLognetTestAutoConfiguration.java similarity index 92% rename from azure/request-response-spring-boot-starter-azure-grpc-test/src/main/java/no/entur/logging/cloud/gcp/spring/azure/grpc/lognet/test/RequestResponseAzureGrpcLognetTestAutoConfiguration.java rename to azure/request-response-spring-boot-starter-azure-grpc-test/src/main/java/no/entur/logging/cloud/azure/spring/azure/grpc/lognet/test/RequestResponseAzureGrpcLognetTestAutoConfiguration.java index 8f346e3d..517722f1 100644 --- a/azure/request-response-spring-boot-starter-azure-grpc-test/src/main/java/no/entur/logging/cloud/gcp/spring/azure/grpc/lognet/test/RequestResponseAzureGrpcLognetTestAutoConfiguration.java +++ b/azure/request-response-spring-boot-starter-azure-grpc-test/src/main/java/no/entur/logging/cloud/azure/spring/azure/grpc/lognet/test/RequestResponseAzureGrpcLognetTestAutoConfiguration.java @@ -1,8 +1,8 @@ package no.entur.logging.cloud.azure.spring.azure.grpc.lognet.test; +import no.entur.logging.cloud.spring.grpc.lognet.AbstractRequestResponseGrpcLognetSinkAutoConfiguration; import org.entur.jackson.jsh.AnsiSyntaxHighlight; import org.entur.jackson.jsh.DefaultSyntaxHighlighter; -import no.entur.logging.cloud.azure.spring.azure.grpc.lognet.AbstractRequestResponseAzureGrpcLognetAutoConfiguration; import no.entur.logging.cloud.azure.spring.azure.grpc.lognet.RequestResponseAzureGrpcLognetAutoConfiguration; import no.entur.logging.cloud.rr.grpc.GrpcSink; import no.entur.logging.cloud.rr.grpc.test.CompositeSink; @@ -21,7 +21,7 @@ }) @Configuration -public class RequestResponseAzureGrpcLognetTestAutoConfiguration extends AbstractRequestResponseAzureGrpcLognetAutoConfiguration { +public class RequestResponseAzureGrpcLognetTestAutoConfiguration extends AbstractRequestResponseGrpcLognetSinkAutoConfiguration { @Bean @ConditionalOnMissingBean(GrpcSink.class) diff --git a/azure/request-response-spring-boot-starter-azure-grpc-test/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/test/DemoApplication.java b/azure/request-response-spring-boot-starter-azure-grpc-test/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/test/DemoApplication.java deleted file mode 100644 index 30a91d0d..00000000 --- a/azure/request-response-spring-boot-starter-azure-grpc-test/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/test/DemoApplication.java +++ /dev/null @@ -1,13 +0,0 @@ -package no.entur.logging.cloud.azure.spring.logbook.web.test; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class DemoApplication { - - public static void main(String[] args) { - SpringApplication.run(DemoApplication.class, args); - } - -} \ No newline at end of file diff --git a/gcp/request-response-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/DemoApplication.java b/azure/request-response-spring-boot-starter-azure-grpc-test/src/test/java/no/entur/logging/cloud/spring/logbook/web/test/DemoApplication.java similarity index 83% rename from gcp/request-response-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/DemoApplication.java rename to azure/request-response-spring-boot-starter-azure-grpc-test/src/test/java/no/entur/logging/cloud/spring/logbook/web/test/DemoApplication.java index e596a1d5..5ad9589d 100644 --- a/gcp/request-response-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/DemoApplication.java +++ b/azure/request-response-spring-boot-starter-azure-grpc-test/src/test/java/no/entur/logging/cloud/spring/logbook/web/test/DemoApplication.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.logbook.web; +package no.entur.logging.cloud.spring.logbook.web.test; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/gcp/request-response-spring-boot-starter-gcp-grpc-test/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/test/LoadContextLoggingTest.java b/azure/request-response-spring-boot-starter-azure-grpc-test/src/test/java/no/entur/logging/cloud/spring/logbook/web/test/LoadContextLoggingTest.java similarity index 98% rename from gcp/request-response-spring-boot-starter-gcp-grpc-test/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/test/LoadContextLoggingTest.java rename to azure/request-response-spring-boot-starter-azure-grpc-test/src/test/java/no/entur/logging/cloud/spring/logbook/web/test/LoadContextLoggingTest.java index 08d2928f..100a870e 100644 --- a/gcp/request-response-spring-boot-starter-gcp-grpc-test/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/test/LoadContextLoggingTest.java +++ b/azure/request-response-spring-boot-starter-azure-grpc-test/src/test/java/no/entur/logging/cloud/spring/logbook/web/test/LoadContextLoggingTest.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.logbook.web.test; +package no.entur.logging.cloud.spring.logbook.web.test; import no.entur.logging.cloud.api.DevOpsLogger; import no.entur.logging.cloud.api.DevOpsLoggerFactory; diff --git a/azure/request-response-spring-boot-starter-azure-grpc/build.gradle b/azure/request-response-spring-boot-starter-azure-grpc/build.gradle index 64d09c5e..9e67ca5b 100644 --- a/azure/request-response-spring-boot-starter-azure-grpc/build.gradle +++ b/azure/request-response-spring-boot-starter-azure-grpc/build.gradle @@ -4,6 +4,7 @@ dependencies { api project(':api') api project(':azure:logback-logstash-encoder-azure') api project(':request-response:netty-grpc') + api project(':request-response:request-response-spring-boot-autoconfigure-grpc') api ("org.slf4j:slf4j-api:${slf4jVersion}") api ("org.springframework.boot:spring-boot-starter:${springBootVersion}") diff --git a/azure/request-response-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/azure/grpc/lognet/AbstractRequestResponseAzureGrpcLognetAutoConfiguration.java b/azure/request-response-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/azure/grpc/lognet/AbstractRequestResponseAzureGrpcLognetAutoConfiguration.java deleted file mode 100644 index ba3601ab..00000000 --- a/azure/request-response-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/azure/grpc/lognet/AbstractRequestResponseAzureGrpcLognetAutoConfiguration.java +++ /dev/null @@ -1,36 +0,0 @@ -package no.entur.logging.cloud.azure.spring.azure.grpc.lognet; - -import no.entur.logging.cloud.rr.grpc.LogbackLogstashGrpcSink; -import org.slf4j.Logger; -import org.slf4j.event.Level; -import org.springframework.beans.factory.annotation.Value; - - -public abstract class AbstractRequestResponseAzureGrpcLognetAutoConfiguration { - - @Value("${entur.logging.request-response.logger.level:info}") - protected String loggerLevel; - - @Value("${entur.logging.request-response.logger.name:no.entur.logging.cloud}") - protected String loggerName; - - protected LogbackLogstashGrpcSink createMachineReadbleSink(Logger logger, Level level) { - return LogbackLogstashGrpcSink.newBuilder() - .withLogger(logger) - .withLogLevel(level) - .build(); - } - - public static Level parseLevel(String loggerLevel) { - switch (loggerLevel.toLowerCase()) { - case "trace": return Level.TRACE; - case "debug": return Level.DEBUG; - case "info": return Level.INFO; - case "warn": return Level.WARN; - case "error": return Level.ERROR; - default : { - throw new IllegalStateException("Unknown logger level " + loggerLevel); - } - } - } -} diff --git a/azure/request-response-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/azure/grpc/lognet/OrderedGrpcLoggingClientInterceptor.java b/azure/request-response-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/azure/grpc/lognet/OrderedGrpcLoggingClientInterceptor.java deleted file mode 100644 index 0c931924..00000000 --- a/azure/request-response-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/azure/grpc/lognet/OrderedGrpcLoggingClientInterceptor.java +++ /dev/null @@ -1,23 +0,0 @@ -package no.entur.logging.cloud.azure.spring.azure.grpc.lognet; - -import no.entur.logging.cloud.rr.grpc.GrpcLoggingClientInterceptor; -import no.entur.logging.cloud.rr.grpc.GrpcSink; -import no.entur.logging.cloud.rr.grpc.filter.GrpcClientLoggingFilters; -import no.entur.logging.cloud.rr.grpc.mapper.GrpcMetadataJsonMapper; -import no.entur.logging.cloud.rr.grpc.mapper.GrpcPayloadJsonMapper; -import org.springframework.boot.web.servlet.filter.OrderedRequestContextFilter; -import org.springframework.core.Ordered; - -public class OrderedGrpcLoggingClientInterceptor extends GrpcLoggingClientInterceptor implements Ordered { - - protected final int order; - public OrderedGrpcLoggingClientInterceptor(GrpcSink sink, GrpcClientLoggingFilters filters, GrpcMetadataJsonMapper metadataJsonMapper, GrpcPayloadJsonMapper payloadJsonMapper, int order) { - super(sink, filters, metadataJsonMapper, payloadJsonMapper); - this.order = order; - } - - @Override - public int getOrder() { - return order; - } -} diff --git a/azure/request-response-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/azure/grpc/lognet/OrderedGrpcLoggingServerInterceptor.java b/azure/request-response-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/azure/grpc/lognet/OrderedGrpcLoggingServerInterceptor.java deleted file mode 100644 index f44863b4..00000000 --- a/azure/request-response-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/azure/grpc/lognet/OrderedGrpcLoggingServerInterceptor.java +++ /dev/null @@ -1,34 +0,0 @@ -package no.entur.logging.cloud.azure.spring.azure.grpc.lognet; - -import no.entur.logging.cloud.rr.grpc.GrpcLoggingServerInterceptor; -import no.entur.logging.cloud.rr.grpc.GrpcSink; -import no.entur.logging.cloud.rr.grpc.filter.GrpcServerLoggingFilters; -import no.entur.logging.cloud.rr.grpc.mapper.GrpcMetadataJsonMapper; -import no.entur.logging.cloud.rr.grpc.mapper.GrpcPayloadJsonMapper; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.core.Ordered; - -public class OrderedGrpcLoggingServerInterceptor extends GrpcLoggingServerInterceptor implements Ordered { - - protected final int order; - - public OrderedGrpcLoggingServerInterceptor( - GrpcSink sink, - GrpcServerLoggingFilters filters, - GrpcMetadataJsonMapper metadataJsonMapper, - GrpcPayloadJsonMapper payloadJsonMapper, - - @Value("${entur.logging.request-response.grpc.interceptor-order:0}") - int order - - ) { - super(sink, filters, metadataJsonMapper, payloadJsonMapper); - this.order = order; - } - - @Override - public int getOrder() { - return order; - } - -} diff --git a/azure/request-response-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/azure/grpc/lognet/RequestResponseAzureGrpcLognetAutoConfiguration.java b/azure/request-response-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/azure/grpc/lognet/RequestResponseAzureGrpcLognetAutoConfiguration.java index 05cb614b..ab84ee09 100644 --- a/azure/request-response-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/azure/grpc/lognet/RequestResponseAzureGrpcLognetAutoConfiguration.java +++ b/azure/request-response-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/azure/grpc/lognet/RequestResponseAzureGrpcLognetAutoConfiguration.java @@ -1,142 +1,15 @@ package no.entur.logging.cloud.azure.spring.azure.grpc.lognet; -import com.google.protobuf.util.JsonFormat; -import io.grpc.Status; -import io.grpc.StatusRuntimeException; -import no.entur.logging.cloud.rr.grpc.GrpcSink; -import no.entur.logging.cloud.rr.grpc.filter.GrpcClientLoggingFilters; -import no.entur.logging.cloud.rr.grpc.filter.GrpcServerLoggingFilters; -import no.entur.logging.cloud.rr.grpc.mapper.DefaultGrpcPayloadJsonMapper; -import no.entur.logging.cloud.rr.grpc.mapper.DefaultMetadataJsonMapper; -import no.entur.logging.cloud.rr.grpc.mapper.GrpcMetadataJsonMapper; -import no.entur.logging.cloud.rr.grpc.mapper.GrpcPayloadJsonMapper; -import no.entur.logging.cloud.rr.grpc.mapper.GrpcStatusMapper; -import no.entur.logging.cloud.rr.grpc.mapper.JsonPrinterFactory; -import no.entur.logging.cloud.rr.grpc.mapper.JsonPrinterStatusMapper; -import no.entur.logging.cloud.rr.grpc.mapper.TypeRegistryFactory; -import org.lognet.springboot.grpc.FailureHandlingSupport; -import org.lognet.springboot.grpc.autoconfigure.ConditionalOnMissingErrorHandler; -import org.lognet.springboot.grpc.autoconfigure.GRpcAutoConfiguration; -import org.lognet.springboot.grpc.recovery.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.slf4j.event.Level; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.autoconfigure.AutoConfigureAfter; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.context.annotation.Bean; +import no.entur.logging.cloud.spring.grpc.lognet.AbstractRequestResponseGrpcLognetSinkAutoConfiguration; +import no.entur.logging.cloud.spring.grpc.lognet.RequestResponseGrpcLognetAutoConfiguration; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; import org.springframework.context.annotation.PropertySource; -import java.util.HashMap; - @Configuration @PropertySource(value = "classpath:request-response.azure.properties", ignoreResourceNotFound = false) -@AutoConfigureAfter(GRpcAutoConfiguration.class) -public class RequestResponseAzureGrpcLognetAutoConfiguration extends AbstractRequestResponseAzureGrpcLognetAutoConfiguration { - - @Value("${entur.logging.request-response.max-size}") - protected int maxSize; - - @Value("${entur.logging.request-response.max-body-size}") - protected int maxBodySize; - - @Value("${entur.logging.request-response.grpc.server.interceptor-order:0}") - private int serverInterceptorOrder; - - @Value("${entur.logging.request-response.grpc.client.interceptor-order:0}") - private int clientInterceptorOrder; - - @Value("${entur.logging.request-response.grpc.server.exception-handler.interceptor-order:0}") - private int exceptionInterceptorOrder; - - @Bean - @ConditionalOnMissingBean(JsonFormat.TypeRegistry.class) - public JsonFormat.TypeRegistry jsonFormatTypeRegistry() { - return TypeRegistryFactory.createDefaultTypeRegistry(); - } - - @Bean - @ConditionalOnMissingBean(GrpcStatusMapper.class) - public GrpcStatusMapper grpcStatusMapper(JsonFormat.TypeRegistry typeRegistry) { - JsonFormat.Printer printer = JsonPrinterFactory.createPrinter(false, typeRegistry); - return new JsonPrinterStatusMapper(printer); - } - - @Bean - @ConditionalOnMissingBean(GrpcPayloadJsonMapper.class) - public GrpcPayloadJsonMapper grpcPayloadJsonMapper(JsonFormat.TypeRegistry typeRegistry) { - JsonFormat.Printer printer = JsonPrinterFactory.createPrinter(false, typeRegistry); - return new DefaultGrpcPayloadJsonMapper(printer, maxBodySize, maxBodySize / 2); - } - - @Bean - @ConditionalOnMissingBean(GrpcMetadataJsonMapper.class) - public GrpcMetadataJsonMapper grpcMetadataJsonMapper(GrpcStatusMapper grpcStatusMapper) { - return new DefaultMetadataJsonMapper(grpcStatusMapper, new HashMap<>()); - } - - @Bean - @ConditionalOnMissingBean(GrpcClientLoggingFilters.class) - public GrpcClientLoggingFilters grpcClientLoggingFilters() { - return GrpcClientLoggingFilters.newBuilder().classicDefaultLogging().build(); - } - - @Bean - @ConditionalOnMissingBean(GrpcServerLoggingFilters.class) - public GrpcServerLoggingFilters grpcServerLoggingFilters() { - return GrpcServerLoggingFilters.newBuilder().classicDefaultLogging().build(); - } - - @Bean - @ConditionalOnMissingBean(OrderedGrpcLoggingServerInterceptor.class) - public OrderedGrpcLoggingServerInterceptor orderedGrpcLoggingServerInterceptor(GrpcPayloadJsonMapper grpcPayloadJsonMapper, GrpcMetadataJsonMapper grpcMetadataJsonMapper, GrpcSink grpcSink, GrpcServerLoggingFilters grpcServerLoggingFilters) { - return new OrderedGrpcLoggingServerInterceptor(grpcSink, grpcServerLoggingFilters, grpcMetadataJsonMapper, grpcPayloadJsonMapper, serverInterceptorOrder); - } - - @Bean - @ConditionalOnMissingBean(OrderedGrpcLoggingClientInterceptor.class) - public OrderedGrpcLoggingClientInterceptor orderedGrpcLoggingClientInterceptor(GrpcPayloadJsonMapper grpcPayloadJsonMapper, GrpcMetadataJsonMapper grpcMetadataJsonMapper, GrpcSink grpcSink, GrpcClientLoggingFilters grpcServiceLoggingFilters) { - return new OrderedGrpcLoggingClientInterceptor(grpcSink, grpcServiceLoggingFilters, grpcMetadataJsonMapper, grpcPayloadJsonMapper, clientInterceptorOrder); - } - - @Bean - @ConditionalOnMissingBean(GrpcSink.class) - public GrpcSink grpcSink() { - Logger logger = LoggerFactory.getLogger(loggerName); - Level level = parseLevel(loggerLevel); - - return createMachineReadbleSink(logger, level); - } - - @Bean - @ConditionalOnBean({FailureHandlingSupport.class, GRpcExceptionHandlerMethodResolver.class}) - @ConditionalOnProperty(name = {"entur.logging.request-response.grpc.server.exception-handler.enabled"}, havingValue = "true", matchIfMissing = true) - @Primary - public RequestResponseGRpcExceptionHandlerInterceptor requestResponseGRpcExceptionHandlerInterceptor(GRpcExceptionHandlerInterceptor interceptor) { - return new RequestResponseGRpcExceptionHandlerInterceptor(interceptor, exceptionInterceptorOrder); - } - - /** - * - * Without any exception handlers, the exception handler does not handle status runtime exceptions either - * - */ +@AutoConfigureBefore(RequestResponseGrpcLognetAutoConfiguration.class) +public class RequestResponseAzureGrpcLognetAutoConfiguration extends AbstractRequestResponseGrpcLognetSinkAutoConfiguration { - @ConditionalOnMissingErrorHandler(StatusRuntimeException.class) - @Configuration - static class DefaultStatusRuntimeExceptionErrorHandlerConfig { - @GRpcServiceAdvice - public static class StatusRuntimeExceptionGRpcServiceAdvice { - @java.lang.SuppressWarnings("all") - @GRpcExceptionHandler - public Status handle(StatusRuntimeException e, GRpcExceptionScope scope) { - return e.getStatus(); - } - } - } } diff --git a/azure/request-response-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/azure/grpc/lognet/RequestResponseGRpcExceptionHandlerInterceptor.java b/azure/request-response-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/azure/grpc/lognet/RequestResponseGRpcExceptionHandlerInterceptor.java deleted file mode 100644 index 1f3e6092..00000000 --- a/azure/request-response-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/azure/grpc/lognet/RequestResponseGRpcExceptionHandlerInterceptor.java +++ /dev/null @@ -1,46 +0,0 @@ -package no.entur.logging.cloud.azure.spring.azure.grpc.lognet; - -import io.grpc.Metadata; -import io.grpc.ServerCall; -import io.grpc.ServerCallHandler; -import io.grpc.ServerInterceptor; -import no.entur.logging.cloud.rr.grpc.GrpcSink; -import no.entur.logging.cloud.rr.grpc.filter.GrpcClientLoggingFilters; -import no.entur.logging.cloud.rr.grpc.mapper.GrpcMetadataJsonMapper; -import no.entur.logging.cloud.rr.grpc.mapper.GrpcPayloadJsonMapper; -import org.lognet.springboot.grpc.FailureHandlingSupport; -import org.lognet.springboot.grpc.autoconfigure.GRpcServerProperties; -import org.lognet.springboot.grpc.recovery.GRpcExceptionHandlerInterceptor; -import org.lognet.springboot.grpc.recovery.GRpcExceptionHandlerMethodResolver; -import org.springframework.core.Ordered; - -/** - * - * This interceptor duplicates the lognet recovery interceptor so to handle all errors before the request-response logging - * while still having error handling earlier in the interceptor chain (i.e. for handling authentication errors and so on).

- * - * This is useful when doing request-response between authentication and controller while using the lognet exception handling. - */ - -public class RequestResponseGRpcExceptionHandlerInterceptor implements ServerInterceptor, Ordered { - - protected final int order; - - private final GRpcExceptionHandlerInterceptor delegate; - - public RequestResponseGRpcExceptionHandlerInterceptor(GRpcExceptionHandlerInterceptor delegate, int order) { - this.delegate = delegate; - this.order = order; - } - - @Override - public ServerCall.Listener interceptCall(ServerCall serverCall, Metadata metadata, ServerCallHandler serverCallHandler) { - return delegate.interceptCall(serverCall, metadata, serverCallHandler); - } - - @Override - public int getOrder() { - return order; - } - -} diff --git a/azure/request-response-spring-boot-starter-azure-web/build.gradle b/azure/request-response-spring-boot-starter-azure-web/build.gradle index 16c10629..9b019efb 100644 --- a/azure/request-response-spring-boot-starter-azure-web/build.gradle +++ b/azure/request-response-spring-boot-starter-azure-web/build.gradle @@ -5,6 +5,7 @@ dependencies { api project(':azure:logback-logstash-encoder-azure') api project(':azure:spring-boot-starter-azure-web') api project(":azure:logbook-spring-boot-autoconfigure-azure") + api project(':request-response:request-response-spring-boot-autoconfigure-web') api "org.zalando:logbook-spring-boot-starter:${logbookVersion}" @@ -12,7 +13,7 @@ dependencies { api ("org.springframework.boot:spring-boot-autoconfigure:${springBootVersion}") api ("org.springframework.boot:spring-boot-starter-logging:${springBootVersion}") - compileOnly project(":azure:on-demand-spring-boot-starter-azure-web") + compileOnly project(":on-demand:on-demand-spring-boot-starter-web") testImplementation("org.springframework.boot:spring-boot-starter-test:${springBootVersion}") } diff --git a/azure/request-response-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/logbook/web/HttpMessageStateFilter.java b/azure/request-response-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/logbook/web/HttpMessageStateFilter.java deleted file mode 100644 index c9009d70..00000000 --- a/azure/request-response-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/logbook/web/HttpMessageStateFilter.java +++ /dev/null @@ -1,28 +0,0 @@ -package no.entur.logging.cloud.azure.spring.logbook.web; - -import jakarta.servlet.*; -import no.entur.logging.cloud.logbook.ondemand.state.DefaultHttpMessageStateSupplier; - -import java.io.IOException; - -public class HttpMessageStateFilter implements Filter { - - public static final String HTTP_MESSAGE_STATE = HttpMessageStateFilter.class.getName()+":HTTP_MESSAGE_STATE"; - - public void init(FilterConfig filterConfig) { - } - - public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { - try { - servletRequest.setAttribute(HTTP_MESSAGE_STATE, new DefaultHttpMessageStateSupplier()); - - filterChain.doFilter(servletRequest, servletResponse); - } finally { - servletRequest.removeAttribute(HTTP_MESSAGE_STATE); - } - } - - public void destroy() { - } - -} diff --git a/azure/request-response-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/logbook/web/HttpMessageStateFilterMvcRegistrations.java b/azure/request-response-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/logbook/web/HttpMessageStateFilterMvcRegistrations.java deleted file mode 100644 index 24f0b09b..00000000 --- a/azure/request-response-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/logbook/web/HttpMessageStateFilterMvcRegistrations.java +++ /dev/null @@ -1,12 +0,0 @@ -package no.entur.logging.cloud.azure.spring.logbook.web; - -import org.springframework.boot.autoconfigure.web.servlet.WebMvcRegistrations; -import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter; - -public class HttpMessageStateFilterMvcRegistrations implements WebMvcRegistrations { - - @Override - public RequestMappingHandlerAdapter getRequestMappingHandlerAdapter() { - return new HttpMessageStateFilterRequestMappingHandlerAdapter(); - } -} \ No newline at end of file diff --git a/azure/request-response-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/logbook/web/HttpMessageStateFilterRequestMappingHandlerAdapter.java b/azure/request-response-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/logbook/web/HttpMessageStateFilterRequestMappingHandlerAdapter.java deleted file mode 100644 index ecda6fa1..00000000 --- a/azure/request-response-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/logbook/web/HttpMessageStateFilterRequestMappingHandlerAdapter.java +++ /dev/null @@ -1,13 +0,0 @@ -package no.entur.logging.cloud.azure.spring.logbook.web; - -import org.springframework.web.method.HandlerMethod; -import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter; -import org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod; - -public class HttpMessageStateFilterRequestMappingHandlerAdapter extends RequestMappingHandlerAdapter { - - @Override - protected ServletInvocableHandlerMethod createInvocableHandlerMethod(HandlerMethod handlerMethod) { - return new HttpMessageStateFilterServletInvocableHandlerMethod(handlerMethod); - } -} diff --git a/azure/request-response-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/logbook/web/HttpMessageStateFilterServletInvocableHandlerMethod.java b/azure/request-response-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/logbook/web/HttpMessageStateFilterServletInvocableHandlerMethod.java deleted file mode 100644 index 4d85d200..00000000 --- a/azure/request-response-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/logbook/web/HttpMessageStateFilterServletInvocableHandlerMethod.java +++ /dev/null @@ -1,55 +0,0 @@ -package no.entur.logging.cloud.azure.spring.logbook.web; - -import no.entur.logging.cloud.logbook.ondemand.state.DefaultHttpMessageStateSupplier; -import no.entur.logging.cloud.logbook.ondemand.state.HttpMessageState; -import org.springframework.lang.Nullable; -import org.springframework.web.context.request.NativeWebRequest; -import org.springframework.web.context.request.RequestAttributes; -import org.springframework.web.method.HandlerMethod; -import org.springframework.web.method.support.ModelAndViewContainer; -import org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod; - -import java.util.Arrays; - -/** - * - * Listen in on the databinding, databinding. - * - */ -public class HttpMessageStateFilterServletInvocableHandlerMethod extends ServletInvocableHandlerMethod { - - public HttpMessageStateFilterServletInvocableHandlerMethod(HandlerMethod handlerMethod) { - super(handlerMethod); - } - - @Nullable - public Object invokeForRequest(NativeWebRequest request, @Nullable ModelAndViewContainer mavContainer, Object... providedArgs) throws Exception { - // TODO detect request body annotation? - - DefaultHttpMessageStateSupplier httpMessageStateSupplier = (DefaultHttpMessageStateSupplier) request.getAttribute(HttpMessageStateFilter.HTTP_MESSAGE_STATE, RequestAttributes.SCOPE_REQUEST); - if(httpMessageStateSupplier == null) { - return super.invokeForRequest(request, mavContainer, providedArgs); - } - - try { - Object[] args = this.getMethodArgumentValues(request, mavContainer, providedArgs); - if (logger.isTraceEnabled()) { - logger.trace("Arguments: " + Arrays.toString(args)); - } - - Object o = this.doInvoke(args); - - httpMessageStateSupplier.setBodySyntaxState(HttpMessageState.VALID); - - return o; - } catch(Exception e) { - // something failed, might have been the databinding. But might be well-formed JSON still. - // TODO can we detech whether this was a parse or databinding error? - - httpMessageStateSupplier.setBodySyntaxState(HttpMessageState.UNKNOWN); - - throw e; - } - } - -} diff --git a/azure/request-response-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/logbook/web/LogbookAzureWebAutoConfiguration.java b/azure/request-response-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/logbook/web/LogbookAzureWebAutoConfiguration.java index bec296c1..e3422f52 100644 --- a/azure/request-response-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/logbook/web/LogbookAzureWebAutoConfiguration.java +++ b/azure/request-response-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/logbook/web/LogbookAzureWebAutoConfiguration.java @@ -1,20 +1,7 @@ package no.entur.logging.cloud.azure.spring.logbook.web; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import no.entur.logging.cloud.azure.spring.ondemand.web.properties.OndemandProperties; -import no.entur.logging.cloud.logbook.ondemand.state.HttpMessageState; -import no.entur.logging.cloud.logbook.ondemand.state.HttpMessageStateSupplier; -import no.entur.logging.cloud.logbook.ondemand.state.RequestHttpMessageStateSupplierSource; -import no.entur.logging.cloud.logbook.ondemand.state.ResponseHttpMessageStateSupplierSource; -import no.entur.logging.cloud.spring.logbook.LogbookLoggingAutoConfiguration; +import no.entur.logging.cloud.spring.logbook.web.LogbookWebAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigureBefore; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.autoconfigure.web.servlet.WebMvcRegistrations; -import org.springframework.boot.web.servlet.FilterRegistrationBean; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; @@ -22,57 +9,8 @@ import static jakarta.servlet.DispatcherType.REQUEST; @Configuration -@AutoConfigureBefore(LogbookLoggingAutoConfiguration.class) +@AutoConfigureBefore(LogbookWebAutoConfiguration.class) @PropertySource(value = "classpath:logbook.azure.web.properties", ignoreResourceNotFound = false) public class LogbookAzureWebAutoConfiguration { - /** - * - * If on-demand-logging is enabled, take advantage so that we always output correct JSON. - * - */ - - @Configuration - @ConditionalOnProperty(name = {"entur.logging.http.ondemand.enabled"}, havingValue = "true", matchIfMissing = false) - @ConditionalOnClass(OndemandProperties.class) - public static class OndemandConfiguration { - - @Bean - public FilterRegistrationBean httpMessageStateFilter(OndemandProperties properties) { - FilterRegistrationBean registration = new FilterRegistrationBean<>(); - registration.setFilter(new HttpMessageStateFilter()); - registration.setDispatcherTypes(REQUEST, ERROR); - registration.setOrder(properties.getFilterOrder() - 1); - registration.addUrlPatterns(properties.getFilterUrlPatterns()); - return registration; - } - - @Bean - @ConditionalOnMissingBean(RequestHttpMessageStateSupplierSource.class) - public RequestHttpMessageStateSupplierSource requestHttpMessageStateSupplierSource(HttpServletRequest context) { - - return () -> { - // note: we are now within the request context, but the returned BooleanSupplier will probably be - // outside the request context when it is invoked next time - Object attribute = context.getAttribute(HttpMessageStateFilter.HTTP_MESSAGE_STATE); - if(attribute instanceof HttpMessageStateSupplier result) { - return () -> result.getHttpMessageState(); - } - - return () -> HttpMessageState.UNKNOWN; - }; - } - - @Bean - @ConditionalOnMissingBean(ResponseHttpMessageStateSupplierSource.class) - public ResponseHttpMessageStateSupplierSource responseHttpMessageStateSupplierSource(HttpServletResponse context) { - return () -> () -> HttpMessageState.UNKNOWN; - } - - @Bean - public WebMvcRegistrations customMvcRegistrations() { - return new HttpMessageStateFilterMvcRegistrations(); - } - - } } \ No newline at end of file diff --git a/examples/azure-web-example/build.gradle b/examples/azure-web-example/build.gradle index e25c4d8c..bf971b79 100644 --- a/examples/azure-web-example/build.gradle +++ b/examples/azure-web-example/build.gradle @@ -9,7 +9,7 @@ test { } dependencies { - implementation project(':azure:on-demand-spring-boot-starter-azure-web') + implementation project(':on-demand:on-demand-spring-boot-starter-web') implementation project(":azure:spring-boot-starter-azure-web"); implementation project(":azure:request-response-spring-boot-starter-azure-web"); diff --git a/examples/gcp-grpc-example/build.gradle b/examples/gcp-grpc-example/build.gradle index 9d368640..d1bc6c6e 100644 --- a/examples/gcp-grpc-example/build.gradle +++ b/examples/gcp-grpc-example/build.gradle @@ -10,11 +10,12 @@ test { } dependencies { - implementation project(':gcp:on-demand-spring-boot-starter-gcp-grpc') + implementation project(':on-demand:on-demand-spring-boot-starter-grpc') implementation project(':gcp:spring-boot-starter-gcp-grpc') implementation project(':gcp:request-response-spring-boot-starter-gcp-grpc') implementation project(':trace:server:correlation-id-trace-grpc-netty') implementation project(':trace:mdc-context-grpc-netty') + implementation project(':request-response:request-response-spring-boot-autoconfigure-grpc') implementation("io.grpc:grpc-api:$grpcVersion") implementation("io.grpc:grpc-core:$grpcVersion") diff --git a/examples/gcp-grpc-example/src/main/java/no/entur/grpc/example/GreetingController.java b/examples/gcp-grpc-example/src/main/java/no/entur/grpc/example/GreetingController.java index 7e2fa2bd..13fb9efc 100644 --- a/examples/gcp-grpc-example/src/main/java/no/entur/grpc/example/GreetingController.java +++ b/examples/gcp-grpc-example/src/main/java/no/entur/grpc/example/GreetingController.java @@ -1,12 +1,8 @@ package no.entur.grpc.example; -import io.grpc.util.TransmitStatusRuntimeExceptionInterceptor; -import no.entur.logging.cloud.gcp.spring.gcp.grpc.lognet.OrderedGrpcLoggingServerInterceptor; -import no.entur.logging.cloud.gcp.spring.gcp.grpc.lognet.RequestResponseGRpcExceptionHandlerInterceptor; -import no.entur.logging.cloud.grpc.mdc.InitializeGrpcMdcContextServerInterceptor; -import no.entur.logging.cloud.grpc.trace.CorrelationIdGrpcMdcContextServerInterceptor; -import no.entur.logging.cloud.rr.grpc.GrpcLoggingServerInterceptor; +import no.entur.logging.cloud.spring.grpc.lognet.OrderedGrpcLoggingServerInterceptor; +import no.entur.logging.cloud.spring.grpc.lognet.RequestResponseGrpcExceptionHandlerInterceptor; import no.entur.logging.cloud.trace.spring.grpc.interceptor.OrderedCorrelationIdGrpcMdcContextServerInterceptor; import org.lognet.springboot.grpc.GRpcService; import org.lognet.springboot.grpc.recovery.GRpcExceptionHandlerInterceptor; @@ -17,7 +13,7 @@ MyValidationServerInterceptor.class, // logging - RequestResponseGRpcExceptionHandlerInterceptor.class, + RequestResponseGrpcExceptionHandlerInterceptor.class, OrderedGrpcLoggingServerInterceptor.class, GRpcExceptionHandlerInterceptor.class, diff --git a/examples/gcp-grpc-example/src/main/java/no/entur/grpc/example/GreetingControllerWithOnDemandLogging.java b/examples/gcp-grpc-example/src/main/java/no/entur/grpc/example/GreetingControllerWithOnDemandLogging.java index f0f755fc..29e7657d 100644 --- a/examples/gcp-grpc-example/src/main/java/no/entur/grpc/example/GreetingControllerWithOnDemandLogging.java +++ b/examples/gcp-grpc-example/src/main/java/no/entur/grpc/example/GreetingControllerWithOnDemandLogging.java @@ -1,10 +1,8 @@ package no.entur.grpc.example; -import io.grpc.util.TransmitStatusRuntimeExceptionInterceptor; -import no.entur.logging.cloud.gcp.spring.gcp.grpc.lognet.RequestResponseGRpcExceptionHandlerInterceptor; -import no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet.scope.GrpcLoggingScopeContextInterceptor; -import no.entur.logging.cloud.grpc.mdc.InitializeGrpcMdcContextServerInterceptor; +import no.entur.logging.cloud.spring.grpc.lognet.RequestResponseGrpcExceptionHandlerInterceptor; +import no.entur.logging.cloud.spring.ondemand.grpc.lognet.scope.GrpcLoggingScopeContextInterceptor; import no.entur.logging.cloud.grpc.trace.CorrelationIdGrpcMdcContextServerInterceptor; import no.entur.logging.cloud.rr.grpc.GrpcLoggingServerInterceptor; import org.lognet.springboot.grpc.GRpcService; @@ -18,7 +16,7 @@ MyValidationServerInterceptor.class, // logging - RequestResponseGRpcExceptionHandlerInterceptor.class, + RequestResponseGrpcExceptionHandlerInterceptor.class, GrpcLoggingServerInterceptor.class, GRpcExceptionHandlerInterceptor.class, diff --git a/examples/gcp-grpc-without-test-artifacts-example/build.gradle b/examples/gcp-grpc-without-test-artifacts-example/build.gradle index a2065cb0..abda6484 100644 --- a/examples/gcp-grpc-without-test-artifacts-example/build.gradle +++ b/examples/gcp-grpc-without-test-artifacts-example/build.gradle @@ -10,10 +10,11 @@ test { } dependencies { - implementation project(':gcp:on-demand-spring-boot-starter-gcp-grpc') + implementation project(':on-demand:on-demand-spring-boot-starter-grpc') implementation project(':gcp:spring-boot-starter-gcp-grpc') implementation project(':gcp:request-response-spring-boot-starter-gcp-grpc') implementation project(':trace:server:correlation-id-trace-grpc-netty') + implementation project(':request-response:request-response-spring-boot-autoconfigure-grpc') implementation project(':trace:mdc-context-grpc-netty') diff --git a/examples/gcp-grpc-without-test-artifacts-example/src/main/java/no/entur/grpc/example/GreetingController.java b/examples/gcp-grpc-without-test-artifacts-example/src/main/java/no/entur/grpc/example/GreetingController.java index 7e2fa2bd..dc2f3be3 100644 --- a/examples/gcp-grpc-without-test-artifacts-example/src/main/java/no/entur/grpc/example/GreetingController.java +++ b/examples/gcp-grpc-without-test-artifacts-example/src/main/java/no/entur/grpc/example/GreetingController.java @@ -2,8 +2,8 @@ import io.grpc.util.TransmitStatusRuntimeExceptionInterceptor; -import no.entur.logging.cloud.gcp.spring.gcp.grpc.lognet.OrderedGrpcLoggingServerInterceptor; -import no.entur.logging.cloud.gcp.spring.gcp.grpc.lognet.RequestResponseGRpcExceptionHandlerInterceptor; +import no.entur.logging.cloud.spring.grpc.lognet.OrderedGrpcLoggingServerInterceptor; +import no.entur.logging.cloud.spring.grpc.lognet.RequestResponseGrpcExceptionHandlerInterceptor; import no.entur.logging.cloud.grpc.mdc.InitializeGrpcMdcContextServerInterceptor; import no.entur.logging.cloud.grpc.trace.CorrelationIdGrpcMdcContextServerInterceptor; import no.entur.logging.cloud.rr.grpc.GrpcLoggingServerInterceptor; @@ -17,7 +17,7 @@ MyValidationServerInterceptor.class, // logging - RequestResponseGRpcExceptionHandlerInterceptor.class, + RequestResponseGrpcExceptionHandlerInterceptor.class, OrderedGrpcLoggingServerInterceptor.class, GRpcExceptionHandlerInterceptor.class, diff --git a/examples/gcp-grpc-without-test-artifacts-example/src/main/java/no/entur/grpc/example/GreetingControllerWithOnDemandLogging.java b/examples/gcp-grpc-without-test-artifacts-example/src/main/java/no/entur/grpc/example/GreetingControllerWithOnDemandLogging.java index f0f755fc..29e7657d 100644 --- a/examples/gcp-grpc-without-test-artifacts-example/src/main/java/no/entur/grpc/example/GreetingControllerWithOnDemandLogging.java +++ b/examples/gcp-grpc-without-test-artifacts-example/src/main/java/no/entur/grpc/example/GreetingControllerWithOnDemandLogging.java @@ -1,10 +1,8 @@ package no.entur.grpc.example; -import io.grpc.util.TransmitStatusRuntimeExceptionInterceptor; -import no.entur.logging.cloud.gcp.spring.gcp.grpc.lognet.RequestResponseGRpcExceptionHandlerInterceptor; -import no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet.scope.GrpcLoggingScopeContextInterceptor; -import no.entur.logging.cloud.grpc.mdc.InitializeGrpcMdcContextServerInterceptor; +import no.entur.logging.cloud.spring.grpc.lognet.RequestResponseGrpcExceptionHandlerInterceptor; +import no.entur.logging.cloud.spring.ondemand.grpc.lognet.scope.GrpcLoggingScopeContextInterceptor; import no.entur.logging.cloud.grpc.trace.CorrelationIdGrpcMdcContextServerInterceptor; import no.entur.logging.cloud.rr.grpc.GrpcLoggingServerInterceptor; import org.lognet.springboot.grpc.GRpcService; @@ -18,7 +16,7 @@ MyValidationServerInterceptor.class, // logging - RequestResponseGRpcExceptionHandlerInterceptor.class, + RequestResponseGrpcExceptionHandlerInterceptor.class, GrpcLoggingServerInterceptor.class, GRpcExceptionHandlerInterceptor.class, diff --git a/examples/gcp-web-example/build.gradle b/examples/gcp-web-example/build.gradle index 9d34f0ec..824713ca 100644 --- a/examples/gcp-web-example/build.gradle +++ b/examples/gcp-web-example/build.gradle @@ -9,7 +9,7 @@ test { } dependencies { - implementation project(':gcp:on-demand-spring-boot-starter-gcp-web') + implementation project(':on-demand:on-demand-spring-boot-starter-web') implementation project(":gcp:spring-boot-starter-gcp-web"); implementation project(":gcp:request-response-spring-boot-starter-gcp-web"); diff --git a/examples/gcp-web-grpc-example/build.gradle b/examples/gcp-web-grpc-example/build.gradle index daea1ef4..61327bf1 100644 --- a/examples/gcp-web-grpc-example/build.gradle +++ b/examples/gcp-web-grpc-example/build.gradle @@ -9,7 +9,7 @@ test { } dependencies { - implementation project(':gcp:on-demand-spring-boot-starter-gcp-web') + implementation project(':on-demand:on-demand-spring-boot-starter-web') implementation project(":gcp:spring-boot-starter-gcp-web"); implementation project(":gcp:request-response-spring-boot-starter-gcp-web"); implementation project(":gcp:spring-boot-autoconfigure-gcp-grpc-mdc"); diff --git a/examples/gcp-web-without-test-artifacts-example/build.gradle b/examples/gcp-web-without-test-artifacts-example/build.gradle index 7d0f3d49..fb938d11 100644 --- a/examples/gcp-web-without-test-artifacts-example/build.gradle +++ b/examples/gcp-web-without-test-artifacts-example/build.gradle @@ -9,7 +9,7 @@ test { } dependencies { - implementation project(':gcp:on-demand-spring-boot-starter-gcp-web') + implementation project(':on-demand:on-demand-spring-boot-starter-web') implementation project(":gcp:spring-boot-starter-gcp-web"); implementation project(":gcp:request-response-spring-boot-starter-gcp-web"); diff --git a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/GrpcOndemandLoggingAutoConfiguration.java b/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/GrpcOndemandLoggingAutoConfiguration.java deleted file mode 100644 index 325ed6b4..00000000 --- a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/GrpcOndemandLoggingAutoConfiguration.java +++ /dev/null @@ -1,189 +0,0 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet; - - -import ch.qos.logback.classic.Level; -import ch.qos.logback.classic.Logger; -import ch.qos.logback.classic.spi.ILoggingEvent; -import ch.qos.logback.core.Appender; -import io.grpc.Status; -import no.entur.logging.cloud.appender.scope.LoggingScopeAsyncAppender; -import no.entur.logging.cloud.appender.scope.predicate.HigherOrEqualToLogLevelPredicate; -import no.entur.logging.cloud.appender.scope.predicate.LoggerNamePrefixHigherOrEqualToLogLevelPredicate; -import no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet.properties.*; -import no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet.scope.*; -import org.slf4j.LoggerFactory; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -@Configuration -@EnableConfigurationProperties(value = {OndemandProperties.class}) -public class GrpcOndemandLoggingAutoConfiguration { - - private static final Logger LOGGER = (Logger) LoggerFactory.getLogger(GrpcOndemandLoggingAutoConfiguration.class); - - @Configuration - @ConditionalOnProperty(name = {"entur.logging.grpc.ondemand.enabled"}, havingValue = "true", matchIfMissing = false) - public static class OndemandConfiguration { - - @Bean - @ConditionalOnMissingBean(GrpcLoggingScopeContextInterceptor.class) - public GrpcLoggingScopeContextInterceptor grpcLoggingScopeContextInterceptor(OndemandProperties properties) { - LoggingScopeAsyncAppender appender = getAppender(); - - LOGGER.info("Configure on-demand GRPC logging"); - - GrpcLoggingScopeFilters filters = new GrpcLoggingScopeFilters(); - - GrpcLoggingScopeFilter defaultFilter = toFilter(properties.getSuccess(), properties.getFailure(), properties.getTroubleshoot()); - filters.setDefaultFilter(defaultFilter); - - List paths = properties.getPaths(); - for (OndemandPath matcher : paths) { - if(!matcher.isEnabled()) { - continue; - } - GrpcLoggingScopeFilter filter = toFilter(matcher.getSuccess(), matcher.getFailure(), matcher.getTroubleshoot()); - - String serviceName = matcher.getServiceName(); - List methodNames = matcher.getMethodNames(); - if(methodNames.isEmpty()) { - for (String methodName : methodNames) { - filters.addFilter(serviceName, methodName, filter); - } - } else { - filters.addFilter(serviceName, filter); - } - } - - GrpcContextLoggingScopeFactory grpcContextLoggingScopeFactory = new GrpcContextLoggingScopeFactory(); - - GrpcLoggingScopeContextInterceptor interceptor = GrpcLoggingScopeContextInterceptor - .newBuilder() - .withSink(appender) - .withFilters(filters) - .withOrder(properties.getInterceptorOrder()) - .withFactory(grpcContextLoggingScopeFactory) - .build(); - - appender.addScopeProvider(grpcContextLoggingScopeFactory); - - return interceptor; - } - - protected Level toLevel(String level) { - switch (level) { - case ("trace"): - return Level.TRACE; - case ("debug"): - return Level.DEBUG; - case ("info"): - return Level.INFO; - case ("warn"): - return Level.WARN; - case ("error"): - return Level.ERROR; - default: - throw new IllegalStateException("Level [" + level + "] not recognized."); - } - } - - private static LoggingScopeAsyncAppender getAppender() { - Logger logger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); - Iterator> appenderIterator = logger.iteratorForAppenders(); - if(!appenderIterator.hasNext()) { - throw new IllegalStateException("No on-demand log appenders configured, expected at least one which is implementing " + LoggingScopeAsyncAppender.class.getName()); - } - while (appenderIterator.hasNext()) { - Appender appender = appenderIterator.next(); - if (appender instanceof LoggingScopeAsyncAppender) { - return (LoggingScopeAsyncAppender) appender; - } - } - throw new IllegalStateException("Expected on-demand log appender implementing " + LoggingScopeAsyncAppender.class.getName()); - } - - public GrpcLoggingScopeFilter toFilter(OndemandSuccess success, OndemandFailure failure, OndemandTroubleshoot troubleshoot) { - GrpcLoggingScopeFilter filter = new GrpcLoggingScopeFilter(); - - List headers = troubleshoot.getGrpc().getHeaders(); - if(headers != null) { - Set headerNames = new HashSet<>(); // thread safe for reading - for (OndemandGrpcHeader header : headers) { - if(header.isEnabled()) { - headerNames.add(header.getName().toLowerCase()); - } - } - if(!headerNames.isEmpty()) { - filter.setGrpcHeaderPresentPredicate(new GrpcHeaderPresentPredicate(headerNames)); - } else { - filter.setGrpcHeaderPresentPredicate((e) -> false); - } - } else { - filter.setGrpcHeaderPresentPredicate((e) -> false); - } - - Level alwaysLogLevel = toLevel(success.getLevel()); - filter.setQueuePredicate( (e) -> e.getLevel().toInt() < alwaysLogLevel.toInt()); - - Level optionallyLogLevel = toLevel(failure.getLevel()); - filter.setIgnorePredicate( (e) -> e.getLevel().toInt() < optionallyLogLevel.toInt()); - - // troubleshooting: to take effect, the troubleshooting must be - // - lower than success, and/or - // - lower than failure - Level troubleShootAlwaysLogLevel = toLevel(troubleshoot.getLevel()); - if(troubleShootAlwaysLogLevel.toInt() > alwaysLogLevel.toInt()) { - filter.setTroubleshootQueuePredicate( (e) -> e.getLevel().toInt() < alwaysLogLevel.toInt()); - } else { - filter.setTroubleshootQueuePredicate( (e) -> e.getLevel().toInt() < troubleShootAlwaysLogLevel.toInt()); - } - - Level troubleShootOptionallyLogLevel = troubleShootAlwaysLogLevel; - if( troubleShootOptionallyLogLevel.toInt() > optionallyLogLevel.toInt()) { - filter.setTroubleshootIgnorePredicate( (e) -> e.getLevel().toInt() < optionallyLogLevel.toInt()); - } else { - filter.setTroubleshootIgnorePredicate( (e) -> e.getLevel().toInt() < troubleShootOptionallyLogLevel.toInt()); - } - - OndemandGrpcResponseTrigger httpStatusCodeTrigger = failure.getGrpc(); - if(httpStatusCodeTrigger.isEnabled()) { - Set status = httpStatusCodeTrigger.getStatus().stream().map( (s) -> s.toUpperCase()).collect(Collectors.toSet()); - - Status.Code[] values = Status.Code.values(); - - boolean[] codes = new boolean[values.length]; - for(int i = 0; i < codes.length; i++) { - codes[i] = status.contains(values[i].name()); - } - - filter.setGrpcStatusPredicate((e) -> codes[e.getCode().ordinal()]); - } else { - filter.setGrpcStatusPredicate((e) -> false); - } - - OndemandLogLevelTrigger logLevelTrigger = failure.getLogger(); - if(logLevelTrigger.isEnabled()) { - Level flushForLevel = toLevel(logLevelTrigger.getLevel()); - List name = logLevelTrigger.getName(); - if(name.isEmpty()) { - filter.setLogLevelFailurePredicate(new HigherOrEqualToLogLevelPredicate(flushForLevel.toInt())); - } else { - filter.setLogLevelFailurePredicate(new LoggerNamePrefixHigherOrEqualToLogLevelPredicate(flushForLevel.toInt(), name)); - } - } else { - filter.setLogLevelFailurePredicate((e) -> false); - } - - return filter; - } - } -} diff --git a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandLogLevelTrigger.java b/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandLogLevelTrigger.java deleted file mode 100644 index 6fa440c4..00000000 --- a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandLogLevelTrigger.java +++ /dev/null @@ -1,37 +0,0 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet.properties; - -import java.util.ArrayList; -import java.util.List; - -public class OndemandLogLevelTrigger { - - private boolean enabled = true; - - private String level = "error"; - - private List name = new ArrayList<>(); - - public void setLevel(String level) { - this.level = level; - } - - public String getLevel() { - return level; - } - - public List getName() { - return name; - } - - public void setName(List name) { - this.name = name; - } - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - public boolean isEnabled() { - return enabled; - } -} diff --git a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandSuccess.java b/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandSuccess.java deleted file mode 100644 index 20153845..00000000 --- a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandSuccess.java +++ /dev/null @@ -1,14 +0,0 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet.properties; - -public class OndemandSuccess { - - private String level = "warn"; - - public void setLevel(String level) { - this.level = level; - } - - public String getLevel() { - return level; - } -} diff --git a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index 311a089c..00000000 --- a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1 +0,0 @@ -no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet.GrpcOndemandLoggingAutoConfiguration diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/gcp/on-demand-spring-boot-starter-gcp-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index a2fc3596..00000000 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1 +0,0 @@ -no.entur.logging.cloud.gcp.spring.ondemand.web.GcpWebOndemandLoggingAutoConfiguration \ No newline at end of file diff --git a/gcp/request-response-spring-boot-starter-gcp-grpc-test/build.gradle b/gcp/request-response-spring-boot-starter-gcp-grpc-test/build.gradle index 17cf1912..e84efc18 100644 --- a/gcp/request-response-spring-boot-starter-gcp-grpc-test/build.gradle +++ b/gcp/request-response-spring-boot-starter-gcp-grpc-test/build.gradle @@ -2,6 +2,7 @@ dependencies { api project(":gcp:spring-boot-autoconfigure-gcp-test") api project(':gcp:request-response-spring-boot-starter-gcp-grpc') + api project(':request-response:request-response-spring-boot-autoconfigure-grpc') api ("org.entur.jackson:jackson-syntax-highlight:${jacksonSyntaxHighlightVersion}") api ("org.entur.logback-logstash-syntax-highlighting-decorators:logback-logstash-syntax-highlighting-decorators:${logbackLogstashSyntaxHighlightingDecoratorsVersion}") diff --git a/gcp/request-response-spring-boot-starter-gcp-grpc-test/src/main/java/no/entur/logging/cloud/gcp/spring/gcp/grpc/lognet/test/RequestResponseGcpGrpcLognetTestAutoConfiguration.java b/gcp/request-response-spring-boot-starter-gcp-grpc-test/src/main/java/no/entur/logging/cloud/gcp/spring/gcp/grpc/lognet/test/RequestResponseGcpGrpcLognetTestAutoConfiguration.java index 521e87c2..158c24a0 100644 --- a/gcp/request-response-spring-boot-starter-gcp-grpc-test/src/main/java/no/entur/logging/cloud/gcp/spring/gcp/grpc/lognet/test/RequestResponseGcpGrpcLognetTestAutoConfiguration.java +++ b/gcp/request-response-spring-boot-starter-gcp-grpc-test/src/main/java/no/entur/logging/cloud/gcp/spring/gcp/grpc/lognet/test/RequestResponseGcpGrpcLognetTestAutoConfiguration.java @@ -1,9 +1,9 @@ package no.entur.logging.cloud.gcp.spring.gcp.grpc.lognet.test; +import no.entur.logging.cloud.gcp.spring.gcp.grpc.lognet.RequestResponseGcpGrpcLognetAutoConfiguration; +import no.entur.logging.cloud.spring.grpc.lognet.AbstractRequestResponseGrpcLognetSinkAutoConfiguration; import org.entur.jackson.jsh.AnsiSyntaxHighlight; import org.entur.jackson.jsh.DefaultSyntaxHighlighter; -import no.entur.logging.cloud.gcp.spring.gcp.grpc.lognet.AbstractRequestResponseGcpGrpcLognetAutoConfiguration; -import no.entur.logging.cloud.gcp.spring.gcp.grpc.lognet.RequestResponseGcpGrpcLognetAutoConfiguration; import no.entur.logging.cloud.rr.grpc.GrpcSink; import no.entur.logging.cloud.rr.grpc.test.CompositeSink; import no.entur.logging.cloud.rr.grpc.test.PrettyPrintingLogLevelLogstashLogbackGrpcSink; @@ -21,7 +21,7 @@ }) @Configuration -public class RequestResponseGcpGrpcLognetTestAutoConfiguration extends AbstractRequestResponseGcpGrpcLognetAutoConfiguration { +public class RequestResponseGcpGrpcLognetTestAutoConfiguration extends AbstractRequestResponseGrpcLognetSinkAutoConfiguration { @Bean @ConditionalOnMissingBean(GrpcSink.class) diff --git a/gcp/request-response-spring-boot-starter-gcp-grpc-test/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/test/DemoApplication.java b/gcp/request-response-spring-boot-starter-gcp-grpc-test/src/test/java/no/entur/logging/cloud/spring/logbook/web/test/DemoApplication.java similarity index 82% rename from gcp/request-response-spring-boot-starter-gcp-grpc-test/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/test/DemoApplication.java rename to gcp/request-response-spring-boot-starter-gcp-grpc-test/src/test/java/no/entur/logging/cloud/spring/logbook/web/test/DemoApplication.java index 493c50fe..5ad9589d 100644 --- a/gcp/request-response-spring-boot-starter-gcp-grpc-test/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/test/DemoApplication.java +++ b/gcp/request-response-spring-boot-starter-gcp-grpc-test/src/test/java/no/entur/logging/cloud/spring/logbook/web/test/DemoApplication.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.logbook.web.test; +package no.entur.logging.cloud.spring.logbook.web.test; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/gcp/request-response-spring-boot-starter-gcp-web-test/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/test/LoadContextLoggingTest.java b/gcp/request-response-spring-boot-starter-gcp-grpc-test/src/test/java/no/entur/logging/cloud/spring/logbook/web/test/LoadContextLoggingTest.java similarity index 98% rename from gcp/request-response-spring-boot-starter-gcp-web-test/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/test/LoadContextLoggingTest.java rename to gcp/request-response-spring-boot-starter-gcp-grpc-test/src/test/java/no/entur/logging/cloud/spring/logbook/web/test/LoadContextLoggingTest.java index 08d2928f..100a870e 100644 --- a/gcp/request-response-spring-boot-starter-gcp-web-test/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/test/LoadContextLoggingTest.java +++ b/gcp/request-response-spring-boot-starter-gcp-grpc-test/src/test/java/no/entur/logging/cloud/spring/logbook/web/test/LoadContextLoggingTest.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.logbook.web.test; +package no.entur.logging.cloud.spring.logbook.web.test; import no.entur.logging.cloud.api.DevOpsLogger; import no.entur.logging.cloud.api.DevOpsLoggerFactory; diff --git a/gcp/request-response-spring-boot-starter-gcp-grpc/build.gradle b/gcp/request-response-spring-boot-starter-gcp-grpc/build.gradle index 8c38713c..f7ab4a65 100644 --- a/gcp/request-response-spring-boot-starter-gcp-grpc/build.gradle +++ b/gcp/request-response-spring-boot-starter-gcp-grpc/build.gradle @@ -4,6 +4,7 @@ dependencies { api project(':api') api project(':gcp:logback-logstash-encoder-gcp') api project(':request-response:netty-grpc') + api project(':request-response:request-response-spring-boot-autoconfigure-grpc') api ("org.slf4j:slf4j-api:${slf4jVersion}") api ("org.springframework.boot:spring-boot-starter:${springBootVersion}") diff --git a/gcp/request-response-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/gcp/grpc/lognet/RequestResponseGcpGrpcLognetAutoConfiguration.java b/gcp/request-response-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/gcp/grpc/lognet/RequestResponseGcpGrpcLognetAutoConfiguration.java index 15b60b45..ef209de3 100644 --- a/gcp/request-response-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/gcp/grpc/lognet/RequestResponseGcpGrpcLognetAutoConfiguration.java +++ b/gcp/request-response-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/gcp/grpc/lognet/RequestResponseGcpGrpcLognetAutoConfiguration.java @@ -1,146 +1,13 @@ package no.entur.logging.cloud.gcp.spring.gcp.grpc.lognet; -import com.google.protobuf.util.JsonFormat; -import io.grpc.Status; -import io.grpc.StatusRuntimeException; -import no.entur.logging.cloud.rr.grpc.GrpcSink; -import no.entur.logging.cloud.rr.grpc.filter.GrpcClientLoggingFilters; -import no.entur.logging.cloud.rr.grpc.filter.GrpcServerLoggingFilters; -import no.entur.logging.cloud.rr.grpc.mapper.DefaultGrpcPayloadJsonMapper; -import no.entur.logging.cloud.rr.grpc.mapper.DefaultMetadataJsonMapper; -import no.entur.logging.cloud.rr.grpc.mapper.GrpcMetadataJsonMapper; -import no.entur.logging.cloud.rr.grpc.mapper.GrpcPayloadJsonMapper; -import no.entur.logging.cloud.rr.grpc.mapper.GrpcStatusMapper; -import no.entur.logging.cloud.rr.grpc.mapper.JsonPrinterFactory; -import no.entur.logging.cloud.rr.grpc.mapper.JsonPrinterStatusMapper; -import no.entur.logging.cloud.rr.grpc.mapper.TypeRegistryFactory; -import org.lognet.springboot.grpc.FailureHandlingSupport; -import org.lognet.springboot.grpc.GRpcErrorHandler; -import org.lognet.springboot.grpc.autoconfigure.ConditionalOnMissingErrorHandler; -import org.lognet.springboot.grpc.autoconfigure.GRpcAutoConfiguration; -import org.lognet.springboot.grpc.autoconfigure.GRpcServerProperties; -import org.lognet.springboot.grpc.recovery.*; -import org.lognet.springboot.grpc.security.GrpcSecurityConfiguration; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.slf4j.event.Level; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.autoconfigure.AutoConfigureAfter; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.context.annotation.Bean; +import no.entur.logging.cloud.spring.grpc.lognet.AbstractRequestResponseGrpcLognetSinkAutoConfiguration; +import no.entur.logging.cloud.spring.grpc.lognet.RequestResponseGrpcLognetAutoConfiguration; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; import org.springframework.context.annotation.PropertySource; -import java.util.HashMap; -import java.util.Optional; - @Configuration @PropertySource(value = "classpath:request-response.gcp.properties", ignoreResourceNotFound = false) -@AutoConfigureAfter(GRpcAutoConfiguration.class) -public class RequestResponseGcpGrpcLognetAutoConfiguration extends AbstractRequestResponseGcpGrpcLognetAutoConfiguration { - - @Value("${entur.logging.request-response.max-size}") - protected int maxSize; - - @Value("${entur.logging.request-response.max-body-size}") - protected int maxBodySize; - - @Value("${entur.logging.request-response.grpc.server.interceptor-order:0}") - private int serverInterceptorOrder; - - @Value("${entur.logging.request-response.grpc.client.interceptor-order:0}") - private int clientInterceptorOrder; - - @Value("${entur.logging.request-response.grpc.server.exception-handler.interceptor-order:0}") - private int exceptionInterceptorOrder; - - @Bean - @ConditionalOnMissingBean(JsonFormat.TypeRegistry.class) - public JsonFormat.TypeRegistry jsonFormatTypeRegistry() { - return TypeRegistryFactory.createDefaultTypeRegistry(); - } - - @Bean - @ConditionalOnMissingBean(GrpcStatusMapper.class) - public GrpcStatusMapper grpcStatusMapper(JsonFormat.TypeRegistry typeRegistry) { - JsonFormat.Printer printer = JsonPrinterFactory.createPrinter(false, typeRegistry); - return new JsonPrinterStatusMapper(printer); - } - - @Bean - @ConditionalOnMissingBean(GrpcPayloadJsonMapper.class) - public GrpcPayloadJsonMapper grpcPayloadJsonMapper(JsonFormat.TypeRegistry typeRegistry) { - JsonFormat.Printer printer = JsonPrinterFactory.createPrinter(false, typeRegistry); - return new DefaultGrpcPayloadJsonMapper(printer, maxBodySize, maxBodySize / 2); - } - - @Bean - @ConditionalOnMissingBean(GrpcMetadataJsonMapper.class) - public GrpcMetadataJsonMapper grpcMetadataJsonMapper(GrpcStatusMapper grpcStatusMapper) { - return new DefaultMetadataJsonMapper(grpcStatusMapper, new HashMap<>()); - } - - @Bean - @ConditionalOnMissingBean(GrpcClientLoggingFilters.class) - public GrpcClientLoggingFilters grpcClientLoggingFilters() { - return GrpcClientLoggingFilters.newBuilder().classicDefaultLogging().build(); - } - - @Bean - @ConditionalOnMissingBean(GrpcServerLoggingFilters.class) - public GrpcServerLoggingFilters grpcServerLoggingFilters() { - return GrpcServerLoggingFilters.newBuilder().classicDefaultLogging().build(); - } - - @Bean - @ConditionalOnMissingBean(OrderedGrpcLoggingServerInterceptor.class) - public OrderedGrpcLoggingServerInterceptor orderedGrpcLoggingServerInterceptor(GrpcPayloadJsonMapper grpcPayloadJsonMapper, GrpcMetadataJsonMapper grpcMetadataJsonMapper, GrpcSink grpcSink, GrpcServerLoggingFilters grpcServerLoggingFilters) { - return new OrderedGrpcLoggingServerInterceptor(grpcSink, grpcServerLoggingFilters, grpcMetadataJsonMapper, grpcPayloadJsonMapper, serverInterceptorOrder); - } - - @Bean - @ConditionalOnMissingBean(OrderedGrpcLoggingClientInterceptor.class) - public OrderedGrpcLoggingClientInterceptor orderedGrpcLoggingClientInterceptor(GrpcPayloadJsonMapper grpcPayloadJsonMapper, GrpcMetadataJsonMapper grpcMetadataJsonMapper, GrpcSink grpcSink, GrpcClientLoggingFilters grpcServiceLoggingFilters) { - return new OrderedGrpcLoggingClientInterceptor(grpcSink, grpcServiceLoggingFilters, grpcMetadataJsonMapper, grpcPayloadJsonMapper, clientInterceptorOrder); - } - - @Bean - @ConditionalOnMissingBean(GrpcSink.class) - public GrpcSink grpcSink() { - Logger logger = LoggerFactory.getLogger(loggerName); - Level level = parseLevel(loggerLevel); - - return createMachineReadbleSink(logger, level); - } - - @Bean - @ConditionalOnBean({FailureHandlingSupport.class, GRpcExceptionHandlerMethodResolver.class}) - @ConditionalOnProperty(name = {"entur.logging.request-response.grpc.server.exception-handler.enabled"}, havingValue = "true", matchIfMissing = true) - @Primary - public RequestResponseGRpcExceptionHandlerInterceptor requestResponseGRpcExceptionHandlerInterceptor(GRpcExceptionHandlerInterceptor interceptor) { - return new RequestResponseGRpcExceptionHandlerInterceptor(interceptor, exceptionInterceptorOrder); - } - - /** - * - * Without any exception handlers, the exception handler does not handle status runtime exceptions either - * - */ - - @ConditionalOnMissingErrorHandler(StatusRuntimeException.class) - @Configuration - static class DefaultStatusRuntimeExceptionErrorHandlerConfig { - - @GRpcServiceAdvice - public static class StatusRuntimeExceptionGRpcServiceAdvice { - @java.lang.SuppressWarnings("all") - @GRpcExceptionHandler - public Status handle(StatusRuntimeException e, GRpcExceptionScope scope) { - return e.getStatus(); - } - } - } +@AutoConfigureBefore(RequestResponseGrpcLognetAutoConfiguration.class) +public class RequestResponseGcpGrpcLognetAutoConfiguration extends AbstractRequestResponseGrpcLognetSinkAutoConfiguration { } diff --git a/gcp/request-response-spring-boot-starter-gcp-web-test/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/test/DemoApplication.java b/gcp/request-response-spring-boot-starter-gcp-web-test/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/test/DemoApplication.java deleted file mode 100644 index 493c50fe..00000000 --- a/gcp/request-response-spring-boot-starter-gcp-web-test/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/test/DemoApplication.java +++ /dev/null @@ -1,13 +0,0 @@ -package no.entur.logging.cloud.gcp.spring.logbook.web.test; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class DemoApplication { - - public static void main(String[] args) { - SpringApplication.run(DemoApplication.class, args); - } - -} \ No newline at end of file diff --git a/gcp/request-response-spring-boot-starter-gcp-web-test/src/test/java/no/entur/logging/cloud/spring/logbook/web/test/DemoApplication.java b/gcp/request-response-spring-boot-starter-gcp-web-test/src/test/java/no/entur/logging/cloud/spring/logbook/web/test/DemoApplication.java new file mode 100644 index 00000000..5ad9589d --- /dev/null +++ b/gcp/request-response-spring-boot-starter-gcp-web-test/src/test/java/no/entur/logging/cloud/spring/logbook/web/test/DemoApplication.java @@ -0,0 +1,13 @@ +package no.entur.logging.cloud.spring.logbook.web.test; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class DemoApplication { + + public static void main(String[] args) { + SpringApplication.run(DemoApplication.class, args); + } + +} \ No newline at end of file diff --git a/azure/request-response-spring-boot-starter-azure-grpc-test/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/test/LoadContextLoggingTest.java b/gcp/request-response-spring-boot-starter-gcp-web-test/src/test/java/no/entur/logging/cloud/spring/logbook/web/test/LoadContextLoggingTest.java similarity index 98% rename from azure/request-response-spring-boot-starter-azure-grpc-test/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/test/LoadContextLoggingTest.java rename to gcp/request-response-spring-boot-starter-gcp-web-test/src/test/java/no/entur/logging/cloud/spring/logbook/web/test/LoadContextLoggingTest.java index 2498b15e..100a870e 100644 --- a/azure/request-response-spring-boot-starter-azure-grpc-test/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/test/LoadContextLoggingTest.java +++ b/gcp/request-response-spring-boot-starter-gcp-web-test/src/test/java/no/entur/logging/cloud/spring/logbook/web/test/LoadContextLoggingTest.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.azure.spring.logbook.web.test; +package no.entur.logging.cloud.spring.logbook.web.test; import no.entur.logging.cloud.api.DevOpsLogger; import no.entur.logging.cloud.api.DevOpsLoggerFactory; diff --git a/gcp/request-response-spring-boot-starter-gcp-web/build.gradle b/gcp/request-response-spring-boot-starter-gcp-web/build.gradle index 479a52fa..b1d7f066 100644 --- a/gcp/request-response-spring-boot-starter-gcp-web/build.gradle +++ b/gcp/request-response-spring-boot-starter-gcp-web/build.gradle @@ -5,6 +5,7 @@ dependencies { api project(':gcp:logback-logstash-encoder-gcp') api project(':gcp:spring-boot-starter-gcp-web') api project(":gcp:logbook-spring-boot-autoconfigure-gcp") + api project(':request-response:request-response-spring-boot-autoconfigure-web') api "org.zalando:logbook-spring-boot-starter:${logbookVersion}" @@ -12,7 +13,7 @@ dependencies { api ("org.springframework.boot:spring-boot-autoconfigure:${springBootVersion}") api ("org.springframework.boot:spring-boot-starter-logging:${springBootVersion}") - compileOnly project(":gcp:on-demand-spring-boot-starter-gcp-web") + compileOnly project(":on-demand:on-demand-spring-boot-starter-web") testImplementation("org.springframework.boot:spring-boot-starter-test:${springBootVersion}") } diff --git a/gcp/request-response-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/spring/logbook/web/LogbookGcpWebAutoConfiguration.java b/gcp/request-response-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/spring/logbook/web/LogbookGcpWebAutoConfiguration.java new file mode 100644 index 00000000..2c5c517d --- /dev/null +++ b/gcp/request-response-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/spring/logbook/web/LogbookGcpWebAutoConfiguration.java @@ -0,0 +1,12 @@ +package no.entur.logging.cloud.spring.logbook.web; + +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; + +@Configuration() +@AutoConfigureBefore(LogbookWebAutoConfiguration.class) +@PropertySource(value = "classpath:logbook.gcp.web.properties", ignoreResourceNotFound = false) +public class LogbookGcpWebAutoConfiguration { + +} \ No newline at end of file diff --git a/gcp/request-response-spring-boot-starter-gcp-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/gcp/request-response-spring-boot-starter-gcp-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index c8e7c615..f94d56cb 100644 --- a/gcp/request-response-spring-boot-starter-gcp-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/gcp/request-response-spring-boot-starter-gcp-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1 +1 @@ -no.entur.logging.cloud.gcp.spring.logbook.web.LogbookGcpWebAutoConfiguration \ No newline at end of file +no.entur.logging.cloud.spring.logbook.web.LogbookWebAutoConfiguration \ No newline at end of file diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/DemoApplication.java b/gcp/request-response-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/spring/logbook/web/DemoApplication.java similarity index 84% rename from azure/on-demand-spring-boot-starter-azure-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/DemoApplication.java rename to gcp/request-response-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/spring/logbook/web/DemoApplication.java index 0c987407..251d039a 100644 --- a/azure/on-demand-spring-boot-starter-azure-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/DemoApplication.java +++ b/gcp/request-response-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/spring/logbook/web/DemoApplication.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.azure.spring.web; +package no.entur.logging.cloud.spring.logbook.web; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/gcp/request-response-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/LoadContextLoggingTest.java b/gcp/request-response-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/spring/logbook/web/LoadContextLoggingTest.java similarity index 96% rename from gcp/request-response-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/LoadContextLoggingTest.java rename to gcp/request-response-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/spring/logbook/web/LoadContextLoggingTest.java index e1371c8c..eb0017ac 100644 --- a/gcp/request-response-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/gcp/spring/logbook/web/LoadContextLoggingTest.java +++ b/gcp/request-response-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/spring/logbook/web/LoadContextLoggingTest.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.logbook.web; +package no.entur.logging.cloud.spring.logbook.web; import static org.junit.jupiter.api.Assertions.assertNotNull; import no.entur.logging.cloud.api.DevOpsLogger; diff --git a/gradle.properties b/gradle.properties index 9aa191a5..ffd7653e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ #Fri Oct 04 11:10:05 UTC 2024 org.gradle.jvmargs=-XX\:MaxMetaspaceSize\=512m -Xmx4g -version=2.0.19-SNAPSHOT +version=3.0.0-SNAPSHOT group=no.entur.logging.cloud diff --git a/gcp/on-demand-spring-boot-starter-gcp-grpc/build.gradle b/on-demand/on-demand-spring-boot-starter-grpc/build.gradle similarity index 100% rename from gcp/on-demand-spring-boot-starter-gcp-grpc/build.gradle rename to on-demand/on-demand-spring-boot-starter-grpc/build.gradle diff --git a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/GrpcOndemandLoggingAutoConfiguration.java b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/GrpcOndemandLoggingAutoConfiguration.java similarity index 86% rename from azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/GrpcOndemandLoggingAutoConfiguration.java rename to on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/GrpcOndemandLoggingAutoConfiguration.java index aab38b01..5815d791 100644 --- a/azure/on-demand-spring-boot-starter-azure-grpc/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/grpc/lognet/GrpcOndemandLoggingAutoConfiguration.java +++ b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/GrpcOndemandLoggingAutoConfiguration.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.azure.spring.ondemand.grpc.lognet; +package no.entur.logging.cloud.spring.ondemand.grpc.lognet; import ch.qos.logback.classic.Level; @@ -9,8 +9,21 @@ import no.entur.logging.cloud.appender.scope.LoggingScopeAsyncAppender; import no.entur.logging.cloud.appender.scope.predicate.HigherOrEqualToLogLevelPredicate; import no.entur.logging.cloud.appender.scope.predicate.LoggerNamePrefixHigherOrEqualToLogLevelPredicate; -import no.entur.logging.cloud.azure.spring.ondemand.grpc.lognet.properties.*; -import no.entur.logging.cloud.azure.spring.ondemand.grpc.lognet.scope.*; +import no.entur.logging.cloud.spring.ondemand.grpc.lognet.properties.*; +import no.entur.logging.cloud.spring.ondemand.grpc.lognet.scope.*; +import no.entur.logging.cloud.spring.ondemand.grpc.lognet.properties.OndemandFailure; +import no.entur.logging.cloud.spring.ondemand.grpc.lognet.properties.OndemandGrpcHeader; +import no.entur.logging.cloud.spring.ondemand.grpc.lognet.properties.OndemandGrpcResponseTrigger; +import no.entur.logging.cloud.spring.ondemand.grpc.lognet.properties.OndemandLogLevelTrigger; +import no.entur.logging.cloud.spring.ondemand.grpc.lognet.properties.OndemandPath; +import no.entur.logging.cloud.spring.ondemand.grpc.lognet.properties.OndemandProperties; +import no.entur.logging.cloud.spring.ondemand.grpc.lognet.properties.OndemandSuccess; +import no.entur.logging.cloud.spring.ondemand.grpc.lognet.properties.OndemandTroubleshoot; +import no.entur.logging.cloud.spring.ondemand.grpc.lognet.scope.GrpcContextLoggingScopeFactory; +import no.entur.logging.cloud.spring.ondemand.grpc.lognet.scope.GrpcHeaderPresentPredicate; +import no.entur.logging.cloud.spring.ondemand.grpc.lognet.scope.GrpcLoggingScopeContextInterceptor; +import no.entur.logging.cloud.spring.ondemand.grpc.lognet.scope.GrpcLoggingScopeFilter; +import no.entur.logging.cloud.spring.ondemand.grpc.lognet.scope.GrpcLoggingScopeFilters; import org.slf4j.LoggerFactory; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; diff --git a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/GrpcServicesConfiguration.java b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/GrpcServicesConfiguration.java similarity index 91% rename from gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/GrpcServicesConfiguration.java rename to on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/GrpcServicesConfiguration.java index 8f3eee29..8a785b63 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/GrpcServicesConfiguration.java +++ b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/GrpcServicesConfiguration.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet.properties; +package no.entur.logging.cloud.spring.ondemand.grpc.lognet.properties; import java.util.ArrayList; import java.util.List; diff --git a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandFailure.java b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandFailure.java similarity index 90% rename from gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandFailure.java rename to on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandFailure.java index e6f054ae..44e8da17 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandFailure.java +++ b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandFailure.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet.properties; +package no.entur.logging.cloud.spring.ondemand.grpc.lognet.properties; public class OndemandFailure { diff --git a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandGrpcHeader.java b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandGrpcHeader.java similarity index 83% rename from gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandGrpcHeader.java rename to on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandGrpcHeader.java index 303be66f..ece70e4f 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandGrpcHeader.java +++ b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandGrpcHeader.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet.properties; +package no.entur.logging.cloud.spring.ondemand.grpc.lognet.properties; public class OndemandGrpcHeader { diff --git a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandGrpcRequestTrigger.java b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandGrpcRequestTrigger.java similarity index 87% rename from gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandGrpcRequestTrigger.java rename to on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandGrpcRequestTrigger.java index 3eb990a4..87b7f7bf 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandGrpcRequestTrigger.java +++ b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandGrpcRequestTrigger.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet.properties; +package no.entur.logging.cloud.spring.ondemand.grpc.lognet.properties; import java.util.ArrayList; import java.util.List; diff --git a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandGrpcResponseTrigger.java b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandGrpcResponseTrigger.java similarity index 91% rename from gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandGrpcResponseTrigger.java rename to on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandGrpcResponseTrigger.java index 5e0dad76..fb8b6dd5 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandGrpcResponseTrigger.java +++ b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandGrpcResponseTrigger.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet.properties; +package no.entur.logging.cloud.spring.ondemand.grpc.lognet.properties; import io.grpc.Status; diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandLogLevelTrigger.java b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandLogLevelTrigger.java similarity index 90% rename from azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandLogLevelTrigger.java rename to on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandLogLevelTrigger.java index 532dc91d..5cca2131 100644 --- a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandLogLevelTrigger.java +++ b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandLogLevelTrigger.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.azure.spring.ondemand.web.properties; +package no.entur.logging.cloud.spring.ondemand.grpc.lognet.properties; import java.util.ArrayList; import java.util.List; diff --git a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandPath.java b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandPath.java similarity index 94% rename from gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandPath.java rename to on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandPath.java index 61061768..e606f8a3 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandPath.java +++ b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandPath.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet.properties; +package no.entur.logging.cloud.spring.ondemand.grpc.lognet.properties; import java.util.ArrayList; import java.util.List; diff --git a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandProperties.java b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandProperties.java similarity index 95% rename from gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandProperties.java rename to on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandProperties.java index 775a9aca..4199e076 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandProperties.java +++ b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandProperties.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet.properties; +package no.entur.logging.cloud.spring.ondemand.grpc.lognet.properties; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.core.Ordered; diff --git a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandSuccess.java b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandSuccess.java similarity index 74% rename from azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandSuccess.java rename to on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandSuccess.java index 634cbea9..7de09aeb 100644 --- a/azure/on-demand-spring-boot-starter-azure-web/src/main/java/no/entur/logging/cloud/azure/spring/ondemand/web/properties/OndemandSuccess.java +++ b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandSuccess.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.azure.spring.ondemand.web.properties; +package no.entur.logging.cloud.spring.ondemand.grpc.lognet.properties; public class OndemandSuccess { diff --git a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandTroubleshoot.java b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandTroubleshoot.java similarity index 89% rename from gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandTroubleshoot.java rename to on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandTroubleshoot.java index 5d2aab0d..fb04e9c3 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/OndemandTroubleshoot.java +++ b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/OndemandTroubleshoot.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet.properties; +package no.entur.logging.cloud.spring.ondemand.grpc.lognet.properties; /** * diff --git a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/ServiceMatcherConfiguration.java b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/ServiceMatcherConfiguration.java similarity index 91% rename from gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/ServiceMatcherConfiguration.java rename to on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/ServiceMatcherConfiguration.java index 4daef24b..6cae3e94 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/properties/ServiceMatcherConfiguration.java +++ b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/properties/ServiceMatcherConfiguration.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet.properties; +package no.entur.logging.cloud.spring.ondemand.grpc.lognet.properties; import java.util.ArrayList; import java.util.List; diff --git a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/scope/GrpcContextLoggingScopeFactory.java b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/scope/GrpcContextLoggingScopeFactory.java similarity index 90% rename from gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/scope/GrpcContextLoggingScopeFactory.java rename to on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/scope/GrpcContextLoggingScopeFactory.java index 3c6e32c7..6cac971a 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/scope/GrpcContextLoggingScopeFactory.java +++ b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/scope/GrpcContextLoggingScopeFactory.java @@ -1,7 +1,6 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet.scope; +package no.entur.logging.cloud.spring.ondemand.grpc.lognet.scope; import ch.qos.logback.classic.spi.ILoggingEvent; -import io.grpc.Context; import no.entur.logging.cloud.appender.scope.LoggingScope; import no.entur.logging.cloud.appender.scope.LoggingScopeFactory; import no.entur.logging.cloud.appender.scope.LoggingScopeProvider; diff --git a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/scope/GrpcHeaderPresentPredicate.java b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/scope/GrpcHeaderPresentPredicate.java similarity index 88% rename from gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/scope/GrpcHeaderPresentPredicate.java rename to on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/scope/GrpcHeaderPresentPredicate.java index 354cd19d..d881891d 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/scope/GrpcHeaderPresentPredicate.java +++ b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/scope/GrpcHeaderPresentPredicate.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet.scope; +package no.entur.logging.cloud.spring.ondemand.grpc.lognet.scope; import io.grpc.Metadata; diff --git a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/scope/GrpcLoggingScope.java b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/scope/GrpcLoggingScope.java similarity index 86% rename from gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/scope/GrpcLoggingScope.java rename to on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/scope/GrpcLoggingScope.java index 099aff0f..00f441ad 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/scope/GrpcLoggingScope.java +++ b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/scope/GrpcLoggingScope.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet.scope; +package no.entur.logging.cloud.spring.ondemand.grpc.lognet.scope; import ch.qos.logback.classic.spi.ILoggingEvent; import no.entur.logging.cloud.appender.scope.DefaultLoggingScope; diff --git a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeContextInterceptor.java b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeContextInterceptor.java similarity index 97% rename from gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeContextInterceptor.java rename to on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeContextInterceptor.java index d0dfdb90..ec177d1a 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeContextInterceptor.java +++ b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeContextInterceptor.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet.scope; +package no.entur.logging.cloud.spring.ondemand.grpc.lognet.scope; import ch.qos.logback.classic.spi.ILoggingEvent; import io.grpc.Context; @@ -14,7 +14,6 @@ import no.entur.logging.cloud.appender.scope.LoggingScopeSink; import org.springframework.core.Ordered; -import java.util.concurrent.ConcurrentLinkedQueue; import java.util.function.Predicate; /** diff --git a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeFilter.java b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeFilter.java similarity index 97% rename from gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeFilter.java rename to on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeFilter.java index a6b37ede..6755b034 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeFilter.java +++ b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeFilter.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet.scope; +package no.entur.logging.cloud.spring.ondemand.grpc.lognet.scope; import ch.qos.logback.classic.spi.ILoggingEvent; import io.grpc.Metadata; diff --git a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeFilters.java b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeFilters.java similarity index 95% rename from gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeFilters.java rename to on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeFilters.java index 62f92f18..dbbb0a9e 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeFilters.java +++ b/on-demand/on-demand-spring-boot-starter-grpc/src/main/java/no/entur/logging/cloud/spring/ondemand/grpc/lognet/scope/GrpcLoggingScopeFilters.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.grpc.lognet.scope; +package no.entur.logging.cloud.spring.ondemand.grpc.lognet.scope; import java.util.HashMap; import java.util.Map; diff --git a/on-demand/on-demand-spring-boot-starter-grpc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/on-demand/on-demand-spring-boot-starter-grpc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..6ac64dba --- /dev/null +++ b/on-demand/on-demand-spring-boot-starter-grpc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +no.entur.logging.cloud.spring.ondemand.grpc.lognet.GrpcOndemandLoggingAutoConfiguration diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/README.md b/on-demand/on-demand-spring-boot-starter-web/README.md similarity index 100% rename from gcp/on-demand-spring-boot-starter-gcp-web/README.md rename to on-demand/on-demand-spring-boot-starter-web/README.md diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/build.gradle b/on-demand/on-demand-spring-boot-starter-web/build.gradle similarity index 100% rename from gcp/on-demand-spring-boot-starter-gcp-web/build.gradle rename to on-demand/on-demand-spring-boot-starter-web/build.gradle diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/GcpWebOndemandLoggingAutoConfiguration.java b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/GcpWebOndemandLoggingAutoConfiguration.java similarity index 87% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/GcpWebOndemandLoggingAutoConfiguration.java rename to on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/GcpWebOndemandLoggingAutoConfiguration.java index 1771b08b..cadefaf8 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/GcpWebOndemandLoggingAutoConfiguration.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/GcpWebOndemandLoggingAutoConfiguration.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.web; +package no.entur.logging.cloud.spring.ondemand.web; import ch.qos.logback.classic.Level; @@ -8,8 +8,25 @@ import no.entur.logging.cloud.appender.scope.LoggingScopeAsyncAppender; import no.entur.logging.cloud.appender.scope.predicate.HigherOrEqualToLogLevelPredicate; import no.entur.logging.cloud.appender.scope.predicate.LoggerNamePrefixHigherOrEqualToLogLevelPredicate; -import no.entur.logging.cloud.gcp.spring.ondemand.web.properties.*; -import no.entur.logging.cloud.gcp.spring.ondemand.web.scope.*; +import no.entur.logging.cloud.spring.ondemand.web.properties.*; +import no.entur.logging.cloud.spring.ondemand.web.scope.*; +import no.entur.logging.cloud.spring.ondemand.web.properties.OndemandFailure; +import no.entur.logging.cloud.spring.ondemand.web.properties.OndemandHttpHeader; +import no.entur.logging.cloud.spring.ondemand.web.properties.OndemandHttpResponseTrigger; +import no.entur.logging.cloud.spring.ondemand.web.properties.OndemandHttpStatus; +import no.entur.logging.cloud.spring.ondemand.web.properties.OndemandLogLevelTrigger; +import no.entur.logging.cloud.spring.ondemand.web.properties.OndemandPath; +import no.entur.logging.cloud.spring.ondemand.web.properties.OndemandProperties; +import no.entur.logging.cloud.spring.ondemand.web.properties.OndemandSuccess; +import no.entur.logging.cloud.spring.ondemand.web.properties.OndemandTroubleshoot; +import no.entur.logging.cloud.spring.ondemand.web.scope.HttpHeaderPresentPredicate; +import no.entur.logging.cloud.spring.ondemand.web.scope.HttpLoggingScopeFilter; +import no.entur.logging.cloud.spring.ondemand.web.scope.HttpLoggingScopeFilters; +import no.entur.logging.cloud.spring.ondemand.web.scope.HttpStatusAtLeastOrNotPredicate; +import no.entur.logging.cloud.spring.ondemand.web.scope.HttpStatusAtLeastPredicate; +import no.entur.logging.cloud.spring.ondemand.web.scope.HttpStatusEqualToPredicate; +import no.entur.logging.cloud.spring.ondemand.web.scope.HttpStatusNotEqualToPredicate; +import no.entur.logging.cloud.spring.ondemand.web.scope.ThreadLocalLoggingScopeFactory; import org.slf4j.LoggerFactory; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/OndemandFilter.java b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/OndemandFilter.java similarity index 86% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/OndemandFilter.java rename to on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/OndemandFilter.java index ecefc22b..a3f2c4df 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/OndemandFilter.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/OndemandFilter.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.web; +package no.entur.logging.cloud.spring.ondemand.web; import ch.qos.logback.classic.spi.ILoggingEvent; import jakarta.servlet.*; @@ -6,13 +6,12 @@ import jakarta.servlet.http.HttpServletResponse; import no.entur.logging.cloud.appender.scope.LoggingScope; import no.entur.logging.cloud.appender.scope.LoggingScopeSink; -import no.entur.logging.cloud.gcp.spring.ondemand.web.scope.HttpLoggingScopeFilter; -import no.entur.logging.cloud.gcp.spring.ondemand.web.scope.HttpLoggingScopeFilters; -import no.entur.logging.cloud.gcp.spring.ondemand.web.scope.ThreadLocalLoggingScopeFactory; +import no.entur.logging.cloud.spring.ondemand.web.scope.HttpLoggingScopeFilter; +import no.entur.logging.cloud.spring.ondemand.web.scope.HttpLoggingScopeFilters; +import no.entur.logging.cloud.spring.ondemand.web.scope.ThreadLocalLoggingScopeFactory; import java.io.IOException; import java.util.Enumeration; -import java.util.concurrent.ConcurrentLinkedQueue; import java.util.function.Predicate; public class OndemandFilter implements Filter { diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandFailure.java b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandFailure.java similarity index 91% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandFailure.java rename to on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandFailure.java index c29b9df9..90e38e05 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandFailure.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandFailure.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.web.properties; +package no.entur.logging.cloud.spring.ondemand.web.properties; public class OndemandFailure { diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandHttpHeader.java b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandHttpHeader.java similarity index 86% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandHttpHeader.java rename to on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandHttpHeader.java index 3c51a42f..86614a84 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandHttpHeader.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandHttpHeader.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.web.properties; +package no.entur.logging.cloud.spring.ondemand.web.properties; import java.util.ArrayList; import java.util.List; diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandHttpRequestTrigger.java b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandHttpRequestTrigger.java similarity index 88% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandHttpRequestTrigger.java rename to on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandHttpRequestTrigger.java index 6e876fde..b555268b 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandHttpRequestTrigger.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandHttpRequestTrigger.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.web.properties; +package no.entur.logging.cloud.spring.ondemand.web.properties; import java.util.ArrayList; import java.util.List; diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandHttpResponseTrigger.java b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandHttpResponseTrigger.java similarity index 80% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandHttpResponseTrigger.java rename to on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandHttpResponseTrigger.java index f204b02a..a611aaf3 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandHttpResponseTrigger.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandHttpResponseTrigger.java @@ -1,7 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.web.properties; - -import java.util.ArrayList; -import java.util.List; +package no.entur.logging.cloud.spring.ondemand.web.properties; public class OndemandHttpResponseTrigger { diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandHttpStatus.java b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandHttpStatus.java similarity index 93% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandHttpStatus.java rename to on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandHttpStatus.java index 1dd87c49..38820c0c 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandHttpStatus.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandHttpStatus.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.web.properties; +package no.entur.logging.cloud.spring.ondemand.web.properties; import java.util.ArrayList; import java.util.List; diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandLogLevelTrigger.java b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandLogLevelTrigger.java similarity index 90% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandLogLevelTrigger.java rename to on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandLogLevelTrigger.java index 2327e454..bef29106 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandLogLevelTrigger.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandLogLevelTrigger.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.web.properties; +package no.entur.logging.cloud.spring.ondemand.web.properties; import java.util.ArrayList; import java.util.List; diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandPath.java b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandPath.java similarity index 93% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandPath.java rename to on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandPath.java index 6110a89c..d57b42d7 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandPath.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandPath.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.web.properties; +package no.entur.logging.cloud.spring.ondemand.web.properties; public class OndemandPath { diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandProperties.java b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandProperties.java similarity index 96% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandProperties.java rename to on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandProperties.java index 21089ac6..8fc2d876 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandProperties.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandProperties.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.web.properties; +package no.entur.logging.cloud.spring.ondemand.web.properties; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.core.Ordered; diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandSuccess.java b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandSuccess.java similarity index 75% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandSuccess.java rename to on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandSuccess.java index eb859ed2..74783d20 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandSuccess.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandSuccess.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.web.properties; +package no.entur.logging.cloud.spring.ondemand.web.properties; public class OndemandSuccess { diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandTroubleshoot.java b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandTroubleshoot.java similarity index 90% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandTroubleshoot.java rename to on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandTroubleshoot.java index 79bbae5a..d536a305 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/properties/OndemandTroubleshoot.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/properties/OndemandTroubleshoot.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.web.properties; +package no.entur.logging.cloud.spring.ondemand.web.properties; /** * diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/HttpHeaderPresentPredicate.java b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/HttpHeaderPresentPredicate.java similarity index 90% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/HttpHeaderPresentPredicate.java rename to on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/HttpHeaderPresentPredicate.java index 57fae594..c03ff4bb 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/HttpHeaderPresentPredicate.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/HttpHeaderPresentPredicate.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.web.scope; +package no.entur.logging.cloud.spring.ondemand.web.scope; import java.util.Enumeration; import java.util.Set; diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/HttpLoggingScopeFilter.java b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/HttpLoggingScopeFilter.java similarity index 97% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/HttpLoggingScopeFilter.java rename to on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/HttpLoggingScopeFilter.java index 19b144c4..94833fdc 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/HttpLoggingScopeFilter.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/HttpLoggingScopeFilter.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.web.scope; +package no.entur.logging.cloud.spring.ondemand.web.scope; import ch.qos.logback.classic.spi.ILoggingEvent; diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/HttpLoggingScopeFilters.java b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/HttpLoggingScopeFilters.java similarity index 95% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/HttpLoggingScopeFilters.java rename to on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/HttpLoggingScopeFilters.java index d1caa077..b1c8c7a5 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/HttpLoggingScopeFilters.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/HttpLoggingScopeFilters.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.web.scope; +package no.entur.logging.cloud.spring.ondemand.web.scope; import jakarta.servlet.http.HttpServletRequest; import org.springframework.security.web.util.matcher.RequestMatcher; diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/HttpStatusAtLeastOrNotPredicate.java b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/HttpStatusAtLeastOrNotPredicate.java similarity index 90% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/HttpStatusAtLeastOrNotPredicate.java rename to on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/HttpStatusAtLeastOrNotPredicate.java index 533e9d3a..8bfc1654 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/HttpStatusAtLeastOrNotPredicate.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/HttpStatusAtLeastOrNotPredicate.java @@ -1,7 +1,6 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.web.scope; +package no.entur.logging.cloud.spring.ondemand.web.scope; import java.util.List; -import java.util.Set; public class HttpStatusAtLeastOrNotPredicate extends HttpStatusAtLeastPredicate { diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/HttpStatusAtLeastPredicate.java b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/HttpStatusAtLeastPredicate.java similarity index 83% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/HttpStatusAtLeastPredicate.java rename to on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/HttpStatusAtLeastPredicate.java index 26d0a2ce..799b0cb2 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/HttpStatusAtLeastPredicate.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/HttpStatusAtLeastPredicate.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.web.scope; +package no.entur.logging.cloud.spring.ondemand.web.scope; import java.util.function.IntPredicate; diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/HttpStatusEqualToPredicate.java b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/HttpStatusEqualToPredicate.java similarity index 91% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/HttpStatusEqualToPredicate.java rename to on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/HttpStatusEqualToPredicate.java index 9847aadf..73d919ae 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/HttpStatusEqualToPredicate.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/HttpStatusEqualToPredicate.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.web.scope; +package no.entur.logging.cloud.spring.ondemand.web.scope; import java.util.List; import java.util.function.IntPredicate; diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/HttpStatusNotEqualToPredicate.java b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/HttpStatusNotEqualToPredicate.java similarity index 92% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/HttpStatusNotEqualToPredicate.java rename to on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/HttpStatusNotEqualToPredicate.java index 593eeaae..52e5672b 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/HttpStatusNotEqualToPredicate.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/HttpStatusNotEqualToPredicate.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.web.scope; +package no.entur.logging.cloud.spring.ondemand.web.scope; import java.util.List; import java.util.function.IntPredicate; diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/ThreadLocalLoggingScopeFactory.java b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/ThreadLocalLoggingScopeFactory.java similarity index 94% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/ThreadLocalLoggingScopeFactory.java rename to on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/ThreadLocalLoggingScopeFactory.java index a6d9eb54..c1bfc754 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/ondemand/web/scope/ThreadLocalLoggingScopeFactory.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/main/java/no/entur/logging/cloud/spring/ondemand/web/scope/ThreadLocalLoggingScopeFactory.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.ondemand.web.scope; +package no.entur.logging.cloud.spring.ondemand.web.scope; import no.entur.logging.cloud.appender.scope.DefaultLoggingScope; import no.entur.logging.cloud.appender.scope.LoggingScope; diff --git a/on-demand/on-demand-spring-boot-starter-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/on-demand/on-demand-spring-boot-starter-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..72f21e67 --- /dev/null +++ b/on-demand/on-demand-spring-boot-starter-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +no.entur.logging.cloud.spring.ondemand.web.GcpWebOndemandLoggingAutoConfiguration \ No newline at end of file diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/DemoApplication.java b/on-demand/on-demand-spring-boot-starter-web/src/test/java/no/entur/logging/cloud/spring/ondemand/web/DemoApplication.java similarity index 84% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/DemoApplication.java rename to on-demand/on-demand-spring-boot-starter-web/src/test/java/no/entur/logging/cloud/spring/ondemand/web/DemoApplication.java index a0c238b8..8e7e9937 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/DemoApplication.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/test/java/no/entur/logging/cloud/spring/ondemand/web/DemoApplication.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.web; +package no.entur.logging.cloud.spring.ondemand.web; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/HttpStatusAtLeastOrNotPredicateTest.java b/on-demand/on-demand-spring-boot-starter-web/src/test/java/no/entur/logging/cloud/spring/ondemand/web/HttpStatusAtLeastOrNotPredicateTest.java similarity index 85% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/HttpStatusAtLeastOrNotPredicateTest.java rename to on-demand/on-demand-spring-boot-starter-web/src/test/java/no/entur/logging/cloud/spring/ondemand/web/HttpStatusAtLeastOrNotPredicateTest.java index 8aa34fdb..b4a095af 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/HttpStatusAtLeastOrNotPredicateTest.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/test/java/no/entur/logging/cloud/spring/ondemand/web/HttpStatusAtLeastOrNotPredicateTest.java @@ -1,6 +1,6 @@ -package no.entur.logging.cloud.gcp.spring.web; +package no.entur.logging.cloud.spring.ondemand.web; -import no.entur.logging.cloud.gcp.spring.ondemand.web.scope.HttpStatusAtLeastOrNotPredicate; +import no.entur.logging.cloud.spring.ondemand.web.scope.HttpStatusAtLeastOrNotPredicate; import org.junit.jupiter.api.Test; import java.util.Arrays; diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/LoadContextLoggingTest.java b/on-demand/on-demand-spring-boot-starter-web/src/test/java/no/entur/logging/cloud/spring/ondemand/web/LoadContextLoggingTest.java similarity index 95% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/LoadContextLoggingTest.java rename to on-demand/on-demand-spring-boot-starter-web/src/test/java/no/entur/logging/cloud/spring/ondemand/web/LoadContextLoggingTest.java index 7a25f53b..70ad38c3 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/LoadContextLoggingTest.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/test/java/no/entur/logging/cloud/spring/ondemand/web/LoadContextLoggingTest.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.web; +package no.entur.logging.cloud.spring.ondemand.web; import no.entur.logging.cloud.api.DevOpsLogger; import no.entur.logging.cloud.api.DevOpsLoggerFactory; diff --git a/gcp/on-demand-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/LoadOndemandContextLoggingTest.java b/on-demand/on-demand-spring-boot-starter-web/src/test/java/no/entur/logging/cloud/spring/ondemand/web/LoadOndemandContextLoggingTest.java similarity index 96% rename from gcp/on-demand-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/LoadOndemandContextLoggingTest.java rename to on-demand/on-demand-spring-boot-starter-web/src/test/java/no/entur/logging/cloud/spring/ondemand/web/LoadOndemandContextLoggingTest.java index dd9088b0..84a86412 100644 --- a/gcp/on-demand-spring-boot-starter-gcp-web/src/test/java/no/entur/logging/cloud/gcp/spring/web/LoadOndemandContextLoggingTest.java +++ b/on-demand/on-demand-spring-boot-starter-web/src/test/java/no/entur/logging/cloud/spring/ondemand/web/LoadOndemandContextLoggingTest.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.web; +package no.entur.logging.cloud.spring.ondemand.web; import no.entur.logging.cloud.api.DevOpsLogger; import no.entur.logging.cloud.api.DevOpsLoggerFactory; diff --git a/request-response/request-response-spring-boot-autoconfigure-grpc/README.md b/request-response/request-response-spring-boot-autoconfigure-grpc/README.md new file mode 100644 index 00000000..d7a8bbca --- /dev/null +++ b/request-response/request-response-spring-boot-autoconfigure-grpc/README.md @@ -0,0 +1 @@ +# request-response-logging for grpc diff --git a/request-response/request-response-spring-boot-autoconfigure-grpc/build.gradle b/request-response/request-response-spring-boot-autoconfigure-grpc/build.gradle new file mode 100644 index 00000000..6ab192ec --- /dev/null +++ b/request-response/request-response-spring-boot-autoconfigure-grpc/build.gradle @@ -0,0 +1,21 @@ + +dependencies { + + api project(':api') + api project(':request-response:netty-grpc') + + api ("org.slf4j:slf4j-api:${slf4jVersion}") + api ("org.springframework.boot:spring-boot-starter:${springBootVersion}") + api ("org.springframework.boot:spring-boot-autoconfigure:${springBootVersion}") + api ("org.springframework.boot:spring-boot-starter-logging:${springBootVersion}") + + api ("io.github.lognet:grpc-spring-boot-starter:${lognetVersion}") { + exclude group: 'io.grpc', module: 'grpc-netty-shaded' + // for some reason this artifact cannot be resolved by gradle + // possible cause: the pom does not have a version for this artifact, only dependency management + // https://repo1.maven.org/maven2/io/github/lognet/grpc-spring-boot-starter/5.1.4/grpc-spring-boot-starter-5.1.4.pom + exclude group: 'org.springframework.boot', module: 'spring-boot-starter' + } + + testImplementation("org.springframework.boot:spring-boot-starter-test:${springBootVersion}") +} diff --git a/gcp/request-response-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/gcp/grpc/lognet/AbstractRequestResponseGcpGrpcLognetAutoConfiguration.java b/request-response/request-response-spring-boot-autoconfigure-grpc/src/main/java/no/entur/logging/cloud/spring/grpc/lognet/AbstractRequestResponseGrpcLognetSinkAutoConfiguration.java similarity index 89% rename from gcp/request-response-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/gcp/grpc/lognet/AbstractRequestResponseGcpGrpcLognetAutoConfiguration.java rename to request-response/request-response-spring-boot-autoconfigure-grpc/src/main/java/no/entur/logging/cloud/spring/grpc/lognet/AbstractRequestResponseGrpcLognetSinkAutoConfiguration.java index 869dfdaf..08981ebf 100644 --- a/gcp/request-response-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/gcp/grpc/lognet/AbstractRequestResponseGcpGrpcLognetAutoConfiguration.java +++ b/request-response/request-response-spring-boot-autoconfigure-grpc/src/main/java/no/entur/logging/cloud/spring/grpc/lognet/AbstractRequestResponseGrpcLognetSinkAutoConfiguration.java @@ -1,12 +1,11 @@ -package no.entur.logging.cloud.gcp.spring.gcp.grpc.lognet; +package no.entur.logging.cloud.spring.grpc.lognet; import no.entur.logging.cloud.rr.grpc.LogbackLogstashGrpcSink; import org.slf4j.Logger; import org.slf4j.event.Level; import org.springframework.beans.factory.annotation.Value; - -public abstract class AbstractRequestResponseGcpGrpcLognetAutoConfiguration { +public abstract class AbstractRequestResponseGrpcLognetSinkAutoConfiguration { @Value("${entur.logging.request-response.logger.level:info}") protected String loggerLevel; diff --git a/gcp/request-response-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/gcp/grpc/lognet/OrderedGrpcLoggingClientInterceptor.java b/request-response/request-response-spring-boot-autoconfigure-grpc/src/main/java/no/entur/logging/cloud/spring/grpc/lognet/OrderedGrpcLoggingClientInterceptor.java similarity index 86% rename from gcp/request-response-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/gcp/grpc/lognet/OrderedGrpcLoggingClientInterceptor.java rename to request-response/request-response-spring-boot-autoconfigure-grpc/src/main/java/no/entur/logging/cloud/spring/grpc/lognet/OrderedGrpcLoggingClientInterceptor.java index d093e18e..4055d0c8 100644 --- a/gcp/request-response-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/gcp/grpc/lognet/OrderedGrpcLoggingClientInterceptor.java +++ b/request-response/request-response-spring-boot-autoconfigure-grpc/src/main/java/no/entur/logging/cloud/spring/grpc/lognet/OrderedGrpcLoggingClientInterceptor.java @@ -1,11 +1,10 @@ -package no.entur.logging.cloud.gcp.spring.gcp.grpc.lognet; +package no.entur.logging.cloud.spring.grpc.lognet; import no.entur.logging.cloud.rr.grpc.GrpcLoggingClientInterceptor; import no.entur.logging.cloud.rr.grpc.GrpcSink; import no.entur.logging.cloud.rr.grpc.filter.GrpcClientLoggingFilters; import no.entur.logging.cloud.rr.grpc.mapper.GrpcMetadataJsonMapper; import no.entur.logging.cloud.rr.grpc.mapper.GrpcPayloadJsonMapper; -import org.springframework.boot.web.servlet.filter.OrderedRequestContextFilter; import org.springframework.core.Ordered; public class OrderedGrpcLoggingClientInterceptor extends GrpcLoggingClientInterceptor implements Ordered { diff --git a/gcp/request-response-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/gcp/grpc/lognet/OrderedGrpcLoggingServerInterceptor.java b/request-response/request-response-spring-boot-autoconfigure-grpc/src/main/java/no/entur/logging/cloud/spring/grpc/lognet/OrderedGrpcLoggingServerInterceptor.java similarity index 94% rename from gcp/request-response-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/gcp/grpc/lognet/OrderedGrpcLoggingServerInterceptor.java rename to request-response/request-response-spring-boot-autoconfigure-grpc/src/main/java/no/entur/logging/cloud/spring/grpc/lognet/OrderedGrpcLoggingServerInterceptor.java index b7e64b6b..602114db 100644 --- a/gcp/request-response-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/gcp/grpc/lognet/OrderedGrpcLoggingServerInterceptor.java +++ b/request-response/request-response-spring-boot-autoconfigure-grpc/src/main/java/no/entur/logging/cloud/spring/grpc/lognet/OrderedGrpcLoggingServerInterceptor.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.gcp.grpc.lognet; +package no.entur.logging.cloud.spring.grpc.lognet; import no.entur.logging.cloud.rr.grpc.GrpcLoggingServerInterceptor; import no.entur.logging.cloud.rr.grpc.GrpcSink; diff --git a/gcp/request-response-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/gcp/grpc/lognet/RequestResponseGRpcExceptionHandlerInterceptor.java b/request-response/request-response-spring-boot-autoconfigure-grpc/src/main/java/no/entur/logging/cloud/spring/grpc/lognet/RequestResponseGrpcExceptionHandlerInterceptor.java similarity index 65% rename from gcp/request-response-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/gcp/grpc/lognet/RequestResponseGRpcExceptionHandlerInterceptor.java rename to request-response/request-response-spring-boot-autoconfigure-grpc/src/main/java/no/entur/logging/cloud/spring/grpc/lognet/RequestResponseGrpcExceptionHandlerInterceptor.java index 05b24c14..f9cd6887 100644 --- a/gcp/request-response-spring-boot-starter-gcp-grpc/src/main/java/no/entur/logging/cloud/gcp/spring/gcp/grpc/lognet/RequestResponseGRpcExceptionHandlerInterceptor.java +++ b/request-response/request-response-spring-boot-autoconfigure-grpc/src/main/java/no/entur/logging/cloud/spring/grpc/lognet/RequestResponseGrpcExceptionHandlerInterceptor.java @@ -1,17 +1,10 @@ -package no.entur.logging.cloud.gcp.spring.gcp.grpc.lognet; +package no.entur.logging.cloud.spring.grpc.lognet; import io.grpc.Metadata; import io.grpc.ServerCall; import io.grpc.ServerCallHandler; import io.grpc.ServerInterceptor; -import no.entur.logging.cloud.rr.grpc.GrpcSink; -import no.entur.logging.cloud.rr.grpc.filter.GrpcClientLoggingFilters; -import no.entur.logging.cloud.rr.grpc.mapper.GrpcMetadataJsonMapper; -import no.entur.logging.cloud.rr.grpc.mapper.GrpcPayloadJsonMapper; -import org.lognet.springboot.grpc.FailureHandlingSupport; -import org.lognet.springboot.grpc.autoconfigure.GRpcServerProperties; import org.lognet.springboot.grpc.recovery.GRpcExceptionHandlerInterceptor; -import org.lognet.springboot.grpc.recovery.GRpcExceptionHandlerMethodResolver; import org.springframework.core.Ordered; /** @@ -22,13 +15,13 @@ * This is useful when doing request-response between authentication and controller while using the lognet exception handling. */ -public class RequestResponseGRpcExceptionHandlerInterceptor implements ServerInterceptor, Ordered { +public class RequestResponseGrpcExceptionHandlerInterceptor implements ServerInterceptor, Ordered { protected final int order; private final GRpcExceptionHandlerInterceptor delegate; - public RequestResponseGRpcExceptionHandlerInterceptor(GRpcExceptionHandlerInterceptor delegate, int order) { + public RequestResponseGrpcExceptionHandlerInterceptor(GRpcExceptionHandlerInterceptor delegate, int order) { this.delegate = delegate; this.order = order; } diff --git a/request-response/request-response-spring-boot-autoconfigure-grpc/src/main/java/no/entur/logging/cloud/spring/grpc/lognet/RequestResponseGrpcLognetAutoConfiguration.java b/request-response/request-response-spring-boot-autoconfigure-grpc/src/main/java/no/entur/logging/cloud/spring/grpc/lognet/RequestResponseGrpcLognetAutoConfiguration.java new file mode 100644 index 00000000..f3c6c54d --- /dev/null +++ b/request-response/request-response-spring-boot-autoconfigure-grpc/src/main/java/no/entur/logging/cloud/spring/grpc/lognet/RequestResponseGrpcLognetAutoConfiguration.java @@ -0,0 +1,140 @@ +package no.entur.logging.cloud.spring.grpc.lognet; + +import com.google.protobuf.util.JsonFormat; +import io.grpc.Status; +import io.grpc.StatusRuntimeException; +import no.entur.logging.cloud.rr.grpc.GrpcSink; +import no.entur.logging.cloud.rr.grpc.filter.GrpcClientLoggingFilters; +import no.entur.logging.cloud.rr.grpc.filter.GrpcServerLoggingFilters; +import no.entur.logging.cloud.rr.grpc.mapper.DefaultGrpcPayloadJsonMapper; +import no.entur.logging.cloud.rr.grpc.mapper.DefaultMetadataJsonMapper; +import no.entur.logging.cloud.rr.grpc.mapper.GrpcMetadataJsonMapper; +import no.entur.logging.cloud.rr.grpc.mapper.GrpcPayloadJsonMapper; +import no.entur.logging.cloud.rr.grpc.mapper.GrpcStatusMapper; +import no.entur.logging.cloud.rr.grpc.mapper.JsonPrinterFactory; +import no.entur.logging.cloud.rr.grpc.mapper.JsonPrinterStatusMapper; +import no.entur.logging.cloud.rr.grpc.mapper.TypeRegistryFactory; +import org.lognet.springboot.grpc.FailureHandlingSupport; +import org.lognet.springboot.grpc.autoconfigure.ConditionalOnMissingErrorHandler; +import org.lognet.springboot.grpc.autoconfigure.GRpcAutoConfiguration; +import org.lognet.springboot.grpc.recovery.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.event.Level; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; + +import java.util.HashMap; + +@Configuration +@AutoConfigureAfter(GRpcAutoConfiguration.class) +public class RequestResponseGrpcLognetAutoConfiguration extends AbstractRequestResponseGrpcLognetSinkAutoConfiguration { + + @Value("${entur.logging.request-response.max-size}") + protected int maxSize; + + @Value("${entur.logging.request-response.max-body-size}") + protected int maxBodySize; + + @Value("${entur.logging.request-response.grpc.server.interceptor-order:0}") + private int serverInterceptorOrder; + + @Value("${entur.logging.request-response.grpc.client.interceptor-order:0}") + private int clientInterceptorOrder; + + @Value("${entur.logging.request-response.grpc.server.exception-handler.interceptor-order:0}") + private int exceptionInterceptorOrder; + + @Bean + @ConditionalOnMissingBean(JsonFormat.TypeRegistry.class) + public JsonFormat.TypeRegistry jsonFormatTypeRegistry() { + return TypeRegistryFactory.createDefaultTypeRegistry(); + } + + @Bean + @ConditionalOnMissingBean(GrpcStatusMapper.class) + public GrpcStatusMapper grpcStatusMapper(JsonFormat.TypeRegistry typeRegistry) { + JsonFormat.Printer printer = JsonPrinterFactory.createPrinter(false, typeRegistry); + return new JsonPrinterStatusMapper(printer); + } + + @Bean + @ConditionalOnMissingBean(GrpcPayloadJsonMapper.class) + public GrpcPayloadJsonMapper grpcPayloadJsonMapper(JsonFormat.TypeRegistry typeRegistry) { + JsonFormat.Printer printer = JsonPrinterFactory.createPrinter(false, typeRegistry); + return new DefaultGrpcPayloadJsonMapper(printer, maxBodySize, maxBodySize / 2); + } + + @Bean + @ConditionalOnMissingBean(GrpcMetadataJsonMapper.class) + public GrpcMetadataJsonMapper grpcMetadataJsonMapper(GrpcStatusMapper grpcStatusMapper) { + return new DefaultMetadataJsonMapper(grpcStatusMapper, new HashMap<>()); + } + + @Bean + @ConditionalOnMissingBean(GrpcClientLoggingFilters.class) + public GrpcClientLoggingFilters grpcClientLoggingFilters() { + return GrpcClientLoggingFilters.newBuilder().classicDefaultLogging().build(); + } + + @Bean + @ConditionalOnMissingBean(GrpcServerLoggingFilters.class) + public GrpcServerLoggingFilters grpcServerLoggingFilters() { + return GrpcServerLoggingFilters.newBuilder().classicDefaultLogging().build(); + } + + @Bean + @ConditionalOnMissingBean(OrderedGrpcLoggingServerInterceptor.class) + public OrderedGrpcLoggingServerInterceptor orderedGrpcLoggingServerInterceptor(GrpcPayloadJsonMapper grpcPayloadJsonMapper, GrpcMetadataJsonMapper grpcMetadataJsonMapper, GrpcSink grpcSink, GrpcServerLoggingFilters grpcServerLoggingFilters) { + return new OrderedGrpcLoggingServerInterceptor(grpcSink, grpcServerLoggingFilters, grpcMetadataJsonMapper, grpcPayloadJsonMapper, serverInterceptorOrder); + } + + @Bean + @ConditionalOnMissingBean(OrderedGrpcLoggingClientInterceptor.class) + public OrderedGrpcLoggingClientInterceptor orderedGrpcLoggingClientInterceptor(GrpcPayloadJsonMapper grpcPayloadJsonMapper, GrpcMetadataJsonMapper grpcMetadataJsonMapper, GrpcSink grpcSink, GrpcClientLoggingFilters grpcServiceLoggingFilters) { + return new OrderedGrpcLoggingClientInterceptor(grpcSink, grpcServiceLoggingFilters, grpcMetadataJsonMapper, grpcPayloadJsonMapper, clientInterceptorOrder); + } + + @Bean + @ConditionalOnMissingBean(GrpcSink.class) + public GrpcSink grpcSink() { + Logger logger = LoggerFactory.getLogger(loggerName); + Level level = parseLevel(loggerLevel); + + return createMachineReadbleSink(logger, level); + } + + @Bean + @ConditionalOnBean({FailureHandlingSupport.class, GRpcExceptionHandlerMethodResolver.class}) + @ConditionalOnProperty(name = {"entur.logging.request-response.grpc.server.exception-handler.enabled"}, havingValue = "true", matchIfMissing = true) + @Primary + public RequestResponseGrpcExceptionHandlerInterceptor requestResponseGRpcExceptionHandlerInterceptor(GRpcExceptionHandlerInterceptor interceptor) { + return new RequestResponseGrpcExceptionHandlerInterceptor(interceptor, exceptionInterceptorOrder); + } + + /** + * + * Without any exception handlers, the exception handler does not handle status runtime exceptions either + * + */ + + @ConditionalOnMissingErrorHandler(StatusRuntimeException.class) + @Configuration + static class DefaultStatusRuntimeExceptionErrorHandlerConfig { + + @GRpcServiceAdvice + public static class StatusRuntimeExceptionGRpcServiceAdvice { + @java.lang.SuppressWarnings("all") + @GRpcExceptionHandler + public Status handle(StatusRuntimeException e, GRpcExceptionScope scope) { + return e.getStatus(); + } + } + } +} diff --git a/request-response/request-response-spring-boot-autoconfigure-grpc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/request-response/request-response-spring-boot-autoconfigure-grpc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..736a1c35 --- /dev/null +++ b/request-response/request-response-spring-boot-autoconfigure-grpc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +no.entur.logging.cloud.spring.grpc.lognet.RequestResponseGrpcLognetAutoConfiguration \ No newline at end of file diff --git a/request-response/request-response-spring-boot-autoconfigure-web/README.md b/request-response/request-response-spring-boot-autoconfigure-web/README.md new file mode 100644 index 00000000..d386925d --- /dev/null +++ b/request-response/request-response-spring-boot-autoconfigure-web/README.md @@ -0,0 +1,2 @@ +# request-response-logging for Spring Web +Relies on Logbook. diff --git a/request-response/request-response-spring-boot-autoconfigure-web/build.gradle b/request-response/request-response-spring-boot-autoconfigure-web/build.gradle new file mode 100644 index 00000000..2ad74a05 --- /dev/null +++ b/request-response/request-response-spring-boot-autoconfigure-web/build.gradle @@ -0,0 +1,17 @@ + +dependencies { + + api project(':api') + api project(':request-response:logbook') + api project(':request-response:logbook-spring-boot-autoconfigure') + + api "org.zalando:logbook-spring-boot-starter:${logbookVersion}" + + api ("org.slf4j:slf4j-api:${slf4jVersion}") + api ("org.springframework.boot:spring-boot-autoconfigure:${springBootVersion}") + api ("org.springframework.boot:spring-boot-starter-logging:${springBootVersion}") + + compileOnly project(":on-demand:on-demand-spring-boot-starter-web") + + testImplementation("org.springframework.boot:spring-boot-starter-test:${springBootVersion}") +} diff --git a/gcp/request-response-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/logbook/web/HttpMessageStateFilter.java b/request-response/request-response-spring-boot-autoconfigure-web/src/main/java/no/entur/logging/cloud/spring/logbook/web/HttpMessageStateFilter.java similarity index 93% rename from gcp/request-response-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/logbook/web/HttpMessageStateFilter.java rename to request-response/request-response-spring-boot-autoconfigure-web/src/main/java/no/entur/logging/cloud/spring/logbook/web/HttpMessageStateFilter.java index 5e758e5c..b246efd5 100644 --- a/gcp/request-response-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/logbook/web/HttpMessageStateFilter.java +++ b/request-response/request-response-spring-boot-autoconfigure-web/src/main/java/no/entur/logging/cloud/spring/logbook/web/HttpMessageStateFilter.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.logbook.web; +package no.entur.logging.cloud.spring.logbook.web; import jakarta.servlet.*; import no.entur.logging.cloud.logbook.ondemand.state.DefaultHttpMessageStateSupplier; diff --git a/gcp/request-response-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/logbook/web/HttpMessageStateFilterMvcRegistrations.java b/request-response/request-response-spring-boot-autoconfigure-web/src/main/java/no/entur/logging/cloud/spring/logbook/web/HttpMessageStateFilterMvcRegistrations.java similarity index 88% rename from gcp/request-response-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/logbook/web/HttpMessageStateFilterMvcRegistrations.java rename to request-response/request-response-spring-boot-autoconfigure-web/src/main/java/no/entur/logging/cloud/spring/logbook/web/HttpMessageStateFilterMvcRegistrations.java index a662ddaf..bdc3fb66 100644 --- a/gcp/request-response-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/logbook/web/HttpMessageStateFilterMvcRegistrations.java +++ b/request-response/request-response-spring-boot-autoconfigure-web/src/main/java/no/entur/logging/cloud/spring/logbook/web/HttpMessageStateFilterMvcRegistrations.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.logbook.web; +package no.entur.logging.cloud.spring.logbook.web; import org.springframework.boot.autoconfigure.web.servlet.WebMvcRegistrations; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter; diff --git a/gcp/request-response-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/logbook/web/HttpMessageStateFilterRequestMappingHandlerAdapter.java b/request-response/request-response-spring-boot-autoconfigure-web/src/main/java/no/entur/logging/cloud/spring/logbook/web/HttpMessageStateFilterRequestMappingHandlerAdapter.java similarity index 90% rename from gcp/request-response-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/logbook/web/HttpMessageStateFilterRequestMappingHandlerAdapter.java rename to request-response/request-response-spring-boot-autoconfigure-web/src/main/java/no/entur/logging/cloud/spring/logbook/web/HttpMessageStateFilterRequestMappingHandlerAdapter.java index 2b67acab..9cbfa33c 100644 --- a/gcp/request-response-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/logbook/web/HttpMessageStateFilterRequestMappingHandlerAdapter.java +++ b/request-response/request-response-spring-boot-autoconfigure-web/src/main/java/no/entur/logging/cloud/spring/logbook/web/HttpMessageStateFilterRequestMappingHandlerAdapter.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.logbook.web; +package no.entur.logging.cloud.spring.logbook.web; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter; diff --git a/gcp/request-response-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/logbook/web/HttpMessageStateFilterServletInvocableHandlerMethod.java b/request-response/request-response-spring-boot-autoconfigure-web/src/main/java/no/entur/logging/cloud/spring/logbook/web/HttpMessageStateFilterServletInvocableHandlerMethod.java similarity index 97% rename from gcp/request-response-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/logbook/web/HttpMessageStateFilterServletInvocableHandlerMethod.java rename to request-response/request-response-spring-boot-autoconfigure-web/src/main/java/no/entur/logging/cloud/spring/logbook/web/HttpMessageStateFilterServletInvocableHandlerMethod.java index ce9436a3..fad22874 100644 --- a/gcp/request-response-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/logbook/web/HttpMessageStateFilterServletInvocableHandlerMethod.java +++ b/request-response/request-response-spring-boot-autoconfigure-web/src/main/java/no/entur/logging/cloud/spring/logbook/web/HttpMessageStateFilterServletInvocableHandlerMethod.java @@ -1,4 +1,4 @@ -package no.entur.logging.cloud.gcp.spring.logbook.web; +package no.entur.logging.cloud.spring.logbook.web; import no.entur.logging.cloud.logbook.ondemand.state.DefaultHttpMessageStateSupplier; import no.entur.logging.cloud.logbook.ondemand.state.HttpMessageState; diff --git a/gcp/request-response-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/logbook/web/LogbookGcpWebAutoConfiguration.java b/request-response/request-response-spring-boot-autoconfigure-web/src/main/java/no/entur/logging/cloud/spring/logbook/web/LogbookWebAutoConfiguration.java similarity index 92% rename from gcp/request-response-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/logbook/web/LogbookGcpWebAutoConfiguration.java rename to request-response/request-response-spring-boot-autoconfigure-web/src/main/java/no/entur/logging/cloud/spring/logbook/web/LogbookWebAutoConfiguration.java index f78499d8..8fe0fda7 100644 --- a/gcp/request-response-spring-boot-starter-gcp-web/src/main/java/no/entur/logging/cloud/gcp/spring/logbook/web/LogbookGcpWebAutoConfiguration.java +++ b/request-response/request-response-spring-boot-autoconfigure-web/src/main/java/no/entur/logging/cloud/spring/logbook/web/LogbookWebAutoConfiguration.java @@ -1,8 +1,8 @@ -package no.entur.logging.cloud.gcp.spring.logbook.web; +package no.entur.logging.cloud.spring.logbook.web; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; -import no.entur.logging.cloud.gcp.spring.ondemand.web.properties.OndemandProperties; +import no.entur.logging.cloud.spring.ondemand.web.properties.OndemandProperties; import no.entur.logging.cloud.logbook.ondemand.state.HttpMessageState; import no.entur.logging.cloud.logbook.ondemand.state.HttpMessageStateSupplier; import no.entur.logging.cloud.logbook.ondemand.state.RequestHttpMessageStateSupplierSource; @@ -23,8 +23,7 @@ @Configuration @AutoConfigureBefore(LogbookLoggingAutoConfiguration.class) -@PropertySource(value = "classpath:logbook.gcp.web.properties", ignoreResourceNotFound = false) -public class LogbookGcpWebAutoConfiguration { +public class LogbookWebAutoConfiguration { /** * diff --git a/request-response/request-response-spring-boot-autoconfigure-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/request-response/request-response-spring-boot-autoconfigure-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..f94d56cb --- /dev/null +++ b/request-response/request-response-spring-boot-autoconfigure-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +no.entur.logging.cloud.spring.logbook.web.LogbookWebAutoConfiguration \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 9402b5ae..b3931286 100644 --- a/settings.gradle +++ b/settings.gradle @@ -13,7 +13,7 @@ include 'micrometer' // GCP include 'gcp:logback-logstash-encoder-gcp', 'gcp:spring-boot-autoconfigure-gcp', 'gcp:spring-boot-autoconfigure-gcp-grpc-mdc' -include 'gcp:spring-boot-starter-gcp-web', 'gcp:on-demand-spring-boot-starter-gcp-web', 'gcp:spring-boot-starter-gcp-web-test', 'gcp:spring-boot-starter-gcp-grpc-test', 'gcp:on-demand-spring-boot-starter-gcp-grpc', 'gcp:spring-boot-starter-gcp-grpc' +include 'gcp:spring-boot-starter-gcp-web', 'gcp:spring-boot-starter-gcp-web-test', 'gcp:spring-boot-starter-gcp-grpc-test', 'gcp:spring-boot-starter-gcp-grpc' include 'gcp:spring-boot-autoconfigure-gcp-test', 'gcp:request-response-spring-boot-starter-gcp-web', 'gcp:request-response-spring-boot-starter-gcp-web-test', 'gcp:request-response-spring-boot-starter-gcp-grpc', 'gcp:request-response-spring-boot-starter-gcp-grpc-test' include 'gcp:micrometer-gcp' @@ -21,7 +21,7 @@ include 'gcp:logbook-spring-boot-autoconfigure-gcp' // Azure include 'azure:logback-logstash-encoder-azure', 'azure:spring-boot-autoconfigure-azure', 'azure:spring-boot-autoconfigure-azure-grpc-mdc' -include 'azure:spring-boot-starter-azure-web', 'azure:on-demand-spring-boot-starter-azure-web', 'azure:spring-boot-starter-azure-web-test', 'azure:spring-boot-starter-azure-grpc-test', 'azure:on-demand-spring-boot-starter-azure-grpc', 'azure:spring-boot-starter-azure-grpc' +include 'azure:spring-boot-starter-azure-web', 'azure:spring-boot-starter-azure-web-test', 'azure:spring-boot-starter-azure-grpc-test', 'azure:spring-boot-starter-azure-grpc' include 'azure:spring-boot-autoconfigure-azure-test', 'azure:request-response-spring-boot-starter-azure-web', 'azure:request-response-spring-boot-starter-azure-web-test', 'azure:request-response-spring-boot-starter-azure-grpc', 'azure:request-response-spring-boot-starter-azure-grpc-test' include 'azure:micrometer-azure' @@ -32,6 +32,8 @@ include 'trace:mdc-context-grpc-netty', 'trace:server:correlation-id-trace-sprin include 'request-response:netty-grpc', 'request-response:netty-grpc-test' include 'request-response:logbook', 'request-response:logbook-test', 'request-response:logbook-spring-boot-autoconfigure', 'request-response:logbook-spring-boot-autoconfigure-test' +include 'on-demand:on-demand-spring-boot-starter-web', 'on-demand:on-demand-spring-boot-starter-grpc' +include 'request-response:request-response-spring-boot-autoconfigure-web', 'request-response:request-response-spring-boot-autoconfigure-grpc' include 'bom'