diff --git a/java/com/google/gerrit/plugins/codeowners/backend/CodeOwnerConfig.java b/java/com/google/gerrit/plugins/codeowners/backend/CodeOwnerConfig.java
index d01c4a3..fc78ab8 100644
--- a/java/com/google/gerrit/plugins/codeowners/backend/CodeOwnerConfig.java
+++ b/java/com/google/gerrit/plugins/codeowners/backend/CodeOwnerConfig.java
@@ -306,6 +306,11 @@
       return folderPath().resolve(fileName().orElse(defaultCodeOwnerConfigFileName));
     }
 
+    /** User-readable string representing of this code owner config key. */
+    public String format(CodeOwners codeOwners) {
+      return String.format("%s:%s:%s", project(), shortBranchName(), codeOwners.getFilePath(this));
+    }
+
     /**
      * Creates a builder from this code owner config key.
      *
diff --git a/java/com/google/gerrit/plugins/codeowners/restapi/CheckCodeOwner.java b/java/com/google/gerrit/plugins/codeowners/restapi/CheckCodeOwner.java
index 7b43770..de2e10f 100644
--- a/java/com/google/gerrit/plugins/codeowners/restapi/CheckCodeOwner.java
+++ b/java/com/google/gerrit/plugins/codeowners/restapi/CheckCodeOwner.java
@@ -131,13 +131,9 @@
         ObjectId.fromString(branchResource.getRevision()),
         absolutePath,
         codeOwnerConfig -> {
-          Path codeOwnerConfigFilePath = codeOwners.getFilePath(codeOwnerConfig.key());
           messages.add(
               String.format(
-                  "checking code owner config file %s:%s:%s",
-                  codeOwnerConfig.key().project(),
-                  codeOwnerConfig.key().shortBranchName(),
-                  codeOwnerConfigFilePath));
+                  "checking code owner config file %s", codeOwnerConfig.key().format(codeOwners)));
           OptionalResultWithMessages<PathCodeOwnersResult> pathCodeOwnersResult =
               pathCodeOwnersFactory.create(codeOwnerConfig, absolutePath).resolveCodeOwnerConfig();
           messages.addAll(pathCodeOwnersResult.messages());
@@ -160,6 +156,7 @@
                       "found email %s as code owner in default code owner config", email));
               isDefaultCodeOwner.set(true);
             } else {
+              Path codeOwnerConfigFilePath = codeOwners.getFilePath(codeOwnerConfig.key());
               messages.add(
                   String.format(
                       "found email %s as code owner in %s", email, codeOwnerConfigFilePath));
