diff --git a/container-images/gerrit-base/Dockerfile b/container-images/gerrit-base/Dockerfile
index 9f42961..77512d7 100644
--- a/container-images/gerrit-base/Dockerfile
+++ b/container-images/gerrit-base/Dockerfile
@@ -29,7 +29,7 @@
 RUN curl -f -k -o /var/plugins/global-refdb.jar ${GLOBAL_REFDB_URL}
 
 # Download high-availability plugin
-ARG HA_JAR_URL=https://gerrit-ci.gerritforge.com/view/Plugins-master/job/plugin-high-availability-bazel-master/lastSuccessfulBuild/artifact/bazel-bin/plugins/high-availability/high-availability.jar
+ARG HA_JAR_URL=https://gerrit-ci.gerritforge.com/view/Plugins-stable-3.9/job/plugin-high-availability-bazel-stable-3.9/lastSuccessfulBuild/artifact/bazel-bin/plugins/high-availability/high-availability.jar
 RUN curl -f -k -o /var/plugins/high-availability.jar ${HA_JAR_URL}
 
 # Download zookeeper-refdb plugin
diff --git a/container-images/gerrit-init/Dockerfile b/container-images/gerrit-init/Dockerfile
index 70da7aa..53ef808 100644
--- a/container-images/gerrit-init/Dockerfile
+++ b/container-images/gerrit-init/Dockerfile
@@ -20,7 +20,6 @@
 COPY config/* /var/config/
 
 RUN mkdir -p /var/mnt/git \
-  && mkdir -p /var/mnt/logs \
   && chown -R gerrit:users /var/mnt
 
 USER gerrit
diff --git a/container-images/gerrit-init/tools/gerrit-initializer/initializer/tasks/init.py b/container-images/gerrit-init/tools/gerrit-initializer/initializer/tasks/init.py
index 4931984..f5cb3f2 100755
--- a/container-images/gerrit-init/tools/gerrit-initializer/initializer/tasks/init.py
+++ b/container-images/gerrit-init/tools/gerrit-initializer/initializer/tasks/init.py
@@ -103,12 +103,16 @@
         LOG.info("No initialization required.")
         return False
 
-    def _ensure_symlink(self, src, target):
-        if not os.path.exists(src):
-            raise FileNotFoundError(f"Unable to find mounted dir: {src}")
+    def _symlink(self, src, target, required=True):
+        if os.path.islink(target) and not os.path.exists(os.readlink(target)):
+            LOG.warn(f"Removing broken symlink {target}")
+            os.unlink(target)
 
-        if os.path.islink(target) and os.path.realpath(target) == src:
-            return
+        if not os.path.exists(src):
+            if required:
+                raise FileNotFoundError(f"Unable to find mounted dir: {src}")
+            else:
+                return
 
         if os.path.exists(target):
             if os.path.isdir(target) and not os.path.islink(target):
@@ -119,16 +123,15 @@
         os.symlink(src, target)
 
     def _symlink_mounted_site_components(self):
-        self._ensure_symlink(f"{MNT_PATH}/git", f"{self.site}/git")
-        self._ensure_symlink(f"{MNT_PATH}/logs", f"{self.site}/logs")
+        self._symlink(f"{MNT_PATH}/git", f"{self.site}/git")
 
         mounted_shared_dir = f"{MNT_PATH}/shared"
         if not self.is_replica and os.path.exists(mounted_shared_dir):
-            self._ensure_symlink(mounted_shared_dir, f"{self.site}/shared")
+            self._symlink(mounted_shared_dir, f"{self.site}/shared")
 
         index_type = self.gerrit_config.get("index.type", default=IndexType.LUCENE.name)
         if IndexType[index_type.upper()] is IndexType.ELASTICSEARCH:
-            self._ensure_symlink(f"{MNT_PATH}/index", f"{self.site}/index")
+            self._symlink(f"{MNT_PATH}/index", f"{self.site}/index")
 
         data_dir = f"{self.site}/data"
         if os.path.exists(data_dir):
@@ -147,7 +150,7 @@
                 abs_path = os.path.join(data_dir, file_or_dir)
                 abs_mounted_path = os.path.join(mounted_data_dir, file_or_dir)
                 if os.path.isdir(abs_mounted_path):
-                    self._ensure_symlink(abs_mounted_path, abs_path)
+                    self._symlink(abs_mounted_path, abs_path)
 
     def _symlink_configuration(self):
         etc_dir = f"{self.site}/etc"
@@ -160,7 +163,7 @@
                     if os.path.isfile(
                         os.path.join(f"{MNT_PATH}/etc/{config_type}", file_or_dir)
                     ):
-                        self._ensure_symlink(
+                        self._symlink(
                             os.path.join(f"{MNT_PATH}/etc/{config_type}", file_or_dir),
                             os.path.join(etc_dir, file_or_dir),
                         )
@@ -176,6 +179,11 @@
                 os.remove(full_path)
 
     def execute(self):
+        # Required for migration away from NFS-based log storage, when using the
+        # Gerrit-Operator and to provide backwards compatibility for the helm-
+        # charts
+        self._symlink(f"{MNT_PATH}/logs", f"{self.site}/logs", required=False)
+
         if not self.is_replica:
             self._symlink_mounted_site_components()
         elif not NoteDbValidator(MNT_PATH).check():
diff --git a/container-images/git-gc/tools/gc.sh b/container-images/git-gc/tools/gc.sh
index 911d3cf..d1b4f15 100755
--- a/container-images/git-gc/tools/gc.sh
+++ b/container-images/git-gc/tools/gc.sh
@@ -119,6 +119,26 @@
   done
 }
 
+delete_stale_gc_lock()
+{
+  local PROJECT_DIR="$1"
+  OUT=$(find "$PROJECT_DIR" -name 'gc.pid' -type f -maxdepth 1 -mmin +720 -delete) && \
+        log "pruning stale 'gc.pid' lock file older than 12 hours:\n$OUT"
+}
+
+delete_empty_ref_dirs()
+{
+  PROJECT_DIR="$1"
+  find "$PROJECT_DIR/refs" -type d -empty -mindepth 2 -mmin +60 -delete
+}
+
+delete_stale_incoming_packs()
+{
+  local PROJECT_DIR="$1"
+  OUT=$(find "$PROJECT_DIR/objects" -maxdepth 1 \( -name 'incoming_*.pack' -o -name 'incoming_*.idx' \) -type f -mtime +1 -delete) && \
+        log "pruning stale 'incoming_*.pack' and 'incoming_*.idx' files older than 24 hours:\n$OUT"
+}
+
 gc_project()
 {
   PROJECT_NAME="$@"
@@ -168,14 +188,15 @@
   git --git-dir="$PROJECT_DIR" config pack.window 250
   git --git-dir="$PROJECT_DIR" config pack.depth 50
 
+  delete_stale_gc_lock "$PROJECT_DIR"
+
   OUT=$(git $GC_CONFIG --git-dir="$PROJECT_DIR" "$GC_COMMAND" --auto --prune $OPTS \
         || date +"%D %r Failed: $PROJECT_NAME") \
     && log "$OUT"
 
   delete_empty_ref_dirs "$PROJECT_DIR"
 
-  OUT=$(find "$PROJECT_DIR/objects" -name 'incoming_*.pack' -type f -mtime +14 -delete) && \
-        log "pruning stale 'incoming_*.pack' files older than 14 days:\n$OUT"
+  delete_stale_incoming_packs "$PROJECT_DIR"
 
   if [ $DONOT_PACK_REFS_OPT -eq 0 ] ; then
     local looseRefCount
@@ -189,12 +210,6 @@
   OUT=$(date +"%D %r Finished: $PROJECT_NAME$LOG_OPTS") && log "$OUT"
 }
 
-delete_empty_ref_dirs()
-{
-  PROJECT_DIR="$1"
-  find "$PROJECT_DIR/refs" -type d -empty -mindepth 2 -mmin +60 -delete
-}
-
 ###########################
 # Main script starts here #
 ###########################
diff --git a/operator/pom.xml b/operator/pom.xml
index aca497c..e5ca845 100644
--- a/operator/pom.xml
+++ b/operator/pom.xml
@@ -20,6 +20,7 @@
 		<guice.version>5.1.0</guice.version>
 		<javaoperatorsdk.version>4.3.3</javaoperatorsdk.version>
 		<jetty.version>11.0.15</jetty.version>
+		<log42.version>2.23.0</log42.version>
 		<lombok.version>1.18.28</lombok.version>
 		<maven.compiler.source>17</maven.compiler.source>
 		<maven.compiler.target>17</maven.compiler.target>
@@ -140,6 +141,20 @@
 		</profile>
 	</profiles>
 
+	<dependencyManagement>
+		<dependencies>
+			<dependency>
+				<groupId>org.apache.logging.log4j</groupId>
+				<artifactId>log4j-api</artifactId>
+				<version>${log42.version}</version>
+			</dependency>
+			<dependency>
+				<groupId>org.apache.logging.log4j</groupId>
+				<artifactId>log4j-core</artifactId>
+				<version>${log42.version}</version>
+			</dependency>
+		</dependencies>
+	</dependencyManagement>
 	<dependencies>
 		<dependency>
 			<groupId>io.javaoperatorsdk</groupId>
diff --git a/operator/src/main/java/com/google/gerrit/k8s/operator/api/model/cluster/GerritCluster.java b/operator/src/main/java/com/google/gerrit/k8s/operator/api/model/cluster/GerritCluster.java
index ec4adba..36c0fd9 100644
--- a/operator/src/main/java/com/google/gerrit/k8s/operator/api/model/cluster/GerritCluster.java
+++ b/operator/src/main/java/com/google/gerrit/k8s/operator/api/model/cluster/GerritCluster.java
@@ -142,20 +142,6 @@
   }
 
   @JsonIgnore
-  public static VolumeMount getLogsVolumeMount() {
-    return getLogsVolumeMount("/var/mnt/logs");
-  }
-
-  @JsonIgnore
-  public static VolumeMount getLogsVolumeMount(String mountPath) {
-    return new VolumeMountBuilder()
-        .withName(SHARED_VOLUME_NAME)
-        .withSubPathExpr("logs/$(POD_NAME)")
-        .withMountPath(mountPath)
-        .build();
-  }
-
-  @JsonIgnore
   public static Volume getNfsImapdConfigVolume() {
     return new VolumeBuilder()
         .withName(NFS_IDMAPD_CONFIG_VOLUME_NAME)
@@ -193,7 +179,6 @@
       ContainerImageConfig imageConfig,
       List<VolumeMount> additionalVolumeMounts) {
     List<VolumeMount> volumeMounts = new ArrayList<>();
-    volumeMounts.add(getLogsVolumeMount());
     volumeMounts.add(getGitRepositoriesVolumeMount());
 
     volumeMounts.addAll(additionalVolumeMounts);
@@ -219,7 +204,6 @@
         .withImage(imageConfig.getBusyBox().getBusyBoxImage())
         .withCommand(List.of("sh", "-c"))
         .withArgs(args.toString().trim())
-        .withEnv(getPodNameEnvVar())
         .withVolumeMounts(volumeMounts)
         .build();
   }
diff --git a/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/dependent/FluentBitConfigMap.java b/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/dependent/FluentBitConfigMap.java
deleted file mode 100644
index 4e4757f..0000000
--- a/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/dependent/FluentBitConfigMap.java
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright (C) 2024 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.gerrit.k8s.operator.cluster.dependent;
-
-import com.google.gerrit.k8s.operator.api.model.cluster.GerritCluster;
-import com.google.gerrit.k8s.operator.api.model.gerrit.Gerrit;
-import io.fabric8.kubernetes.api.model.ConfigMap;
-import io.fabric8.kubernetes.api.model.ConfigMapBuilder;
-import io.javaoperatorsdk.operator.api.reconciler.Context;
-import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource;
-import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent;
-import java.util.Map;
-
-@KubernetesDependent(resourceDiscriminator = FluentBitConfigMapDiscriminator.class)
-public class FluentBitConfigMap extends CRUDKubernetesDependentResource<ConfigMap, Gerrit> {
-
-  public FluentBitConfigMap() {
-    super(ConfigMap.class);
-  }
-
-  public static String getName(Gerrit gerrit) {
-    return String.format("%s-fluentbit-configmap", gerrit.getMetadata().getName());
-  }
-
-  @Override
-  protected ConfigMap desired(Gerrit gerrit, Context<Gerrit> context) {
-    String customConfig = gerrit.getSpec().getFluentBitSidecar().getConfig();
-    String config =
-        """
-        [SERVICE]
-          Parsers_file    parsers-multiline.conf
-        [INPUT]
-          Name            tail
-          Path            /var/mnt/logs/*log
-          Tag             <log_name>
-          Tag_Regex       ^\\/var\\/mnt\\/logs\\/(?<log_name>[^*]+)
-          Multiline.parser   gerrit-multiline
-          Buffer_Chunk_Size  10M
-          Buffer_Max_Size    10M\n
-        """
-            + customConfig;
-    String multilineParser =
-        """
-        [MULTILINE_PARSER]
-          Name          gerrit-multiline
-          Type          regex
-          Flush_timeout 1000
-          Rule  "start_state"  "/\\[\\d{4}-\\d{2}-\\d{2}(.*?)\\](.*)/"  "cont"
-          Rule  "cont"         "^(?!\\[)(.*)"       "cont"
-        """;
-
-    return new ConfigMapBuilder()
-        .withApiVersion("v1")
-        .withNewMetadata()
-        .withName(getName(gerrit))
-        .withNamespace(gerrit.getMetadata().getNamespace())
-        .withLabels(
-            GerritCluster.getLabels(
-                gerrit.getMetadata().getName(), getName(gerrit), this.getClass().getSimpleName()))
-        .endMetadata()
-        .withData(
-            Map.ofEntries(
-                Map.entry("fluent-bit.conf", config),
-                Map.entry("parsers-multiline.conf", multilineParser)))
-        .build();
-  }
-}
diff --git a/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/GerritReconciler.java b/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/GerritReconciler.java
index 1ba060e..b5ad4b6 100644
--- a/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/GerritReconciler.java
+++ b/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/GerritReconciler.java
@@ -19,7 +19,7 @@
 import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.k8s.operator.api.model.gerrit.Gerrit;
 import com.google.gerrit.k8s.operator.api.model.gerrit.GerritStatus;
-import com.google.gerrit.k8s.operator.cluster.dependent.FluentBitConfigMap;
+import com.google.gerrit.k8s.operator.gerrit.dependent.FluentBitConfigMap;
 import com.google.gerrit.k8s.operator.gerrit.dependent.GerritConfigMap;
 import com.google.gerrit.k8s.operator.gerrit.dependent.GerritInitConfigMap;
 import com.google.gerrit.k8s.operator.gerrit.dependent.GerritService;
diff --git a/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/dependent/FluentBitConfigMap.java b/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/dependent/FluentBitConfigMap.java
new file mode 100644
index 0000000..44c6322
--- /dev/null
+++ b/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/dependent/FluentBitConfigMap.java
@@ -0,0 +1,119 @@
+// Copyright (C) 2024 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.k8s.operator.gerrit.dependent;
+
+import com.google.gerrit.k8s.operator.api.model.cluster.GerritCluster;
+import com.google.gerrit.k8s.operator.api.model.gerrit.Gerrit;
+import io.fabric8.kubernetes.api.model.ConfigMap;
+import io.fabric8.kubernetes.api.model.ConfigMapBuilder;
+import io.javaoperatorsdk.operator.api.reconciler.Context;
+import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource;
+import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent;
+import java.util.Map;
+import org.eclipse.jgit.errors.ConfigInvalidException;
+import org.eclipse.jgit.lib.Config;
+
+@KubernetesDependent(resourceDiscriminator = FluentBitConfigMapDiscriminator.class)
+public class FluentBitConfigMap extends CRUDKubernetesDependentResource<ConfigMap, Gerrit> {
+  private static final String FLUENT_BIT_SERVICE_CONFIG =
+      """
+      [SERVICE]
+        Parsers_file parsers.conf
+      """;
+  private static final String FLUENT_BIT_TEXT_LOG_INPUT =
+      """
+      [INPUT]
+        Name tail
+        Path /var/mnt/logs/*_log
+        Tag <log_name>
+        Tag_Regex ^\\/var\\/mnt\\/logs\\/(?<log_name>[^*]+)
+        Multiline.parser gerrit-multiline
+        Buffer_Chunk_Size 10M
+        Buffer_Max_Size 10M\n
+      """;
+  private static final String FLUENT_BIT_JSON_LOG_INPUT =
+      """
+      [INPUT]
+        Name tail
+        Path /var/mnt/logs/*_log.json
+        Tag <log_name>
+        Tag_Regex ^\\/var\\/mnt\\/logs\\/(?<log_name>.+)
+        Parser jsonLog
+        Buffer_Chunk_Size 10M
+        Buffer_Max_Size 10M\n
+      """;
+  private static final String MULTILINE_PARSER_CONFIG =
+      """
+      [MULTILINE_PARSER]
+        Name gerrit-multiline
+        Type regex
+        Flush_timeout 1000
+        Rule "start_state" "/\\[\\d{4}-\\d{2}-\\d{2}(.*?)\\](.*)/" "cont"
+        Rule "cont" "^(?!\\[)(.*)" "cont"
+      """;
+  private static final String JSON_PARSER_CONFIG =
+      """
+      [PARSER]
+        Name jsonLog
+        Format json
+      """;
+
+  public FluentBitConfigMap() {
+    super(ConfigMap.class);
+  }
+
+  public static String getName(Gerrit gerrit) {
+    return String.format("%s-fluentbit-configmap", gerrit.getMetadata().getName());
+  }
+
+  @Override
+  protected ConfigMap desired(Gerrit gerrit, Context<Gerrit> context) {
+    String customConfig = gerrit.getSpec().getFluentBitSidecar().getConfig();
+
+    Config gerritConfig = new Config();
+    try {
+      gerritConfig.fromText(gerrit.getSpec().getConfigFiles().get("gerrit.config"));
+    } catch (ConfigInvalidException e) {
+      throw new IllegalStateException("Failed to parse gerrit.config.", e);
+    }
+
+    String config = FLUENT_BIT_SERVICE_CONFIG;
+    String parserConfig = "";
+    if (gerritConfig.getBoolean("log", "textLogging", true)) {
+      config = config + FLUENT_BIT_TEXT_LOG_INPUT;
+      parserConfig = parserConfig + MULTILINE_PARSER_CONFIG;
+    }
+
+    if (gerritConfig.getBoolean("log", "jsonLogging", false)) {
+      config = config + FLUENT_BIT_JSON_LOG_INPUT;
+      parserConfig = parserConfig + JSON_PARSER_CONFIG;
+    }
+    config = config + customConfig;
+
+    return new ConfigMapBuilder()
+        .withApiVersion("v1")
+        .withNewMetadata()
+        .withName(getName(gerrit))
+        .withNamespace(gerrit.getMetadata().getNamespace())
+        .withLabels(
+            GerritCluster.getLabels(
+                gerrit.getMetadata().getName(), getName(gerrit), this.getClass().getSimpleName()))
+        .endMetadata()
+        .withData(
+            Map.ofEntries(
+                Map.entry("fluent-bit.conf", config), Map.entry("parsers.conf", parserConfig)))
+        .build();
+  }
+}
diff --git a/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/dependent/FluentBitConfigMapDiscriminator.java b/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/dependent/FluentBitConfigMapDiscriminator.java
similarity index 96%
rename from operator/src/main/java/com/google/gerrit/k8s/operator/cluster/dependent/FluentBitConfigMapDiscriminator.java
rename to operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/dependent/FluentBitConfigMapDiscriminator.java
index 0c2684b..88e8255 100644
--- a/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/dependent/FluentBitConfigMapDiscriminator.java
+++ b/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/dependent/FluentBitConfigMapDiscriminator.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.google.gerrit.k8s.operator.cluster.dependent;
+package com.google.gerrit.k8s.operator.gerrit.dependent;
 
 import com.google.gerrit.k8s.operator.api.model.gerrit.Gerrit;
 import io.fabric8.kubernetes.api.model.ConfigMap;
diff --git a/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/dependent/GerritStatefulSet.java b/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/dependent/GerritStatefulSet.java
index 6cc91b1..3796753 100644
--- a/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/dependent/GerritStatefulSet.java
+++ b/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/dependent/GerritStatefulSet.java
@@ -21,7 +21,6 @@
 import com.google.gerrit.k8s.operator.api.model.gerrit.GerritModuleData;
 import com.google.gerrit.k8s.operator.api.model.shared.ContainerImageConfig;
 import com.google.gerrit.k8s.operator.api.model.shared.NfsWorkaroundConfig;
-import com.google.gerrit.k8s.operator.cluster.dependent.FluentBitConfigMap;
 import com.google.gerrit.k8s.operator.gerrit.GerritReconciler;
 import com.google.gerrit.k8s.operator.util.CRUDReconcileAddKubernetesDependentResource;
 import io.fabric8.kubernetes.api.model.Container;
@@ -296,7 +295,6 @@
       volumeMounts.add(GerritCluster.getHAShareVolumeMount());
     }
     volumeMounts.add(GerritCluster.getGitRepositoriesVolumeMount());
-    volumeMounts.add(GerritCluster.getLogsVolumeMount());
     volumeMounts.add(
         new VolumeMountBuilder()
             .withName("gerrit-config")
@@ -351,7 +349,12 @@
             .withMountPath("/fluent-bit/etc/")
             .build());
 
-    volumeMounts.add(GerritCluster.getLogsVolumeMount());
+    volumeMounts.add(
+        new VolumeMountBuilder()
+            .withName(SITE_VOLUME_NAME)
+            .withSubPath("logs")
+            .withMountPath("/var/mnt/logs")
+            .build());
 
     return volumeMounts;
   }
diff --git a/operator/src/main/java/com/google/gerrit/k8s/operator/gitgc/dependent/GitGarbageCollectionCronJob.java b/operator/src/main/java/com/google/gerrit/k8s/operator/gitgc/dependent/GitGarbageCollectionCronJob.java
index fc1bddb..24364d7 100644
--- a/operator/src/main/java/com/google/gerrit/k8s/operator/gitgc/dependent/GitGarbageCollectionCronJob.java
+++ b/operator/src/main/java/com/google/gerrit/k8s/operator/gitgc/dependent/GitGarbageCollectionCronJob.java
@@ -122,7 +122,6 @@
   private Container buildGitGcContainer(GitGarbageCollection gitGc, GerritCluster gerritCluster) {
     List<VolumeMount> volumeMounts = new ArrayList<>();
     volumeMounts.add(GerritCluster.getGitRepositoriesVolumeMount("/var/gerrit/git"));
-    volumeMounts.add(GerritCluster.getLogsVolumeMount("/var/log/git"));
 
     if (gerritCluster.getSpec().getStorage().getStorageClasses().getNfsWorkaround().isEnabled()
         && gerritCluster
@@ -146,7 +145,6 @@
                     .getGerritImages()
                     .getFullImageName("git-gc"))
             .withResources(gitGc.getSpec().getResources())
-            .withEnv(GerritCluster.getPodNameEnvVar())
             .withVolumeMounts(volumeMounts);
 
     ArrayList<String> args = new ArrayList<>();
diff --git a/operator/src/main/java/com/google/gerrit/k8s/operator/receiver/dependent/ReceiverDeployment.java b/operator/src/main/java/com/google/gerrit/k8s/operator/receiver/dependent/ReceiverDeployment.java
index 9f5fc0c..f1102ae 100644
--- a/operator/src/main/java/com/google/gerrit/k8s/operator/receiver/dependent/ReceiverDeployment.java
+++ b/operator/src/main/java/com/google/gerrit/k8s/operator/receiver/dependent/ReceiverDeployment.java
@@ -106,7 +106,6 @@
                 .getContainerImages()
                 .getGerritImages()
                 .getFullImageName("apache-git-http-backend"))
-        .withEnv(GerritCluster.getPodNameEnvVar())
         .withPorts(getContainerPorts(receiver))
         .withResources(receiver.getSpec().getResources())
         .withReadinessProbe(receiver.getSpec().getReadinessProbe())
@@ -163,7 +162,6 @@
   private Set<VolumeMount> getVolumeMounts(Receiver receiver, boolean isInitContainer) {
     Set<VolumeMount> volumeMounts = new HashSet<>();
     volumeMounts.add(GerritCluster.getGitRepositoriesVolumeMount("/var/gerrit/git"));
-    volumeMounts.add(GerritCluster.getLogsVolumeMount("/var/log/apache2"));
 
     volumeMounts.add(
         new VolumeMountBuilder()
diff --git a/operator/src/test/resources/com/google/gerrit/k8s/operator/gitgc/dependent/cronjob_all_default.yaml b/operator/src/test/resources/com/google/gerrit/k8s/operator/gitgc/dependent/cronjob_all_default.yaml
index ebc04e6..7d8b8e1 100644
--- a/operator/src/test/resources/com/google/gerrit/k8s/operator/gitgc/dependent/cronjob_all_default.yaml
+++ b/operator/src/test/resources/com/google/gerrit/k8s/operator/gitgc/dependent/cronjob_all_default.yaml
@@ -65,18 +65,10 @@
               limits:
                 cpu: 100m
                 memory: 256Mi
-            env:
-            - name: POD_NAME
-              valueFrom:
-                fieldRef:
-                  fieldPath: metadata.name
             volumeMounts:
             - name: shared
               subPath: git
               mountPath: /var/gerrit/git
-            - name: shared
-              subPathExpr: "logs/$(POD_NAME)"
-              mountPath: /var/log/git
           volumes:
           - name: shared
             persistentVolumeClaim:
diff --git a/operator/src/test/resources/com/google/gerrit/k8s/operator/gitgc/dependent/cronjob_all_nfs_workaround.yaml b/operator/src/test/resources/com/google/gerrit/k8s/operator/gitgc/dependent/cronjob_all_nfs_workaround.yaml
index ac30455..38d4c74 100644
--- a/operator/src/test/resources/com/google/gerrit/k8s/operator/gitgc/dependent/cronjob_all_nfs_workaround.yaml
+++ b/operator/src/test/resources/com/google/gerrit/k8s/operator/gitgc/dependent/cronjob_all_nfs_workaround.yaml
@@ -62,17 +62,9 @@
             - sh
             - -c
             args:
-            - chown -R 1000:100 /var/mnt/logs /var/mnt/git
-            env:
-            - name: POD_NAME
-              valueFrom:
-                fieldRef:
-                  fieldPath: metadata.name
+            - chown -R 1000:100 /var/mnt/git
             volumeMounts:
             - name: shared
-              subPathExpr: "logs/$(POD_NAME)"
-              mountPath: /var/mnt/logs
-            - name: shared
               subPath: git
               mountPath: /var/mnt/git
             - name: nfs-config
@@ -89,18 +81,10 @@
               limits:
                 cpu: 100m
                 memory: 256Mi
-            env:
-            - name: POD_NAME
-              valueFrom:
-                fieldRef:
-                  fieldPath: metadata.name
             volumeMounts:
             - name: shared
               subPath: git
               mountPath: /var/gerrit/git
-            - name: shared
-              subPathExpr: "logs/$(POD_NAME)"
-              mountPath: /var/log/git
             - name: nfs-config
               subPath: idmapd.conf
               mountPath: /etc/idmapd.conf
diff --git a/operator/src/test/resources/com/google/gerrit/k8s/operator/gitgc/dependent/cronjob_all_options_enabled.yaml b/operator/src/test/resources/com/google/gerrit/k8s/operator/gitgc/dependent/cronjob_all_options_enabled.yaml
index b9780f5..e093502 100644
--- a/operator/src/test/resources/com/google/gerrit/k8s/operator/gitgc/dependent/cronjob_all_options_enabled.yaml
+++ b/operator/src/test/resources/com/google/gerrit/k8s/operator/gitgc/dependent/cronjob_all_options_enabled.yaml
@@ -69,18 +69,10 @@
             - -B
             - -R
             - -P
-            env:
-            - name: POD_NAME
-              valueFrom:
-                fieldRef:
-                  fieldPath: metadata.name
             volumeMounts:
             - name: shared
               subPath: git
               mountPath: /var/gerrit/git
-            - name: shared
-              subPathExpr: "logs/$(POD_NAME)"
-              mountPath: /var/log/git
           volumes:
           - name: shared
             persistentVolumeClaim:
diff --git a/operator/src/test/resources/com/google/gerrit/k8s/operator/gitgc/dependent/cronjob_selected_default.yaml b/operator/src/test/resources/com/google/gerrit/k8s/operator/gitgc/dependent/cronjob_selected_default.yaml
index 68d68ca..a87a216 100644
--- a/operator/src/test/resources/com/google/gerrit/k8s/operator/gitgc/dependent/cronjob_selected_default.yaml
+++ b/operator/src/test/resources/com/google/gerrit/k8s/operator/gitgc/dependent/cronjob_selected_default.yaml
@@ -70,18 +70,10 @@
             - test
             - -p
             - example
-            env:
-            - name: POD_NAME
-              valueFrom:
-                fieldRef:
-                  fieldPath: metadata.name
             volumeMounts:
             - name: shared
               subPath: git
               mountPath: /var/gerrit/git
-            - name: shared
-              subPathExpr: "logs/$(POD_NAME)"
-              mountPath: /var/log/git
           volumes:
           - name: shared
             persistentVolumeClaim:
diff --git a/operator/src/test/resources/com/google/gerrit/k8s/operator/gitgc/dependent/cronjob_selected_options_enabled.yaml b/operator/src/test/resources/com/google/gerrit/k8s/operator/gitgc/dependent/cronjob_selected_options_enabled.yaml
index 7458352..d4519df 100644
--- a/operator/src/test/resources/com/google/gerrit/k8s/operator/gitgc/dependent/cronjob_selected_options_enabled.yaml
+++ b/operator/src/test/resources/com/google/gerrit/k8s/operator/gitgc/dependent/cronjob_selected_options_enabled.yaml
@@ -73,18 +73,10 @@
             - -B
             - -R
             - -P
-            env:
-            - name: POD_NAME
-              valueFrom:
-                fieldRef:
-                  fieldPath: metadata.name
             volumeMounts:
             - name: shared
               subPath: git
               mountPath: /var/gerrit/git
-            - name: shared
-              subPathExpr: "logs/$(POD_NAME)"
-              mountPath: /var/log/git
           volumes:
           - name: shared
             persistentVolumeClaim:
diff --git a/operator/src/test/resources/com/google/gerrit/k8s/operator/receiver/dependent/deployment.yaml b/operator/src/test/resources/com/google/gerrit/k8s/operator/receiver/dependent/deployment.yaml
index 4857152..2257380 100644
--- a/operator/src/test/resources/com/google/gerrit/k8s/operator/receiver/dependent/deployment.yaml
+++ b/operator/src/test/resources/com/google/gerrit/k8s/operator/receiver/dependent/deployment.yaml
@@ -65,11 +65,6 @@
       - name: apache-git-http-backend
         imagePullPolicy: Always
         image: docker.io/k8sgerrit/apache-git-http-backend:latest
-        env:
-        - name: POD_NAME
-          valueFrom:
-            fieldRef:
-              fieldPath: metadata.name
         ports:
         - name: http
           containerPort: 80
@@ -100,9 +95,6 @@
           failureThreshold: 3
 
         volumeMounts:
-        - name: shared
-          subPathExpr: "logs/$(POD_NAME)"
-          mountPath: /var/log/apache2
         - name: apache-credentials
           mountPath: /var/apache/credentials/.htpasswd
           subPath: .htpasswd
diff --git a/operator/src/test/resources/com/google/gerrit/k8s/operator/receiver/dependent/deployment_minimal.yaml b/operator/src/test/resources/com/google/gerrit/k8s/operator/receiver/dependent/deployment_minimal.yaml
index 92d0752..53b3c87 100644
--- a/operator/src/test/resources/com/google/gerrit/k8s/operator/receiver/dependent/deployment_minimal.yaml
+++ b/operator/src/test/resources/com/google/gerrit/k8s/operator/receiver/dependent/deployment_minimal.yaml
@@ -43,11 +43,6 @@
       - name: apache-git-http-backend
         imagePullPolicy: Always
         image: docker.io/k8sgerrit/apache-git-http-backend:latest
-        env:
-        - name: POD_NAME
-          valueFrom:
-            fieldRef:
-              fieldPath: metadata.name
         ports:
         - name: http
           containerPort: 80
@@ -61,9 +56,6 @@
             port: 80
 
         volumeMounts:
-        - name: shared
-          subPathExpr: "logs/$(POD_NAME)"
-          mountPath: /var/log/apache2
         - name: apache-credentials
           mountPath: /var/apache/credentials/.htpasswd
           subPath: .htpasswd
