diff --git a/swh/templates/checker-deposit/configmap.yaml b/swh/templates/checker-deposit/configmap.yaml
index 119617891a752771a4b55ff789b2f22452fe3101..afbfdd66d6b7b6294dea2a11c0ccb6b7107e2435 100644
--- a/swh/templates/checker-deposit/configmap.yaml
+++ b/swh/templates/checker-deposit/configmap.yaml
@@ -1,4 +1,7 @@
 {{ if .Values.checker_deposit.enabled -}}
+{{- $deployment_config := .Values.checker_deposit -}}
+{{- $use_json_logger := get $deployment_config "useJsonLogger" | default true }}
+{{ $log_level := get $deployment_config "logLevel" | default "INFO" | quote }}
 ---
 apiVersion: v1
 kind: ConfigMap
@@ -35,4 +38,41 @@ data:
       > $CONFIG_FILE
 
     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 }}
diff --git a/swh/templates/checker-deposit/deployment.yaml b/swh/templates/checker-deposit/deployment.yaml
index 5fcc8fc652d1c198fdd65c66ada4c20be23fbf92..bd2536e8d9cb70c021b8fb44ce89d5fe6aa59fbb 100644
--- a/swh/templates/checker-deposit/deployment.yaml
+++ b/swh/templates/checker-deposit/deployment.yaml
@@ -1,6 +1,7 @@
 {{- $deployment_config := .Values.checker_deposit -}}
 {{ if $deployment_config.enabled -}}
 {{- $configurationChecksum := include (print $.Template.BasePath "/checker-deposit/configmap.yaml") . -}}
+{{- $use_json_logger := get $deployment_config "useJsonLogger" | default true }}
 ---
 apiVersion: apps/v1
 kind: Deployment
@@ -105,6 +106,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 }}
         - name: SWH_MAIN_PACKAGE
@@ -122,6 +127,12 @@ spec:
             subPath: "pre-stop.sh"
           - name: configuration
             mountPath: /etc/swh
+        {{ if $use_json_logger }}
+          - name: configuration-template
+            mountPath: /etc/swh/logging-configuration.yml
+            subPath: "logging-configuration.yml"
+            readOnly: true
+        {{ end }}
       volumes:
       - name: configuration
         emptyDir: {}
@@ -134,6 +145,10 @@ spec:
             path: "config.yml.template"
           - key: "init-container-entrypoint.sh"
             path: "init-container-entrypoint.sh"
+        {{ if $use_json_logger }}
+          - key: "logging-configuration.yml"
+            path: "logging-configuration.yml"
+        {{ end }}
       - name: checker-deposit-utils
         configMap:
           name: checker-deposit-utils