This is an automated email from the ASF dual-hosted git repository. pcongiusti pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-k.git
The following commit(s) were added to refs/heads/main by this push: new f06b03d28 feat(traits): logging refactoring f06b03d28 is described below commit f06b03d28bf6ad0f43103107db5246e1e4a8643b Author: Pasquale Congiusti <pasquale.congiu...@gmail.com> AuthorDate: Fri Mar 22 10:45:30 2024 +0100 feat(traits): logging refactoring --- e2e/advanced/platform_traits_test.go | 11 ---- pkg/trait/logging.go | 39 ++++++++++++- pkg/trait/logging_test.go | 110 ++++++++--------------------------- 3 files changed, 61 insertions(+), 99 deletions(-) diff --git a/e2e/advanced/platform_traits_test.go b/e2e/advanced/platform_traits_test.go index 662d1f4e1..56e9a7689 100644 --- a/e2e/advanced/platform_traits_test.go +++ b/e2e/advanced/platform_traits_test.go @@ -59,18 +59,7 @@ func TestTraitOnIntegrationPlatform(t *testing.T) { g.Eventually(IntegrationPodPhase(t, ctx, ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning)) g.Eventually(IntegrationConditionStatus(t, ctx, ns, name, v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue)) g.Eventually(IntegrationLogs(t, ctx, ns, name), TestTimeoutShort).Should(ContainSubstring("Magicstring!")) - g.Expect(IntegrationPod(t, ctx, ns, name)().Spec.Containers[0].Name).To(BeEquivalentTo(containerTestName)) - - found := false - for _, env := range IntegrationPod(t, ctx, ns, name)().Spec.Containers[0].Env { - if env.Name == "QUARKUS_LOG_LEVEL" { - g.Expect(env.Value).To(BeEquivalentTo("DEBUG")) - found = true - break - } - } - g.Expect(found).To(BeTrue(), "Can't find QUARKUS_LOG_LEVEL ENV variable") g.Eventually(IntegrationLogs(t, ctx, ns, name), TestTimeoutShort).Should(ContainSubstring("DEBUG")) g.Expect(Kamel(t, ctx, "delete", "--all", "-n", ns).Execute()).To(Succeed()) diff --git a/pkg/trait/logging.go b/pkg/trait/logging.go index 97b028b85..00d26369c 100644 --- a/pkg/trait/logging.go +++ b/pkg/trait/logging.go @@ -61,6 +61,17 @@ func (l loggingTrait) Configure(e *Environment) (bool, *TraitCondition, error) { } func (l loggingTrait) Apply(e *Environment) error { + if e.CamelCatalog.Runtime.Capabilities["logging"].RuntimeProperties != nil { + l.setCatalogConfiguration(e) + } else { + l.setEnvConfiguration(e) + } + + return nil +} + +// Deprecated: to be removed in future release in favor of func setCatalogConfiguration(). +func (l loggingTrait) setEnvConfiguration(e *Environment) { envvar.SetVal(&e.EnvVars, envVarQuarkusLogLevel, l.Level) if l.Format != "" { @@ -80,6 +91,32 @@ func (l loggingTrait) Apply(e *Environment) error { envvar.SetVal(&e.EnvVars, envVarQuarkusConsoleColor, True) } } +} - return nil +func (l loggingTrait) setCatalogConfiguration(e *Environment) { + if e.ApplicationProperties == nil { + e.ApplicationProperties = make(map[string]string) + } + e.ApplicationProperties["camel.k.logging.level"] = l.Level + if l.Format != "" { + e.ApplicationProperties["camel.k.logging.format"] = l.Format + } + if pointer.BoolDeref(l.JSON, false) { + e.ApplicationProperties["camel.k.logging.json"] = True + if pointer.BoolDeref(l.JSONPrettyPrint, false) { + e.ApplicationProperties["camel.k.logging.jsonPrettyPrint"] = True + } + } else { + // If the trait is false OR unset, we default to false. + e.ApplicationProperties["camel.k.logging.json"] = False + if pointer.BoolDeref(l.Color, true) { + e.ApplicationProperties["camel.k.logging.color"] = True + } + } + + for _, cp := range e.CamelCatalog.Runtime.Capabilities["logging"].RuntimeProperties { + if CapabilityPropertyKey(cp.Value, e.ApplicationProperties) != "" { + e.ApplicationProperties[CapabilityPropertyKey(cp.Key, e.ApplicationProperties)] = cp.Value + } + } } diff --git a/pkg/trait/logging_test.go b/pkg/trait/logging_test.go index 0947cb132..507cb2b46 100644 --- a/pkg/trait/logging_test.go +++ b/pkg/trait/logging_test.go @@ -117,101 +117,37 @@ func TestEmptyLoggingTrait(t *testing.T) { assert.NotEmpty(t, conditions) assert.NotEmpty(t, env.ExecutedTraits) - quarkusConsoleColor := false - jsonFormat := false - jsonPrettyPrint := false - logLevelIsInfo := false - logFormatIsNotDefault := false - - for _, e := range env.EnvVars { - if e.Name == envVarQuarkusConsoleColor { - if e.Value == "true" { - quarkusConsoleColor = true - } - } - - if e.Name == envVarQuarkusLogConsoleJSON { - if e.Value == "true" { - jsonFormat = true - } - } - - if e.Name == envVarQuarkusLogConsoleJSONPrettyPrint { - if e.Value == "true" { - jsonPrettyPrint = true - } - } - - if e.Name == envVarQuarkusLogLevel { - if e.Value == "INFO" { - logLevelIsInfo = true - } - } - - if e.Name == envVarQuarkusLogConsoleFormat { - logFormatIsNotDefault = true - } - } - - assert.True(t, quarkusConsoleColor) - assert.True(t, logLevelIsInfo) - assert.False(t, jsonFormat) - assert.False(t, jsonPrettyPrint) - assert.False(t, logFormatIsNotDefault) - assert.NotEmpty(t, env.ExecutedTraits) + assert.Equal(t, "INFO", env.ApplicationProperties["camel.k.logging.level"]) + assert.Equal(t, "", env.ApplicationProperties["camel.k.logging.format"]) + assert.Equal(t, "false", env.ApplicationProperties["camel.k.logging.json"]) + assert.Equal(t, "", env.ApplicationProperties["camel.k.logging.jsonPrettyPrint"]) + assert.Equal(t, "true", env.ApplicationProperties["camel.k.logging.color"]) + + assert.Equal(t, "${camel.k.logging.level}", env.ApplicationProperties["quarkus.log.level"]) + assert.Equal(t, "", env.ApplicationProperties["quarkus.log.console.format"]) + assert.Equal(t, "${camel.k.logging.json}", env.ApplicationProperties["quarkus.log.console.json"]) + assert.Equal(t, "", env.ApplicationProperties["quarkus.log.console.json.pretty-print"]) + assert.Equal(t, "${camel.k.logging.color}", env.ApplicationProperties["quarkus.console.color"]) } func TestJsonLoggingTrait(t *testing.T) { // When running, this log should look like "09:07:00 INFO (main) Profile prod activated." - env := createLoggingTestEnv(t, true, true, false, "TRACE", "%d{HH:mm:ss} %-5p (%t) %s%e%n") + env := createLoggingTestEnv(t, true, true, true, "TRACE", "%d{HH:mm:ss} %-5p (%t) %s%e%n") conditions, err := NewLoggingTestCatalog().apply(env) require.NoError(t, err) assert.NotEmpty(t, conditions) assert.NotEmpty(t, env.ExecutedTraits) - quarkusConsoleColor := false - jsonFormat := true - jsonPrettyPrint := false - logLevelIsTrace := false - logFormatIsNotDefault := false - - for _, e := range env.EnvVars { - if e.Name == envVarQuarkusConsoleColor { - if e.Value == "true" { - quarkusConsoleColor = true - } - } - - if e.Name == envVarQuarkusLogConsoleJSON { - if e.Value == "true" { - jsonFormat = true - } - } - - if e.Name == envVarQuarkusLogConsoleJSONPrettyPrint { - if e.Value == "true" { - jsonPrettyPrint = true - } - } - - if e.Name == envVarQuarkusLogLevel { - if e.Value == "TRACE" { - logLevelIsTrace = true - } - } - - if e.Name == envVarQuarkusLogConsoleFormat { - if e.Value == "%d{HH:mm:ss} %-5p (%t) %s%e%n" { - logFormatIsNotDefault = true - } - } - } - - assert.False(t, quarkusConsoleColor) - assert.True(t, jsonFormat) - assert.False(t, jsonPrettyPrint) - assert.True(t, logLevelIsTrace) - assert.True(t, logFormatIsNotDefault) - assert.NotEmpty(t, env.ExecutedTraits) + assert.Equal(t, "TRACE", env.ApplicationProperties["camel.k.logging.level"]) + assert.Equal(t, "%d{HH:mm:ss} %-5p (%t) %s%e%n", env.ApplicationProperties["camel.k.logging.format"]) + assert.Equal(t, "true", env.ApplicationProperties["camel.k.logging.json"]) + assert.Equal(t, "true", env.ApplicationProperties["camel.k.logging.jsonPrettyPrint"]) + assert.Equal(t, "", env.ApplicationProperties["camel.k.logging.color"]) + + assert.Equal(t, "${camel.k.logging.level}", env.ApplicationProperties["quarkus.log.level"]) + assert.Equal(t, "${camel.k.logging.format}", env.ApplicationProperties["quarkus.log.console.format"]) + assert.Equal(t, "${camel.k.logging.json}", env.ApplicationProperties["quarkus.log.console.json"]) + assert.Equal(t, "${camel.k.logging.jsonPrettyPrint}", env.ApplicationProperties["quarkus.log.console.json.pretty-print"]) + assert.Equal(t, "", env.ApplicationProperties["quarkus.console.color"]) }