Merge branch 'stable-3.12' * stable-3.12: Use ChangeIndexer.deleteAllForProject on project deletion Revert "Introduce all-project-changes-deleted-from-index event" Change-Id: I99da02728c2baa7182c5383396a991712627ca86
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteLog.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteLog.java index 5382067..57d40e3 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteLog.java +++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteLog.java
@@ -22,6 +22,7 @@ import com.google.gerrit.server.AuditEvent; import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.audit.AuditService; +import com.google.gerrit.server.config.LogConfig; import com.google.gerrit.server.util.PluginLogFile; import com.google.gerrit.server.util.SystemLog; import com.google.gerrit.server.util.time.TimeUtil; @@ -46,8 +47,18 @@ private final AuditService auditService; @Inject - public DeleteLog(SystemLog systemLog, ServerInformation serverInfo, AuditService auditService) { - super(systemLog, serverInfo, DELETE_LOG_NAME, new DeleteLogLayout()); + public DeleteLog( + SystemLog systemLog, + ServerInformation serverInfo, + AuditService auditService, + LogConfig config) { + super( + systemLog, + serverInfo, + DELETE_LOG_NAME, + new DeleteLogLayout(), + new DeleteLogJsonLayout(), + config); this.auditService = auditService; }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteLogJsonLayout.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteLogJsonLayout.java new file mode 100644 index 0000000..368568d --- /dev/null +++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeleteLogJsonLayout.java
@@ -0,0 +1,74 @@ +// Copyright (C) 2025 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.googlesource.gerrit.plugins.deleteproject; + +import com.google.gerrit.util.logging.JsonLayout; +import com.google.gerrit.util.logging.JsonLogEntry; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.google.gson.annotations.SerializedName; +import org.apache.log4j.spi.LoggingEvent; + +/** Layout for formatting error log events in the JSON format. */ +public class DeleteLogJsonLayout extends JsonLayout { + @Override + public JsonLogEntry toJsonLogEntry(LoggingEvent event) { + return new DeleteJsonLogEntry(event); + } + + @SuppressWarnings("unused") + private class DeleteJsonLogEntry extends JsonLogEntry { + /** Timestamp of when the log entry was created. */ + @SerializedName("@timestamp") + public final String timestamp; + + /** Logging level/severity. */ + public final String level; + + /** Account ID of the user deleting the project. */ + public final String accountId; + + /** Username of the user deleting the project. */ + public final String user; + + /** Status of the project deletion. */ + public final String status; + + /** Deleted project. */ + public final String project; + + /** Options used in the project deletion. */ + public final JsonObject options; + + /** Optional error message. */ + public final String error; + + /** Version of log format. */ + @SerializedName("@version") + public final int version = 1; + + public DeleteJsonLogEntry(LoggingEvent event) { + this.timestamp = timestampFormatter.format(event.getTimeStamp()); + this.level = event.getLevel().toString(); + this.accountId = (String) event.getMDC(DeleteLog.ACCOUNT_ID); + this.user = (String) event.getMDC(DeleteLog.USER_NAME); + this.status = (String) event.getMessage(); + this.project = (String) event.getMDC(DeleteLog.PROJECT_NAME); + this.options = + JsonParser.parseString((String) event.getMDC(DeleteLog.OPTIONS)).getAsJsonObject(); + this.error = (String) event.getMDC(DeleteLog.ERROR); + } + } +}