diff --git a/swh/templates/listers/configmap.yaml b/swh/templates/listers/configmap.yaml
index ef1cc8ebf7021573a2ba4df77a1c47442dec909d..d85aab9e527a9edd5ab6a88dce8c3d2887eb8b59 100644
--- a/swh/templates/listers/configmap.yaml
+++ b/swh/templates/listers/configmap.yaml
@@ -30,6 +30,9 @@ data:
 
 {{ range $lister_type, $deployment_config := .Values.listers.deployments }}
 {{ $lister_name := ( print "lister-" $lister_type ) }}
+# Set useJsonLogger to false to let the logs be plain text
+{{- $use_json_logger := get $deployment_config "useJsonLogger" | default true }}
+{{ $log_level := get $deployment_config "logLevel" | default "INFO" | quote }}
 ---
 apiVersion: v1
 kind: ConfigMap
@@ -91,5 +94,40 @@ data:
     fi
 
     exit 0
+{{ if $use_json_logger -}}
+  logging-configuration.yml: |
+    version: 1
+
+    handlers:
+      console:
+        class: logging.StreamHandler
+        formatter: json
+        stream: ext://sys.stdout
+
+    formatters:
+      json:
+        class: pythonjsonlogger.jsonlogger.JsonFormatter
+        # python-json-logger parses the format argument to get the variables it actually expands into the json
+        format: "%(asctime)s:%(threadName)s:%(pathname)s:%(lineno)s:%(funcName)s:%(task_name)s:%(task_id)s:%(name)s:%(levelname)s:%(message)s"
+
+    loggers:
+      celery:
+        level: {{ $log_level }}
+      amqp:
+        level: WARNING
+      urllib3:
+        level: WARNING
+      azure.core.pipeline.policies.http_logging_policy:
+        level: WARNING
+      swh:
+        level: {{ $log_level }}
+      celery.task:
+        level: {{ $log_level }}
+
+    root:
+      level: {{ $log_level }}
+      handlers:
+      - console
+{{ end }}
 {{ end }}
 {{- end -}}
diff --git a/swh/templates/listers/deployment.yaml b/swh/templates/listers/deployment.yaml
index 23bc6cbd84864ad2d1dd1103c62251cc5a095295..d601c5f5728a806bda79109d194bcdfa0c0e473c 100644
--- a/swh/templates/listers/deployment.yaml
+++ b/swh/templates/listers/deployment.yaml
@@ -2,6 +2,8 @@
 {{- $configurationChecksum := include (print $.Template.BasePath "/listers/configmap.yaml") . -}}
 {{- range $lister_type, $deployment_config := .Values.listers.deployments -}}
 {{- $lister_name := ( print "lister-" $lister_type ) -}}
+# Set useJsonLogger to false to let the logs be plain text
+{{- $use_json_logger := get $deployment_config "useJsonLogger" | default true }}
 ---
 apiVersion: apps/v1
 kind: Deployment
@@ -95,6 +97,10 @@ spec:
           value: {{ get $deployment_config "logLevel" | default "INFO" | quote }}
         - name: SWH_CONFIG_FILENAME
           value: /etc/swh/config.yml
+        {{ if $use_json_logger -}}
+        - name: SWH_LOG_CONFIG
+          value: /etc/swh/logging-configuration.yml
+        {{ end }}
         - name: SWH_SENTRY_ENVIRONMENT
           value: {{ $.Values.sentry.environment }}
         volumeMounts: