You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by pc...@apache.org on 2024/04/02 10:13:18 UTC
(camel-k) branch main updated: feat(traits): logging refactoring
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 <pa...@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"])
}