Migrate server classes to Flogger
This is the second part of the migration to Flogger. This change
migrates all classes of the 'server' module to Flogger. Classes of the
'httpd' module have been migrated by the predecessor change. Other
modules continue to use slf4j. They should be migrated by follow-up
changes.
During this migration we try to make the log statements more consistent:
- avoid string concatenation
- avoid usage of String.format(...)
Change-Id: I233afc8360af7fef8640394204d0d676cc0d0001
Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/java/com/google/gerrit/server/ApprovalsUtil.java b/java/com/google/gerrit/server/ApprovalsUtil.java
index 8ffe33d..5d5affc 100644
--- a/java/com/google/gerrit/server/ApprovalsUtil.java
+++ b/java/com/google/gerrit/server/ApprovalsUtil.java
@@ -27,6 +27,7 @@
import com.google.common.collect.Lists;
import com.google.common.collect.Ordering;
import com.google.common.collect.Sets;
+import com.google.common.flogger.FluentLogger;
import com.google.common.primitives.Shorts;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.LabelType;
@@ -66,8 +67,6 @@
import java.util.Set;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Utility functions to manipulate patchset approvals.
@@ -82,7 +81,7 @@
*/
@Singleton
public class ApprovalsUtil {
- private static final Logger log = LoggerFactory.getLogger(ApprovalsUtil.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final Ordering<PatchSetApproval> SORT_APPROVALS =
Ordering.from(comparing(PatchSetApproval::getGranted));
@@ -271,11 +270,12 @@
.database(db)
.test(ChangePermission.READ);
} catch (IOException | PermissionBackendException e) {
- log.warn(
- String.format(
+ logger
+ .atWarning()
+ .withCause(e)
+ .log(
"Failed to check if account %d can see change %d",
- accountId.get(), notes.getChangeId().get()),
- e);
+ accountId.get(), notes.getChangeId().get());
return false;
}
}
diff --git a/java/com/google/gerrit/server/BUILD b/java/com/google/gerrit/server/BUILD
index ab2c26b..280a467 100644
--- a/java/com/google/gerrit/server/BUILD
+++ b/java/com/google/gerrit/server/BUILD
@@ -71,13 +71,13 @@
"//lib/commons:lang",
"//lib/commons:net",
"//lib/commons:validator",
+ "//lib/flogger:api",
"//lib/guice",
"//lib/guice:guice-assistedinject",
"//lib/guice:guice-servlet",
"//lib/jgit/org.eclipse.jgit.archive:jgit-archive",
"//lib/jgit/org.eclipse.jgit:jgit",
"//lib/jsoup",
- "//lib/log:api",
"//lib/log:jsonevent-layout",
"//lib/log:log4j",
"//lib/lucene:lucene-analyzers-common",
diff --git a/java/com/google/gerrit/server/CreateGroupPermissionSyncer.java b/java/com/google/gerrit/server/CreateGroupPermissionSyncer.java
index 40800b4..b7bc036 100644
--- a/java/com/google/gerrit/server/CreateGroupPermissionSyncer.java
+++ b/java/com/google/gerrit/server/CreateGroupPermissionSyncer.java
@@ -18,6 +18,7 @@
import static java.util.stream.Collectors.toList;
import com.google.common.collect.Sets;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.AccessSection;
import com.google.gerrit.common.data.Permission;
import com.google.gerrit.common.data.PermissionRule;
@@ -36,8 +37,6 @@
import java.util.HashSet;
import java.util.Set;
import org.eclipse.jgit.errors.ConfigInvalidException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* With groups in NoteDb, the capability of creating a group is expressed as a {@code CREATE}
@@ -52,7 +51,7 @@
*/
@Singleton
public class CreateGroupPermissionSyncer implements ChangeMergedListener {
- private static final Logger log = LoggerFactory.getLogger(CreateGroupPermissionSyncer.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final AllProjectsName allProjects;
private final AllUsersName allUsers;
@@ -135,7 +134,7 @@
try {
syncIfNeeded();
} catch (IOException | ConfigInvalidException e) {
- log.error("Can't sync create group permissions", e);
+ logger.atSevere().withCause(e).log("Can't sync create group permissions");
}
}
}
diff --git a/java/com/google/gerrit/server/LibModuleLoader.java b/java/com/google/gerrit/server/LibModuleLoader.java
index 4ec7d2d..d1067e1 100644
--- a/java/com/google/gerrit/server/LibModuleLoader.java
+++ b/java/com/google/gerrit/server/LibModuleLoader.java
@@ -16,6 +16,7 @@
import static java.util.stream.Collectors.toList;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.inject.Injector;
import com.google.inject.Key;
@@ -24,12 +25,10 @@
import java.util.Arrays;
import java.util.List;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Loads configured Guice modules from {@code gerrit.installModule}. */
public class LibModuleLoader {
- private static final Logger log = LoggerFactory.getLogger(LibModuleLoader.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static List<Module> loadModules(Injector parent) {
Config cfg = getConfig(parent);
@@ -44,7 +43,7 @@
private static Module createModule(Injector injector, String className) {
Module m = injector.getInstance(loadModule(className));
- log.info("Installed module {}", className);
+ logger.atInfo().log("Installed module %s", className);
return m;
}
@@ -54,7 +53,7 @@
return (Class<Module>) Class.forName(className);
} catch (ClassNotFoundException | LinkageError e) {
String msg = "Cannot load LibModule " + className;
- log.error(msg, e);
+ logger.atSevere().withCause(e).log(msg);
throw new ProvisionException(msg, e);
}
}
diff --git a/java/com/google/gerrit/server/RequestCleanup.java b/java/com/google/gerrit/server/RequestCleanup.java
index ea60682..7ed9287 100644
--- a/java/com/google/gerrit/server/RequestCleanup.java
+++ b/java/com/google/gerrit/server/RequestCleanup.java
@@ -14,17 +14,16 @@
package com.google.gerrit.server;
+import com.google.common.flogger.FluentLogger;
import com.google.inject.servlet.RequestScoped;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Registers cleanup activities to be completed when a scope ends. */
@RequestScoped
public class RequestCleanup implements Runnable {
- private static final Logger log = LoggerFactory.getLogger(RequestCleanup.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final List<Runnable> cleanup = new LinkedList<>();
private boolean ran;
@@ -47,7 +46,7 @@
try {
i.next().run();
} catch (Throwable err) {
- log.error("Failed to execute per-request cleanup", err);
+ logger.atSevere().withCause(err).log("Failed to execute per-request cleanup");
}
i.remove();
}
diff --git a/java/com/google/gerrit/server/StarredChangesUtil.java b/java/com/google/gerrit/server/StarredChangesUtil.java
index e2c08ce..3b8aaf4 100644
--- a/java/com/google/gerrit/server/StarredChangesUtil.java
+++ b/java/com/google/gerrit/server/StarredChangesUtil.java
@@ -28,6 +28,7 @@
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSortedSet;
import com.google.common.collect.Sets;
+import com.google.common.flogger.FluentLogger;
import com.google.common.primitives.Ints;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.reviewdb.client.Account;
@@ -70,11 +71,11 @@
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.transport.ReceiveCommand;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class StarredChangesUtil {
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
@AutoValue
public abstract static class StarField {
private static final String SEPARATOR = ":";
@@ -154,8 +155,6 @@
}
}
- private static final Logger log = LoggerFactory.getLogger(StarredChangesUtil.class);
-
public static final String DEFAULT_LABEL = "star";
public static final String IGNORE_LABEL = "ignore";
public static final String REVIEWED_LABEL = "reviewed";
@@ -305,11 +304,12 @@
Ref ref = repo.exactRef(RefNames.refsStarredChanges(changeId, accountId));
return ref != null ? ref.getObjectId() : ObjectId.zeroId();
} catch (IOException e) {
- log.error(
- String.format(
+ logger
+ .atSevere()
+ .withCause(e)
+ .log(
"Getting star object ID for account %d on change %d failed",
- accountId.get(), changeId.get()),
- e);
+ accountId.get(), changeId.get());
return ObjectId.zeroId();
}
}
diff --git a/java/com/google/gerrit/server/WebLinks.java b/java/com/google/gerrit/server/WebLinks.java
index dacbe37..39a2328 100644
--- a/java/com/google/gerrit/server/WebLinks.java
+++ b/java/com/google/gerrit/server/WebLinks.java
@@ -18,6 +18,7 @@
import com.google.common.base.Predicate;
import com.google.common.base.Strings;
import com.google.common.collect.FluentIterable;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.WebLinkInfoCommon;
import com.google.gerrit.extensions.common.DiffWebLinkInfo;
import com.google.gerrit.extensions.common.WebLinkInfo;
@@ -37,19 +38,17 @@
import com.google.inject.Singleton;
import java.util.Collections;
import java.util.List;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class WebLinks {
- private static final Logger log = LoggerFactory.getLogger(WebLinks.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final Predicate<WebLinkInfo> INVALID_WEBLINK =
link -> {
if (link == null) {
return false;
} else if (Strings.isNullOrEmpty(link.name) || Strings.isNullOrEmpty(link.url)) {
- log.warn("{} is missing name and/or url", link.getClass().getName());
+ logger.atWarning().log("%s is missing name and/or url", link.getClass().getName());
return false;
}
return true;
@@ -60,7 +59,7 @@
if (link == null) {
return false;
} else if (Strings.isNullOrEmpty(link.name) || Strings.isNullOrEmpty(link.url)) {
- log.warn("{} is missing name and/or url", link.getClass().getName());
+ logger.atWarning().log("%s is missing name and/or url", link.getClass().getName());
return false;
}
return true;
diff --git a/java/com/google/gerrit/server/account/AccountCacheImpl.java b/java/com/google/gerrit/server/account/AccountCacheImpl.java
index 0648f9f..76bfcfd 100644
--- a/java/com/google/gerrit/server/account/AccountCacheImpl.java
+++ b/java/com/google/gerrit/server/account/AccountCacheImpl.java
@@ -19,6 +19,7 @@
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.google.common.collect.ImmutableMap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.TimeUtil;
import com.google.gerrit.reviewdb.client.Account;
@@ -44,13 +45,11 @@
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import org.eclipse.jgit.errors.ConfigInvalidException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Caches important (but small) account state to avoid database hits. */
@Singleton
public class AccountCacheImpl implements AccountCache {
- private static final Logger log = LoggerFactory.getLogger(AccountCacheImpl.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String BYID_NAME = "accounts";
@@ -89,7 +88,7 @@
try {
return byId.get(accountId).orElse(missing(accountId));
} catch (ExecutionException e) {
- log.warn("Cannot load AccountState for " + accountId, e);
+ logger.atWarning().withCause(e).log("Cannot load AccountState for %s", accountId);
return missing(accountId);
}
}
@@ -99,7 +98,7 @@
try {
return byId.get(accountId);
} catch (ExecutionException e) {
- log.warn("Cannot load AccountState for ID " + accountId, e);
+ logger.atWarning().withCause(e).log("Cannot load AccountState for ID %s", accountId);
return null;
}
}
@@ -126,14 +125,14 @@
try {
futures = executor.invokeAll(callables);
} catch (InterruptedException e) {
- log.error("Cannot load AccountStates", e);
+ logger.atSevere().withCause(e).log("Cannot load AccountStates");
return ImmutableMap.of();
}
for (Future<Optional<AccountState>> f : futures) {
try {
f.get().ifPresent(s -> accountStates.put(s.getAccount().getId(), s));
} catch (InterruptedException | ExecutionException e) {
- log.error("Cannot load AccountState", e);
+ logger.atSevere().withCause(e).log("Cannot load AccountState");
}
}
return accountStates;
@@ -147,7 +146,7 @@
.map(e -> get(e.accountId()))
.orElseGet(Optional::empty);
} catch (IOException | ConfigInvalidException e) {
- log.warn("Cannot load AccountState for username " + username, e);
+ logger.atWarning().withCause(e).log("Cannot load AccountState for username %s", username);
return null;
}
}
diff --git a/java/com/google/gerrit/server/account/AccountDeactivator.java b/java/com/google/gerrit/server/account/AccountDeactivator.java
index 73c47ad..abe3198 100644
--- a/java/com/google/gerrit/server/account/AccountDeactivator.java
+++ b/java/com/google/gerrit/server/account/AccountDeactivator.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.account;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.extensions.restapi.ResourceConflictException;
import com.google.gerrit.lifecycle.LifecycleModule;
@@ -27,12 +28,10 @@
import com.google.inject.Provider;
import java.util.Optional;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Runnable to enable scheduling account deactivations to run periodically */
public class AccountDeactivator implements Runnable {
- private static final Logger log = LoggerFactory.getLogger(AccountDeactivator.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static class Module extends LifecycleModule {
@Override
@@ -84,7 +83,7 @@
@Override
public void run() {
- log.info("Running account deactivations");
+ logger.atInfo().log("Running account deactivations");
try {
int numberOfAccountsDeactivated = 0;
for (AccountState acc : accountQueryProvider.get().query(AccountPredicates.isActive())) {
@@ -92,10 +91,16 @@
numberOfAccountsDeactivated++;
}
}
- log.info(
- "Deactivations complete, {} account(s) were deactivated", numberOfAccountsDeactivated);
+ logger
+ .atInfo()
+ .log(
+ "Deactivations complete, %d account(s) were deactivated",
+ numberOfAccountsDeactivated);
} catch (Exception e) {
- log.error("Failed to complete deactivation of accounts: " + e.getMessage(), e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log("Failed to complete deactivation of accounts: %s", e.getMessage());
}
}
@@ -105,22 +110,22 @@
}
String userName = accountState.getUserName().get();
- log.debug("processing account " + userName);
+ logger.atFine().log("processing account %s", userName);
try {
if (realm.accountBelongsToRealm(accountState.getExternalIds()) && !realm.isActive(userName)) {
sif.deactivate(accountState.getAccount().getId());
- log.info("deactivated account " + userName);
+ logger.atInfo().log("deactivated account %s", userName);
return true;
}
} catch (ResourceConflictException e) {
- log.info("Account {} already deactivated, continuing...", userName);
+ logger.atInfo().log("Account %s already deactivated, continuing...", userName);
} catch (Exception e) {
- log.error(
- "Error deactivating account: {} ({}) {}",
- userName,
- accountState.getAccount().getId(),
- e.getMessage(),
- e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log(
+ "Error deactivating account: %s (%s) %s",
+ userName, accountState.getAccount().getId(), e.getMessage());
}
return false;
}
diff --git a/java/com/google/gerrit/server/account/AccountManager.java b/java/com/google/gerrit/server/account/AccountManager.java
index 009623a..9722be7 100644
--- a/java/com/google/gerrit/server/account/AccountManager.java
+++ b/java/com/google/gerrit/server/account/AccountManager.java
@@ -21,6 +21,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.AccessSection;
import com.google.gerrit.common.data.GlobalCapability;
import com.google.gerrit.common.data.Permission;
@@ -56,13 +57,11 @@
import java.util.function.Consumer;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Tracks authentication related details for user accounts. */
@Singleton
public class AccountManager {
- private static final Logger log = LoggerFactory.getLogger(AccountManager.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final Sequences sequences;
private final Accounts accounts;
@@ -144,24 +143,27 @@
// An inconsistency is detected in the database, having a record for scheme "username:"
// but no record for scheme "gerrit:". Try to recover by linking
// "gerrit:" identity to the existing account.
- log.warn(
- "User {} already has an account; link new identity to the existing account.",
- who.getUserName());
+ logger
+ .atWarning()
+ .log(
+ "User %s already has an account; link new identity to the existing account.",
+ who.getUserName());
return link(existingId.get().accountId(), who);
}
}
// New account, automatically create and return.
- log.debug("External ID not found. Attempting to create new account.");
+ logger.atFine().log("External ID not found. Attempting to create new account.");
return create(who);
}
ExternalId extId = optionalExtId.get();
Optional<AccountState> accountState = byIdCache.get(extId.accountId());
if (!accountState.isPresent()) {
- log.error(
- "Authentication with external ID {} failed. Account {} doesn't exist.",
- extId.key().get(),
- extId.accountId().get());
+ logger
+ .atSevere()
+ .log(
+ "Authentication with external ID %s failed. Account %s doesn't exist.",
+ extId.key().get(), extId.accountId().get());
throw new AccountException("Authentication error, account not found");
}
@@ -195,12 +197,14 @@
}
setInactiveFlag.deactivate(extId.get().accountId());
} catch (Exception e) {
- log.error(
- "Unable to deactivate account "
- + authRequest
+ logger
+ .atSevere()
+ .withCause(e)
+ .log(
+ "Unable to deactivate account %s",
+ authRequest
.getUserName()
- .orElse(" for external ID key " + authRequest.getExternalIdKey().get()),
- e);
+ .orElse(" for external ID key " + authRequest.getExternalIdKey().get()));
}
}
@@ -261,12 +265,13 @@
&& who.getUserName().isPresent()
&& !who.getUserName().equals(user.getUserName())) {
if (user.getUserName().isPresent()) {
- log.warn(
- "Not changing already set username {} to {}",
- user.getUserName().get(),
- who.getUserName().get());
+ logger
+ .atWarning()
+ .log(
+ "Not changing already set username %s to %s",
+ user.getUserName().get(), who.getUserName().get());
} else {
- log.warn("Not setting username to {}", who.getUserName().get());
+ logger.atWarning().log("Not setting username to %s", who.getUserName().get());
}
}
@@ -285,11 +290,11 @@
private AuthResult create(AuthRequest who)
throws OrmException, AccountException, IOException, ConfigInvalidException {
Account.Id newId = new Account.Id(sequences.nextAccountId());
- log.debug("Assigning new Id {} to account", newId);
+ logger.atFine().log("Assigning new Id %s to account", newId);
ExternalId extId =
ExternalId.createWithEmail(who.getExternalIdKey(), newId, who.getEmailAddress());
- log.debug("Created external Id: {}", extId);
+ logger.atFine().log("Created external Id: %s", extId);
checkEmailNotUsed(extId);
ExternalId userNameExtId =
who.getUserName().isPresent() ? createUsername(newId, who.getUserName().get()) : null;
@@ -376,13 +381,15 @@
return;
}
- log.warn(
- "Email {} is already assigned to account {};"
- + " cannot create external ID {} with the same email for account {}.",
- email,
- existingExtIdsWithEmail.iterator().next().accountId().get(),
- extIdToBeCreated.key().get(),
- extIdToBeCreated.accountId().get());
+ logger
+ .atWarning()
+ .log(
+ "Email %s is already assigned to account %s;"
+ + " cannot create external ID %s with the same email for account %s.",
+ email,
+ existingExtIdsWithEmail.iterator().next().accountId().get(),
+ extIdToBeCreated.key().get(),
+ extIdToBeCreated.accountId().get());
throw new AccountException("Email '" + email + "' in use by another account");
}
@@ -414,7 +421,7 @@
public AuthResult link(Account.Id to, AuthRequest who)
throws AccountException, OrmException, IOException, ConfigInvalidException {
Optional<ExternalId> optionalExtId = externalIds.get(who.getExternalIdKey());
- log.debug("Link another authentication identity to an existing account");
+ logger.atFine().log("Link another authentication identity to an existing account");
if (optionalExtId.isPresent()) {
ExternalId extId = optionalExtId.get();
if (!extId.accountId().equals(to)) {
@@ -423,7 +430,7 @@
}
update(who, extId);
} else {
- log.debug("Linking new external ID to the existing account");
+ logger.atFine().log("Linking new external ID to the existing account");
ExternalId newExtId =
ExternalId.createWithEmail(who.getExternalIdKey(), to, who.getEmailAddress());
checkEmailNotUsed(newExtId);
diff --git a/java/com/google/gerrit/server/account/AccountState.java b/java/com/google/gerrit/server/account/AccountState.java
index 14a0e92..e56ad72 100644
--- a/java/com/google/gerrit/server/account/AccountState.java
+++ b/java/com/google/gerrit/server/account/AccountState.java
@@ -23,6 +23,7 @@
import com.google.common.cache.CacheBuilder;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.client.DiffPreferencesInfo;
import com.google.gerrit.extensions.client.EditPreferencesInfo;
@@ -41,8 +42,6 @@
import java.util.Optional;
import org.apache.commons.codec.DecoderException;
import org.eclipse.jgit.lib.ObjectId;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Superset of all information related to an Account. This includes external IDs, project watches,
@@ -52,7 +51,7 @@
* account cache (see {@link AccountCache#get(Account.Id)}).
*/
public class AccountState {
- private static final Logger logger = LoggerFactory.getLogger(AccountState.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static final Function<AccountState, Account.Id> ACCOUNT_ID_FUNCTION =
a -> a.getAccount().getId();
@@ -224,8 +223,7 @@
try {
return HashedPassword.decode(hashedStr).checkPassword(password);
} catch (DecoderException e) {
- logger.error(
- String.format("DecoderException for user %s: %s ", username, e.getMessage()));
+ logger.atSevere().log("DecoderException for user %s: %s ", username, e.getMessage());
return false;
}
}
diff --git a/java/com/google/gerrit/server/account/Accounts.java b/java/com/google/gerrit/server/account/Accounts.java
index 62b1d87..7dff74c 100644
--- a/java/com/google/gerrit/server/account/Accounts.java
+++ b/java/com/google/gerrit/server/account/Accounts.java
@@ -18,6 +18,7 @@
import static java.util.stream.Collectors.toList;
import static java.util.stream.Collectors.toSet;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.RefNames;
import com.google.gerrit.server.account.externalids.ExternalIds;
@@ -35,13 +36,11 @@
import java.util.stream.Stream;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.Repository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Class to access accounts. */
@Singleton
public class Accounts {
- private static final Logger log = LoggerFactory.getLogger(Accounts.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final GitRepositoryManager repoManager;
private final AllUsersName allUsersName;
@@ -85,7 +84,7 @@
try {
read(repo, accountId).ifPresent(accounts::add);
} catch (Exception e) {
- log.error(String.format("Ignoring invalid account %s", accountId.get()), e);
+ logger.atSevere().withCause(e).log("Ignoring invalid account %s", accountId);
}
}
}
diff --git a/java/com/google/gerrit/server/account/GroupCacheImpl.java b/java/com/google/gerrit/server/account/GroupCacheImpl.java
index 56c9f76..e7aae15 100644
--- a/java/com/google/gerrit/server/account/GroupCacheImpl.java
+++ b/java/com/google/gerrit/server/account/GroupCacheImpl.java
@@ -16,6 +16,7 @@
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.AccountGroup;
import com.google.gerrit.server.cache.CacheModule;
import com.google.gerrit.server.group.InternalGroup;
@@ -29,13 +30,11 @@
import com.google.inject.name.Named;
import java.util.Optional;
import java.util.concurrent.ExecutionException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Tracks group objects in memory for efficient access. */
@Singleton
public class GroupCacheImpl implements GroupCache {
- private static final Logger log = LoggerFactory.getLogger(GroupCacheImpl.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String BYID_NAME = "groups";
private static final String BYNAME_NAME = "groups_byname";
@@ -82,7 +81,7 @@
try {
return byId.get(groupId);
} catch (ExecutionException e) {
- log.warn("Cannot load group {}", groupId, e);
+ logger.atWarning().withCause(e).log("Cannot load group %s", groupId);
return Optional.empty();
}
}
@@ -95,7 +94,7 @@
try {
return byName.get(name.get());
} catch (ExecutionException e) {
- log.warn("Cannot look up group {} by name", name.get(), e);
+ logger.atWarning().withCause(e).log("Cannot look up group %s by name", name.get());
return Optional.empty();
}
}
@@ -109,7 +108,7 @@
try {
return byUUID.get(groupUuid.get());
} catch (ExecutionException e) {
- log.warn("Cannot look up group {} by uuid", groupUuid.get(), e);
+ logger.atWarning().withCause(e).log("Cannot look up group %s by uuid", groupUuid.get());
return Optional.empty();
}
}
diff --git a/java/com/google/gerrit/server/account/GroupIncludeCacheImpl.java b/java/com/google/gerrit/server/account/GroupIncludeCacheImpl.java
index ba81c6a..f262a79 100644
--- a/java/com/google/gerrit/server/account/GroupIncludeCacheImpl.java
+++ b/java/com/google/gerrit/server/account/GroupIncludeCacheImpl.java
@@ -21,6 +21,7 @@
import com.google.common.cache.LoadingCache;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.AccountGroup;
import com.google.gerrit.server.cache.CacheModule;
@@ -37,13 +38,12 @@
import java.util.Collection;
import java.util.Collections;
import java.util.concurrent.ExecutionException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Tracks group inclusions in memory for efficient access. */
@Singleton
public class GroupIncludeCacheImpl implements GroupIncludeCache {
- private static final Logger log = LoggerFactory.getLogger(GroupIncludeCacheImpl.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
private static final String PARENT_GROUPS_NAME = "groups_bysubgroup";
private static final String GROUPS_WITH_MEMBER_NAME = "groups_bymember";
private static final String EXTERNAL_NAME = "groups_external";
@@ -94,7 +94,7 @@
try {
return groupsWithMember.get(memberId);
} catch (ExecutionException e) {
- log.warn(String.format("Cannot load groups containing %d as member", memberId.get()));
+ logger.atWarning().withCause(e).log("Cannot load groups containing %s as member", memberId);
return ImmutableSet.of();
}
}
@@ -104,7 +104,7 @@
try {
return parentGroups.get(groupId);
} catch (ExecutionException e) {
- log.warn("Cannot load included groups", e);
+ logger.atWarning().withCause(e).log("Cannot load included groups");
return Collections.emptySet();
}
}
@@ -132,7 +132,7 @@
try {
return external.get(EXTERNAL_NAME);
} catch (ExecutionException e) {
- log.warn("Cannot load set of non-internal groups", e);
+ logger.atWarning().withCause(e).log("Cannot load set of non-internal groups");
return ImmutableList.of();
}
}
diff --git a/java/com/google/gerrit/server/account/Preferences.java b/java/com/google/gerrit/server/account/Preferences.java
index 07793bb..aa09675 100644
--- a/java/com/google/gerrit/server/account/Preferences.java
+++ b/java/com/google/gerrit/server/account/Preferences.java
@@ -30,6 +30,7 @@
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.client.DiffPreferencesInfo;
import com.google.gerrit.extensions.client.EditPreferencesInfo;
@@ -54,8 +55,6 @@
import org.eclipse.jgit.lib.CommitBuilder;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.Repository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Parses/writes preferences from/to a {@link Config} file.
@@ -86,7 +85,7 @@
* <p>The preferences are lazily parsed.
*/
public class Preferences {
- private static final Logger log = LoggerFactory.getLogger(Preferences.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static final String PREFERENCES_CONFIG = "preferences.config";
@@ -339,7 +338,7 @@
}
}
} catch (IllegalAccessException e) {
- log.error("Failed to apply default general preferences", e);
+ logger.atSevere().withCause(e).log("Failed to apply default general preferences");
return GeneralPreferencesInfo.defaults();
}
return result;
@@ -358,7 +357,7 @@
}
}
} catch (IllegalAccessException e) {
- log.error("Failed to apply default diff preferences", e);
+ logger.atSevere().withCause(e).log("Failed to apply default diff preferences");
return DiffPreferencesInfo.defaults();
}
return result;
@@ -377,7 +376,7 @@
}
}
} catch (IllegalAccessException e) {
- log.error("Failed to apply default edit preferences", e);
+ logger.atSevere().withCause(e).log("Failed to apply default edit preferences");
return EditPreferencesInfo.defaults();
}
return result;
diff --git a/java/com/google/gerrit/server/account/UniversalGroupBackend.java b/java/com/google/gerrit/server/account/UniversalGroupBackend.java
index fc9b58a..22e9dbd 100644
--- a/java/com/google/gerrit/server/account/UniversalGroupBackend.java
+++ b/java/com/google/gerrit/server/account/UniversalGroupBackend.java
@@ -22,6 +22,7 @@
import com.google.common.collect.ListMultimap;
import com.google.common.collect.MultimapBuilder;
import com.google.common.collect.Sets;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.GroupDescription;
import com.google.gerrit.common.data.GroupReference;
@@ -39,15 +40,13 @@
import java.util.Map;
import java.util.Set;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Universal implementation of the GroupBackend that works with the injected set of GroupBackends.
*/
@Singleton
public class UniversalGroupBackend implements GroupBackend {
- private static final Logger log = LoggerFactory.getLogger(UniversalGroupBackend.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<GroupBackend> backends;
@@ -80,7 +79,7 @@
}
GroupBackend b = backend(uuid);
if (b == null) {
- log.debug("Unknown GroupBackend for UUID: " + uuid);
+ logger.atFine().log("Unknown GroupBackend for UUID: %s", uuid);
return null;
}
return b.get(uuid);
@@ -130,7 +129,7 @@
}
GroupMembership m = membership(uuid);
if (m == null) {
- log.debug("Unknown GroupMembership for UUID: " + uuid);
+ logger.atFine().log("Unknown GroupMembership for UUID: %s", uuid);
return false;
}
return m.contains(uuid);
@@ -146,7 +145,7 @@
}
GroupMembership m = membership(uuid);
if (m == null) {
- log.debug("Unknown GroupMembership for UUID: " + uuid);
+ logger.atFine().log("Unknown GroupMembership for UUID: %s", uuid);
continue;
}
lookups.put(m, uuid);
@@ -176,7 +175,7 @@
}
GroupMembership m = membership(uuid);
if (m == null) {
- log.debug("Unknown GroupMembership for UUID: " + uuid);
+ logger.atFine().log("Unknown GroupMembership for UUID: %s", uuid);
continue;
}
lookups.put(m, uuid);
diff --git a/java/com/google/gerrit/server/account/VersionedAccountDestinations.java b/java/com/google/gerrit/server/account/VersionedAccountDestinations.java
index 1064546..e2f1bc2 100644
--- a/java/com/google/gerrit/server/account/VersionedAccountDestinations.java
+++ b/java/com/google/gerrit/server/account/VersionedAccountDestinations.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.account;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.RefNames;
import com.google.gerrit.server.git.meta.VersionedMetaData;
@@ -21,12 +22,10 @@
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.CommitBuilder;
import org.eclipse.jgit.lib.FileMode;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** User configured named destinations. */
public class VersionedAccountDestinations extends VersionedMetaData {
- private static final Logger log = LoggerFactory.getLogger(VersionedAccountDestinations.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static VersionedAccountDestinations forUser(Account.Id id) {
return new VersionedAccountDestinations(RefNames.refsUsers(id));
@@ -62,7 +61,8 @@
destinations.parseLabel(
label,
readUTF8(path),
- error -> log.error("Error parsing file {}: {}", path, error.getMessage()));
+ error ->
+ logger.atSevere().log("Error parsing file %s: %s", path, error.getMessage()));
}
}
}
diff --git a/java/com/google/gerrit/server/account/VersionedAccountQueries.java b/java/com/google/gerrit/server/account/VersionedAccountQueries.java
index b021d24..eb3f5e6 100644
--- a/java/com/google/gerrit/server/account/VersionedAccountQueries.java
+++ b/java/com/google/gerrit/server/account/VersionedAccountQueries.java
@@ -14,18 +14,17 @@
package com.google.gerrit.server.account;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.RefNames;
import com.google.gerrit.server.git.meta.VersionedMetaData;
import java.io.IOException;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.CommitBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Named Queries for user accounts. */
public class VersionedAccountQueries extends VersionedMetaData {
- private static final Logger log = LoggerFactory.getLogger(VersionedAccountQueries.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static VersionedAccountQueries forUser(Account.Id id) {
return new VersionedAccountQueries(RefNames.refsUsers(id));
@@ -53,7 +52,9 @@
QueryList.parse(
readUTF8(QueryList.FILE_NAME),
error ->
- log.error("Error parsing file {}: {}", QueryList.FILE_NAME, error.getMessage()));
+ logger
+ .atSevere()
+ .log("Error parsing file %s: %s", QueryList.FILE_NAME, error.getMessage()));
}
@Override
diff --git a/java/com/google/gerrit/server/account/externalids/ExternalIdCacheImpl.java b/java/com/google/gerrit/server/account/externalids/ExternalIdCacheImpl.java
index 1f77773..c23dd99 100644
--- a/java/com/google/gerrit/server/account/externalids/ExternalIdCacheImpl.java
+++ b/java/com/google/gerrit/server/account/externalids/ExternalIdCacheImpl.java
@@ -25,6 +25,7 @@
import com.google.common.collect.MultimapBuilder;
import com.google.common.collect.Multimaps;
import com.google.common.collect.SetMultimap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Account;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@@ -36,13 +37,11 @@
import java.util.concurrent.locks.ReentrantLock;
import java.util.function.Consumer;
import org.eclipse.jgit.lib.ObjectId;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Caches external IDs of all accounts. The external IDs are always loaded from NoteDb. */
@Singleton
class ExternalIdCacheImpl implements ExternalIdCache {
- private static final Logger log = LoggerFactory.getLogger(ExternalIdCacheImpl.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final LoadingCache<ObjectId, AllExternalIds> extIdsByAccount;
private final ExternalIdReader externalIdReader;
@@ -154,7 +153,7 @@
update.accept(m);
extIdsByAccount.put(newNotesRev, AllExternalIds.create(m));
} catch (ExecutionException e) {
- log.warn("Cannot update external IDs", e);
+ logger.atWarning().withCause(e).log("Cannot update external IDs");
} finally {
lock.unlock();
}
diff --git a/java/com/google/gerrit/server/account/externalids/ExternalIdNotes.java b/java/com/google/gerrit/server/account/externalids/ExternalIdNotes.java
index 1a3d960..5ef81b0 100644
--- a/java/com/google/gerrit/server/account/externalids/ExternalIdNotes.java
+++ b/java/com/google/gerrit/server/account/externalids/ExternalIdNotes.java
@@ -26,6 +26,7 @@
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
import com.google.common.collect.Streams;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.metrics.Counter0;
import com.google.gerrit.metrics.Description;
@@ -60,8 +61,6 @@
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevTree;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* {@link VersionedMetaData} subclass to update external IDs.
@@ -85,7 +84,7 @@
* accounts for which external IDs have been updated (see {@link #updateCaches()}).
*/
public class ExternalIdNotes extends VersionedMetaData {
- private static final Logger log = LoggerFactory.getLogger(ExternalIdNotes.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final int MAX_NOTE_SZ = 1 << 19;
@@ -358,7 +357,10 @@
try {
b.add(ExternalId.parse(note.getName(), raw, note.getData()));
} catch (ConfigInvalidException | RuntimeException e) {
- log.error(String.format("Ignoring invalid external ID note %s", note.getName()), e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log("Ignoring invalid external ID note %s", note.getName());
}
}
return b.build();
diff --git a/java/com/google/gerrit/server/args4j/ProjectHandler.java b/java/com/google/gerrit/server/args4j/ProjectHandler.java
index 1d40b53..7872812 100644
--- a/java/com/google/gerrit/server/args4j/ProjectHandler.java
+++ b/java/com/google/gerrit/server/args4j/ProjectHandler.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.args4j;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.ProjectUtil;
import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.reviewdb.client.Project;
@@ -32,11 +33,9 @@
import org.kohsuke.args4j.spi.OptionHandler;
import org.kohsuke.args4j.spi.Parameters;
import org.kohsuke.args4j.spi.Setter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class ProjectHandler extends OptionHandler<ProjectState> {
- private static final Logger log = LoggerFactory.getLogger(ProjectHandler.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final ProjectCache projectCache;
private final PermissionBackend permissionBackend;
@@ -89,7 +88,7 @@
} catch (AuthException e) {
throw new CmdLineException(owner, new NoSuchProjectException(nameKey).getMessage());
} catch (PermissionBackendException | IOException e) {
- log.warn("Cannot load project " + nameWithoutSuffix, e);
+ logger.atWarning().withCause(e).log("Cannot load project %s", nameWithoutSuffix);
throw new CmdLineException(owner, new NoSuchProjectException(nameKey).getMessage());
}
diff --git a/java/com/google/gerrit/server/audit/AuditService.java b/java/com/google/gerrit/server/audit/AuditService.java
index bd51824..9528670 100644
--- a/java/com/google/gerrit/server/audit/AuditService.java
+++ b/java/com/google/gerrit/server/audit/AuditService.java
@@ -15,6 +15,7 @@
package com.google.gerrit.server.audit;
import com.google.common.collect.ImmutableSet;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.AccountGroup;
@@ -24,12 +25,10 @@
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.sql.Timestamp;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class AuditService {
- private static final Logger log = LoggerFactory.getLogger(AuditService.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<AuditListener> auditListeners;
private final DynamicSet<GroupAuditListener> groupAuditListeners;
@@ -59,7 +58,7 @@
GroupMemberAuditEvent.create(actor, updatedGroup, addedMembers, addedOn);
auditListener.onAddMembers(event);
} catch (RuntimeException e) {
- log.error("failed to log add accounts to group event", e);
+ logger.atSevere().withCause(e).log("failed to log add accounts to group event");
}
}
}
@@ -75,7 +74,7 @@
GroupMemberAuditEvent.create(actor, updatedGroup, deletedMembers, deletedOn);
auditListener.onDeleteMembers(event);
} catch (RuntimeException e) {
- log.error("failed to log delete accounts from group event", e);
+ logger.atSevere().withCause(e).log("failed to log delete accounts from group event");
}
}
}
@@ -91,7 +90,7 @@
GroupSubgroupAuditEvent.create(actor, updatedGroup, addedSubgroups, addedOn);
auditListener.onAddSubgroups(event);
} catch (RuntimeException e) {
- log.error("failed to log add groups to group event", e);
+ logger.atSevere().withCause(e).log("failed to log add groups to group event");
}
}
}
@@ -107,7 +106,7 @@
GroupSubgroupAuditEvent.create(actor, updatedGroup, deletedSubgroups, deletedOn);
auditListener.onDeleteSubgroups(event);
} catch (RuntimeException e) {
- log.error("failed to log delete groups from group event", e);
+ logger.atSevere().withCause(e).log("failed to log delete groups from group event");
}
}
}
diff --git a/java/com/google/gerrit/server/auth/ldap/Helper.java b/java/com/google/gerrit/server/auth/ldap/Helper.java
index fe57374..081d0a8 100644
--- a/java/com/google/gerrit/server/auth/ldap/Helper.java
+++ b/java/com/google/gerrit/server/auth/ldap/Helper.java
@@ -17,6 +17,7 @@
import com.google.common.base.Throwables;
import com.google.common.cache.Cache;
import com.google.common.collect.ImmutableSet;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.ParameterizedString;
import com.google.gerrit.reviewdb.client.AccountGroup;
import com.google.gerrit.server.account.AccountException;
@@ -57,12 +58,10 @@
import javax.security.auth.login.LoginContext;
import javax.security.auth.login.LoginException;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
class Helper {
- private static final Logger log = LoggerFactory.getLogger(Helper.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
static final String LDAP_UUID = "ldap:";
static final String STARTTLS_PROPERTY = Helper.class.getName() + ".startTls";
@@ -155,12 +154,12 @@
tls.close();
}
} catch (IOException | NamingException e) {
- log.warn("Cannot close LDAP startTls handle", e);
+ logger.atWarning().withCause(e).log("Cannot close LDAP startTls handle");
}
try {
ctx.close();
} catch (NamingException e) {
- log.warn("Cannot close LDAP handle", e);
+ logger.atWarning().withCause(e).log("Cannot close LDAP handle");
}
}
@@ -198,7 +197,7 @@
Throwables.throwIfInstanceOf(e.getException(), IOException.class);
Throwables.throwIfInstanceOf(e.getException(), NamingException.class);
Throwables.throwIfInstanceOf(e.getException(), RuntimeException.class);
- log.warn("Internal error", e.getException());
+ logger.atWarning().withCause(e.getException()).log("Internal error");
return null;
} finally {
ctx.logout();
@@ -345,7 +344,7 @@
}
}
} catch (NamingException e) {
- log.warn("Could not find group {}", groupDN, e);
+ logger.atWarning().withCause(e).log("Could not find group %s", groupDN);
}
cachedParentsDNs = dns.build();
parentGroups.put(groupDN, cachedParentsDNs);
@@ -476,11 +475,13 @@
try {
return LdapType.guessType(ctx);
} catch (NamingException e) {
- log.warn(
- "Cannot discover type of LDAP server at {},"
- + " assuming the server is RFC 2307 compliant.",
- server,
- e);
+ logger
+ .atWarning()
+ .withCause(e)
+ .log(
+ "Cannot discover type of LDAP server at %s,"
+ + " assuming the server is RFC 2307 compliant.",
+ server);
return LdapType.RFC_2307;
}
}
diff --git a/java/com/google/gerrit/server/auth/ldap/LdapAuthBackend.java b/java/com/google/gerrit/server/auth/ldap/LdapAuthBackend.java
index 7f7152d..f31954e 100644
--- a/java/com/google/gerrit/server/auth/ldap/LdapAuthBackend.java
+++ b/java/com/google/gerrit/server/auth/ldap/LdapAuthBackend.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.auth.ldap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.client.AuthType;
import com.google.gerrit.server.account.AccountException;
import com.google.gerrit.server.auth.AuthBackend;
@@ -33,12 +34,10 @@
import javax.naming.directory.DirContext;
import javax.security.auth.login.LoginException;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Implementation of AuthBackend for the LDAP authentication system. */
public class LdapAuthBackend implements AuthBackend {
- private static final Logger log = LoggerFactory.getLogger(LdapAuthBackend.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final Helper helper;
private final AuthConfig authConfig;
@@ -90,13 +89,13 @@
helper.close(ctx);
}
} catch (AccountException e) {
- log.error("Cannot query LDAP to authenticate user", e);
+ logger.atSevere().withCause(e).log("Cannot query LDAP to authenticate user");
throw new InvalidCredentialsException("Cannot query LDAP for account", e);
} catch (IOException | NamingException e) {
- log.error("Cannot query LDAP to authenticate user", e);
+ logger.atSevere().withCause(e).log("Cannot query LDAP to authenticate user");
throw new AuthException("Cannot query LDAP for account", e);
} catch (LoginException e) {
- log.error("Cannot authenticate server via JAAS", e);
+ logger.atSevere().withCause(e).log("Cannot authenticate server via JAAS");
throw new AuthException("Cannot query LDAP for account", e);
}
}
diff --git a/java/com/google/gerrit/server/auth/ldap/LdapGroupBackend.java b/java/com/google/gerrit/server/auth/ldap/LdapGroupBackend.java
index bb3d6f8..c338cd3 100644
--- a/java/com/google/gerrit/server/auth/ldap/LdapGroupBackend.java
+++ b/java/com/google/gerrit/server/auth/ldap/LdapGroupBackend.java
@@ -22,6 +22,7 @@
import com.google.common.cache.LoadingCache;
import com.google.common.collect.Sets;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.GroupDescription;
import com.google.gerrit.common.data.GroupReference;
@@ -51,12 +52,10 @@
import javax.naming.ldap.LdapName;
import javax.naming.ldap.Rdn;
import javax.security.auth.login.LoginException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Implementation of GroupBackend for the LDAP group system. */
public class LdapGroupBackend implements GroupBackend {
- static final Logger log = LoggerFactory.getLogger(LdapGroupBackend.class);
+ static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String LDAP_NAME = "ldap/";
private static final String GROUPNAME = "groupname";
@@ -103,7 +102,7 @@
return cn;
}
} catch (InvalidNameException e) {
- log.warn("Cannot parse LDAP dn for cn", e);
+ logger.atWarning().withCause(e).log("Cannot parse LDAP dn for cn");
}
return dn;
}
@@ -127,7 +126,7 @@
return null;
}
} catch (ExecutionException e) {
- log.warn("Cannot lookup group {} in LDAP", groupDn, e);
+ logger.atWarning().withCause(e).log("Cannot lookup group %s in LDAP", groupDn);
return null;
}
}
@@ -217,7 +216,7 @@
helper.close(ctx);
}
} catch (IOException | NamingException | LoginException e) {
- log.warn("Cannot query LDAP for groups matching requested name", e);
+ logger.atWarning().withCause(e).log("Cannot query LDAP for groups matching requested name");
}
return out;
}
diff --git a/java/com/google/gerrit/server/auth/ldap/LdapGroupMembership.java b/java/com/google/gerrit/server/auth/ldap/LdapGroupMembership.java
index 39c8a2f..7f0bd7b 100644
--- a/java/com/google/gerrit/server/auth/ldap/LdapGroupMembership.java
+++ b/java/com/google/gerrit/server/auth/ldap/LdapGroupMembership.java
@@ -65,7 +65,10 @@
try {
membership = new ListGroupMembership(membershipCache.get(id));
} catch (ExecutionException e) {
- LdapGroupBackend.log.warn("Cannot lookup membershipsOf {} in LDAP", id, e);
+ LdapGroupBackend.logger
+ .atWarning()
+ .withCause(e)
+ .log("Cannot lookup membershipsOf %s in LDAP", id);
membership = GroupMembership.EMPTY;
}
}
diff --git a/java/com/google/gerrit/server/auth/ldap/LdapRealm.java b/java/com/google/gerrit/server/auth/ldap/LdapRealm.java
index 4aeac962..8d12d32 100644
--- a/java/com/google/gerrit/server/auth/ldap/LdapRealm.java
+++ b/java/com/google/gerrit/server/auth/ldap/LdapRealm.java
@@ -19,6 +19,7 @@
import com.google.common.base.Strings;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.GroupReference;
import com.google.gerrit.common.data.ParameterizedString;
import com.google.gerrit.extensions.client.AccountFieldName;
@@ -56,12 +57,10 @@
import javax.naming.directory.DirContext;
import javax.security.auth.login.LoginException;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
class LdapRealm extends AbstractRealm {
- private static final Logger log = LoggerFactory.getLogger(LdapRealm.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
static final String LDAP = "com.sun.jndi.ldap.LdapCtxFactory";
static final String USERNAME = "username";
@@ -196,7 +195,7 @@
String configOption, String suppliedValue, boolean disabledByBackend) {
if (disabledByBackend && !Strings.isNullOrEmpty(suppliedValue)) {
String msg = String.format("LDAP backend doesn't support: ldap.%s", configOption);
- log.error(msg);
+ logger.atSevere().log(msg);
throw new IllegalArgumentException(msg);
}
}
@@ -290,10 +289,10 @@
helper.close(ctx);
}
} catch (IOException | NamingException e) {
- log.error("Cannot query LDAP to authenticate user", e);
+ logger.atSevere().withCause(e).log("Cannot query LDAP to authenticate user");
throw new AuthenticationUnavailableException("Cannot query LDAP for account", e);
} catch (LoginException e) {
- log.error("Cannot authenticate server via JAAS", e);
+ logger.atSevere().withCause(e).log("Cannot authenticate server via JAAS");
throw new AuthenticationUnavailableException("Cannot query LDAP for account", e);
}
}
@@ -312,7 +311,7 @@
Optional<Account.Id> id = usernameCache.get(accountName);
return id != null ? id.orElse(null) : null;
} catch (ExecutionException e) {
- log.warn("Cannot lookup account {} in LDAP", accountName, e);
+ logger.atWarning().withCause(e).log("Cannot lookup account %s in LDAP", accountName);
return null;
}
}
diff --git a/java/com/google/gerrit/server/cache/h2/BUILD b/java/com/google/gerrit/server/cache/h2/BUILD
index f8d0105..96eba1c 100644
--- a/java/com/google/gerrit/server/cache/h2/BUILD
+++ b/java/com/google/gerrit/server/cache/h2/BUILD
@@ -9,8 +9,8 @@
"//java/com/google/gerrit/server",
"//lib:guava",
"//lib:h2",
+ "//lib/flogger:api",
"//lib/guice",
"//lib/jgit/org.eclipse.jgit:jgit",
- "//lib/log:api",
],
)
diff --git a/java/com/google/gerrit/server/cache/h2/H2CacheFactory.java b/java/com/google/gerrit/server/cache/h2/H2CacheFactory.java
index 451540d..a1cc1c2 100644
--- a/java/com/google/gerrit/server/cache/h2/H2CacheFactory.java
+++ b/java/com/google/gerrit/server/cache/h2/H2CacheFactory.java
@@ -17,6 +17,7 @@
import com.google.common.cache.Cache;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
+import com.google.common.flogger.FluentLogger;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.extensions.registration.DynamicMap;
@@ -42,12 +43,10 @@
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
class H2CacheFactory implements PersistentCacheFactory, LifecycleListener {
- private static final Logger log = LoggerFactory.getLogger(H2CacheFactory.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final MemoryCacheFactory memCacheFactory;
private final Config config;
@@ -99,15 +98,15 @@
try {
Files.createDirectories(loc);
} catch (IOException e) {
- log.warn("Can't create disk cache: " + loc.toAbsolutePath());
+ logger.atWarning().log("Can't create disk cache: %s", loc.toAbsolutePath());
return null;
}
}
if (!Files.isWritable(loc)) {
- log.warn("Can't write to disk cache: " + loc.toAbsolutePath());
+ logger.atWarning().log("Can't write to disk cache: %s", loc.toAbsolutePath());
return null;
}
- log.info("Enabling disk cache " + loc.toAbsolutePath());
+ logger.atInfo().log("Enabling disk cache %s", loc.toAbsolutePath());
return loc;
}
@@ -132,16 +131,16 @@
List<Runnable> pending = executor.shutdownNow();
if (executor.awaitTermination(15, TimeUnit.MINUTES)) {
if (pending != null && !pending.isEmpty()) {
- log.info(String.format("Finishing %d disk cache updates", pending.size()));
+ logger.atInfo().log("Finishing %d disk cache updates", pending.size());
for (Runnable update : pending) {
update.run();
}
}
} else {
- log.info("Timeout waiting for disk cache to close");
+ logger.atInfo().log("Timeout waiting for disk cache to close");
}
} catch (InterruptedException e) {
- log.warn("Interrupted waiting for disk cache to shutdown");
+ logger.atWarning().log("Interrupted waiting for disk cache to shutdown");
}
}
synchronized (caches) {
diff --git a/java/com/google/gerrit/server/cache/h2/H2CacheImpl.java b/java/com/google/gerrit/server/cache/h2/H2CacheImpl.java
index 7db1a35..a2af508 100644
--- a/java/com/google/gerrit/server/cache/h2/H2CacheImpl.java
+++ b/java/com/google/gerrit/server/cache/h2/H2CacheImpl.java
@@ -21,6 +21,7 @@
import com.google.common.cache.CacheStats;
import com.google.common.cache.LoadingCache;
import com.google.common.collect.ImmutableSet;
+import com.google.common.flogger.FluentLogger;
import com.google.common.hash.BloomFilter;
import com.google.gerrit.common.TimeUtil;
import com.google.gerrit.server.cache.CacheSerializer;
@@ -46,8 +47,6 @@
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
import org.h2.jdbc.JdbcSQLException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Hybrid in-memory and database backed cache built on H2.
@@ -71,7 +70,7 @@
* @see H2CacheFactory
*/
public class H2CacheImpl<K, V> extends AbstractLoadingCache<K, V> implements PersistentCache {
- private static final Logger log = LoggerFactory.getLogger(H2CacheImpl.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final ImmutableSet<String> OLD_CLASS_NAMES =
ImmutableSet.of("com.google.gerrit.server.change.ChangeKind");
@@ -347,11 +346,12 @@
// most likely bumping serialVersionUID rather than using the new versioning in the
// CacheBinding. That's ok; we'll continue to support both for now.
// TODO(dborowitz): Remove this case when Java serialization is no longer used.
- log.warn(
- "Entries cached for "
- + url
- + " have an incompatible class and can't be deserialized. "
- + "Cache is flushed.");
+ logger
+ .atWarning()
+ .log(
+ "Entries cached for %s have an incompatible class and can't be deserialized. "
+ + "Cache is flushed.",
+ url);
invalidateAll();
} else {
throw e;
@@ -359,7 +359,7 @@
}
return b;
} catch (IOException | SQLException e) {
- log.warn("Cannot build BloomFilter for " + url + ": " + e.getMessage());
+ logger.atWarning().log("Cannot build BloomFilter for %s: %s", url, e.getMessage());
c = close(c);
return null;
} finally {
@@ -404,7 +404,7 @@
}
} catch (IOException | SQLException e) {
if (!isOldClassNameError(e)) {
- log.warn("Cannot read cache " + url + " for " + key, e);
+ logger.atWarning().withCause(e).log("Cannot read cache %s for %s", url, key);
}
c = close(c);
return null;
@@ -475,7 +475,7 @@
c.put.clearParameters();
}
} catch (IOException | SQLException e) {
- log.warn("Cannot put into cache " + url, e);
+ logger.atWarning().withCause(e).log("Cannot put into cache %s", url);
c = close(c);
} finally {
release(c);
@@ -488,7 +488,7 @@
c = acquire();
invalidate(c, key);
} catch (IOException | SQLException e) {
- log.warn("Cannot invalidate cache " + url, e);
+ logger.atWarning().withCause(e).log("Cannot invalidate cache %s", url);
c = close(c);
} finally {
release(c);
@@ -517,7 +517,7 @@
}
bloomFilter = newBloomFilter();
} catch (SQLException e) {
- log.warn("Cannot invalidate cache " + url, e);
+ logger.atWarning().withCause(e).log("Cannot invalidate cache %s", url);
c = close(c);
} finally {
release(c);
@@ -531,8 +531,11 @@
try (PreparedStatement ps = c.conn.prepareStatement("DELETE FROM data WHERE version!=?")) {
ps.setInt(1, version);
int oldEntries = ps.executeUpdate();
- log.info(
- "Pruned {} entries not matching version {} from cache {}", oldEntries, version, url);
+ logger
+ .atInfo()
+ .log(
+ "Pruned %d entries not matching version %d from cache %s",
+ oldEntries, version, url);
}
try (Statement s = c.conn.createStatement()) {
// Compute size without restricting to version (although obsolete data was just pruned
@@ -560,7 +563,7 @@
}
}
} catch (IOException | SQLException e) {
- log.warn("Cannot prune cache " + url, e);
+ logger.atWarning().withCause(e).log("Cannot prune cache %s", url);
c = close(c);
} finally {
release(c);
@@ -582,7 +585,7 @@
}
}
} catch (SQLException e) {
- log.warn("Cannot get DiskStats for " + url, e);
+ logger.atWarning().withCause(e).log("Cannot get DiskStats for %s", url);
c = close(c);
} finally {
release(c);
@@ -653,7 +656,7 @@
try {
conn.close();
} catch (SQLException e) {
- log.warn("Cannot close connection to " + url, e);
+ logger.atWarning().withCause(e).log("Cannot close connection to %s", url);
} finally {
conn = null;
}
@@ -665,7 +668,7 @@
try {
ps.close();
} catch (SQLException e) {
- log.warn("Cannot close statement for " + url, e);
+ logger.atWarning().withCause(e).log("Cannot close statement for %s", url);
}
}
return null;
diff --git a/java/com/google/gerrit/server/change/AbandonOp.java b/java/com/google/gerrit/server/change/AbandonOp.java
index 2543f76..5affd5c 100644
--- a/java/com/google/gerrit/server/change/AbandonOp.java
+++ b/java/com/google/gerrit/server/change/AbandonOp.java
@@ -16,6 +16,7 @@
import com.google.common.base.Strings;
import com.google.common.collect.ListMultimap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.api.changes.RecipientType;
@@ -38,11 +39,9 @@
import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import com.google.inject.assistedinject.Assisted;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class AbandonOp implements BatchUpdateOp {
- private static final Logger log = LoggerFactory.getLogger(AbandonOp.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final AbandonedSender.Factory abandonedSenderFactory;
private final ChangeMessagesUtil cmUtil;
@@ -133,7 +132,7 @@
cm.setAccountsToNotify(accountsToNotify);
cm.send();
} catch (Exception e) {
- log.error("Cannot email update for change " + change.getId(), e);
+ logger.atSevere().withCause(e).log("Cannot email update for change %s", change.getId());
}
changeAbandoned.fire(change, patchSet, accountState, msgTxt, ctx.getWhen(), notifyHandling);
}
diff --git a/java/com/google/gerrit/server/change/AbandonUtil.java b/java/com/google/gerrit/server/change/AbandonUtil.java
index a01ad9e..f8f526c 100644
--- a/java/com/google/gerrit/server/change/AbandonUtil.java
+++ b/java/com/google/gerrit/server/change/AbandonUtil.java
@@ -16,6 +16,7 @@
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.ListMultimap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.index.query.QueryParseException;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.InternalUser;
@@ -32,12 +33,10 @@
import java.util.Collection;
import java.util.List;
import java.util.concurrent.TimeUnit;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class AbandonUtil {
- private static final Logger log = LoggerFactory.getLogger(AbandonUtil.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final ChangeCleanupConfig cfg;
private final Provider<ChangeQueryProcessor> queryProvider;
@@ -93,12 +92,15 @@
msg.append(" ").append(change.getId().get());
}
msg.append(".");
- log.error(msg.toString(), e);
+ logger.atSevere().withCause(e).log(msg.toString());
}
}
- log.info("Auto-Abandoned {} of {} changes.", count, changesToAbandon.size());
+ logger.atInfo().log("Auto-Abandoned %d of %d changes.", count, changesToAbandon.size());
} catch (QueryParseException | OrmException e) {
- log.error("Failed to query inactive open changes for auto-abandoning.", e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log("Failed to query inactive open changes for auto-abandoning.");
}
}
@@ -116,11 +118,12 @@
if (!changesToAbandon.isEmpty()) {
validChanges.add(cd);
} else {
- log.debug(
- "Change data with id \"{}\" does not satisfy the query \"{}\""
- + " any more, hence skipping it in clean up",
- cd.getId(),
- query);
+ logger
+ .atFine()
+ .log(
+ "Change data with id \"%s\" does not satisfy the query \"%s\""
+ + " any more, hence skipping it in clean up",
+ cd.getId(), query);
}
}
return validChanges;
diff --git a/java/com/google/gerrit/server/change/ChangeCleanupRunner.java b/java/com/google/gerrit/server/change/ChangeCleanupRunner.java
index a887760..b24d3ce 100644
--- a/java/com/google/gerrit/server/change/ChangeCleanupRunner.java
+++ b/java/com/google/gerrit/server/change/ChangeCleanupRunner.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.change;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.gerrit.lifecycle.LifecycleModule;
@@ -25,12 +26,10 @@
import com.google.gerrit.server.util.OneOffRequestContext;
import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Runnable to enable scheduling change cleanups to run periodically */
public class ChangeCleanupRunner implements Runnable {
- private static final Logger log = LoggerFactory.getLogger(ChangeCleanupRunner.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static class Module extends LifecycleModule {
@Override
@@ -76,7 +75,7 @@
@Override
public void run() {
- log.info("Running change cleanups.");
+ logger.atInfo().log("Running change cleanups.");
try (ManualRequestContext ctx = oneOffRequestContext.open()) {
// abandonInactiveOpenChanges skips failures instead of throwing, so retrying will never
// actually happen. For the purposes of this class that is fine: they'll get tried again the
@@ -87,7 +86,7 @@
return null;
});
} catch (RestApiException | UpdateException | OrmException e) {
- log.error("Failed to cleanup changes.", e);
+ logger.atSevere().withCause(e).log("Failed to cleanup changes.");
}
}
diff --git a/java/com/google/gerrit/server/change/ChangeInserter.java b/java/com/google/gerrit/server/change/ChangeInserter.java
index 34cbea3..800cbbc 100644
--- a/java/com/google/gerrit/server/change/ChangeInserter.java
+++ b/java/com/google/gerrit/server/change/ChangeInserter.java
@@ -23,6 +23,7 @@
import com.google.common.base.MoreObjects;
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.ListMultimap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.FooterConstants;
import com.google.gerrit.common.data.LabelType;
import com.google.gerrit.common.data.LabelTypes;
@@ -80,16 +81,14 @@
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.transport.ReceiveCommand;
import org.eclipse.jgit.util.ChangeIdUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class ChangeInserter implements InsertChangeOp {
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
public interface Factory {
ChangeInserter create(Change.Id cid, ObjectId commitId, String refName);
}
- private static final Logger log = LoggerFactory.getLogger(ChangeInserter.class);
-
private final PermissionBackend permissionBackend;
private final ProjectCache projectCache;
private final PatchSetInfoFactory patchSetInfoFactory;
@@ -468,11 +467,12 @@
.test(ChangePermission.READ)
&& projectState.statePermitsRead();
} catch (PermissionBackendException e) {
- log.warn(
- String.format(
+ logger
+ .atWarning()
+ .withCause(e)
+ .log(
"Failed to check if account %d can see change %d",
- accountId.get(), notes.getChangeId().get()),
- e);
+ accountId.get(), notes.getChangeId().get());
return false;
}
})
@@ -497,7 +497,10 @@
cm.addExtraCC(extraCC);
cm.send();
} catch (Exception e) {
- log.error("Cannot send email for new change " + change.getId(), e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log("Cannot send email for new change %s", change.getId());
}
}
diff --git a/java/com/google/gerrit/server/change/ChangeJson.java b/java/com/google/gerrit/server/change/ChangeJson.java
index 73a7634..4912a60 100644
--- a/java/com/google/gerrit/server/change/ChangeJson.java
+++ b/java/com/google/gerrit/server/change/ChangeJson.java
@@ -57,6 +57,7 @@
import com.google.common.collect.SetMultimap;
import com.google.common.collect.Sets;
import com.google.common.collect.Table;
+import com.google.common.flogger.FluentLogger;
import com.google.common.primitives.Ints;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.LabelType;
@@ -165,8 +166,6 @@
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Produces {@link ChangeInfo} (which is serialized to JSON afterwards) from {@link ChangeData}.
@@ -175,7 +174,7 @@
* ChangeData} objects from different sources.
*/
public class ChangeJson {
- private static final Logger log = LoggerFactory.getLogger(ChangeJson.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static final SubmitRuleOptions SUBMIT_RULE_OPTIONS_LENIENT =
ChangeField.SUBMIT_RULE_OPTIONS_LENIENT.toBuilder().build();
@@ -502,7 +501,10 @@
ensureLoaded(Collections.singleton(cd));
return Optional.of(format(cd, Optional.empty(), false));
} catch (OrmException | RuntimeException e) {
- log.warn("Omitting corrupt change " + cd.getId() + " from results", e);
+ logger
+ .atWarning()
+ .withCause(e)
+ .log("Omitting corrupt change %s from results", cd.getId());
return Optional.empty();
}
});
@@ -517,7 +519,7 @@
try {
c.call().ifPresent(result::add);
} catch (Exception e) {
- log.warn("Omitting change due to exception", e);
+ logger.atWarning().withCause(e).log("Omitting change due to exception");
}
}
return result;
@@ -542,7 +544,7 @@
notes = cd.notes();
} catch (OrmException e) {
String msg = "Error loading change";
- log.warn(msg + " " + cd.getId(), e);
+ logger.atWarning().withCause(e).log(msg + " %s", cd.getId());
ChangeInfo info = new ChangeInfo();
info._number = cd.getId().get();
ProblemInfo p = new ProblemInfo();
@@ -914,7 +916,7 @@
tag = psa.getTag();
date = psa.getGranted();
if (psa.isPostSubmit()) {
- log.warn("unexpected post-submit approval on open change: {}", psa);
+ logger.atWarning().log("unexpected post-submit approval on open change: %s", psa);
}
} else {
// Either the user cannot vote on this label, or they were added as a
@@ -1559,7 +1561,7 @@
}
ProjectState projectState = projectCache.checkedGet(cd.project());
if (projectState == null) {
- log.error("project state for project " + cd.project() + " is null");
+ logger.atSevere().log("project state for project %s is null", cd.project());
return false;
}
return projectState.statePermitsRead();
diff --git a/java/com/google/gerrit/server/change/ChangeKindCacheImpl.java b/java/com/google/gerrit/server/change/ChangeKindCacheImpl.java
index f3ab847..da0b9c1 100644
--- a/java/com/google/gerrit/server/change/ChangeKindCacheImpl.java
+++ b/java/com/google/gerrit/server/change/ChangeKindCacheImpl.java
@@ -21,6 +21,7 @@
import com.google.common.cache.Cache;
import com.google.common.cache.Weigher;
import com.google.common.collect.FluentIterable;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.client.ChangeKind;
import com.google.gerrit.reviewdb.client.Change;
@@ -58,11 +59,9 @@
import org.eclipse.jgit.merge.ThreeWayMerger;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class ChangeKindCacheImpl implements ChangeKindCache {
- private static final Logger log = LoggerFactory.getLogger(ChangeKindCacheImpl.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String ID_CACHE = "change_kind";
@@ -108,8 +107,10 @@
Key key = Key.create(prior, next, useRecursiveMerge);
return new Loader(key, repoManager, project, rw, repoConfig).call();
} catch (IOException e) {
- log.warn(
- "Cannot check trivial rebase of new patch set " + next.name() + " in " + project, e);
+ logger
+ .atWarning()
+ .withCause(e)
+ .log("Cannot check trivial rebase of new patch set %s in %s", next.name(), project);
return ChangeKind.REWORK;
}
}
@@ -345,7 +346,10 @@
Key key = Key.create(prior, next, useRecursiveMerge);
return cache.get(key, new Loader(key, repoManager, project, rw, repoConfig));
} catch (ExecutionException e) {
- log.warn("Cannot check trivial rebase of new patch set " + next.name() + " in " + project, e);
+ logger
+ .atWarning()
+ .withCause(e)
+ .log("Cannot check trivial rebase of new patch set %s in %s", next.name(), project);
return ChangeKind.REWORK;
}
}
@@ -397,12 +401,12 @@
}
} catch (OrmException e) {
// Do nothing; assume we have a complex change
- log.warn(
- "Unable to get change kind for patchSet "
- + patch.getPatchSetId()
- + "of change "
- + change.getId(),
- e);
+ logger
+ .atWarning()
+ .withCause(e)
+ .log(
+ "Unable to get change kind for patchSet %s of change %s",
+ patch.getPatchSetId(), change.getId());
}
}
return kind;
@@ -427,12 +431,12 @@
cache, rw, repo.getConfig(), changeDataFactory.create(db, change), patch);
} catch (IOException e) {
// Do nothing; assume we have a complex change
- log.warn(
- "Unable to get change kind for patchSet "
- + patch.getPatchSetId()
- + "of change "
- + change.getChangeId(),
- e);
+ logger
+ .atWarning()
+ .withCause(e)
+ .log(
+ "Unable to get change kind for patchSet %s of change %s",
+ patch.getPatchSetId(), change.getChangeId());
}
}
return kind;
diff --git a/java/com/google/gerrit/server/change/ChangeResource.java b/java/com/google/gerrit/server/change/ChangeResource.java
index 69193d3..ef8b2f9 100644
--- a/java/com/google/gerrit/server/change/ChangeResource.java
+++ b/java/com/google/gerrit/server/change/ChangeResource.java
@@ -18,6 +18,7 @@
import com.google.common.base.MoreObjects;
import com.google.common.collect.ImmutableList;
+import com.google.common.flogger.FluentLogger;
import com.google.common.hash.Hasher;
import com.google.common.hash.Hashing;
import com.google.gerrit.extensions.restapi.RestResource;
@@ -49,11 +50,9 @@
import java.util.Optional;
import java.util.Set;
import org.eclipse.jgit.lib.ObjectId;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class ChangeResource implements RestResource, HasETag {
- private static final Logger log = LoggerFactory.getLogger(ChangeResource.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
/**
* JSON format version number for ETag computations.
@@ -196,7 +195,7 @@
try {
projectStateTree = projectCache.checkedGet(getProject()).tree();
} catch (IOException e) {
- log.error(String.format("could not load project %s while computing etag", getProject()));
+ logger.atSevere().log("could not load project %s while computing etag", getProject());
projectStateTree = ImmutableList.of();
}
diff --git a/java/com/google/gerrit/server/change/ConsistencyChecker.java b/java/com/google/gerrit/server/change/ConsistencyChecker.java
index c58cde7..cb6e649 100644
--- a/java/com/google/gerrit/server/change/ConsistencyChecker.java
+++ b/java/com/google/gerrit/server/change/ConsistencyChecker.java
@@ -26,6 +26,7 @@
import com.google.common.collect.Iterables;
import com.google.common.collect.MultimapBuilder;
import com.google.common.collect.SetMultimap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.FooterConstants;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.TimeUtil;
@@ -80,8 +81,6 @@
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Checks changes for various kinds of inconsistency and corruption.
@@ -89,7 +88,7 @@
* <p>A single instance may be reused for checking multiple changes, but not concurrently.
*/
public class ConsistencyChecker {
- private static final Logger log = LoggerFactory.getLogger(ConsistencyChecker.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
@AutoValue
public abstract static class Result {
@@ -202,7 +201,7 @@
}
private Result logAndReturnOneProblem(Exception e, ChangeNotes notes, String problem) {
- log.warn("Error checking change " + notes.getChangeId(), e);
+ logger.atWarning().withCause(e).log("Error checking change %s", notes.getChangeId());
return Result.create(notes, ImmutableList.of(problem(problem)));
}
@@ -582,7 +581,7 @@
bu.addOp(notes.getChangeId(), new FixMergedOp(p));
bu.execute();
} catch (UpdateException | RestApiException e) {
- log.warn("Error marking " + notes.getChangeId() + "as merged", e);
+ logger.atWarning().withCause(e).log("Error marking %s as merged", notes.getChangeId());
p.status = Status.FIX_FAILED;
p.outcome = "Error updating status to merged";
}
@@ -623,7 +622,7 @@
}
} catch (IOException e) {
String msg = "Error fixing patch set ref";
- log.warn(msg + ' ' + ps.getId().toRefName(), e);
+ logger.atWarning().withCause(e).log("%s %s", msg, ps.getId().toRefName());
p.status = Status.FIX_FAILED;
p.outcome = msg;
}
@@ -645,7 +644,7 @@
}
} catch (UpdateException | RestApiException e) {
String msg = "Error deleting patch set";
- log.warn(msg + " of change " + ops.get(0).psId.getParentKey(), e);
+ logger.atWarning().withCause(e).log("%s of change %s", msg, ops.get(0).psId.getParentKey());
for (DeletePatchSetFromDbOp op : ops) {
// Overwrite existing statuses that were set before the transaction was
// rolled back.
@@ -777,7 +776,10 @@
}
private void warn(Throwable t) {
- log.warn("Error in consistency check of change " + notes.getChangeId(), t);
+ logger
+ .atWarning()
+ .withCause(t)
+ .log("Error in consistency check of change %s", notes.getChangeId());
}
private Result result() {
diff --git a/java/com/google/gerrit/server/change/EmailReviewComments.java b/java/com/google/gerrit/server/change/EmailReviewComments.java
index 6286a2f..65bef70 100644
--- a/java/com/google/gerrit/server/change/EmailReviewComments.java
+++ b/java/com/google/gerrit/server/change/EmailReviewComments.java
@@ -17,6 +17,7 @@
import static com.google.gerrit.server.CommentsUtil.COMMENT_ORDER;
import com.google.common.collect.ListMultimap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.api.changes.RecipientType;
@@ -43,11 +44,9 @@
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class EmailReviewComments implements Runnable, RequestContext {
- private static final Logger log = LoggerFactory.getLogger(EmailReviewComments.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public interface Factory {
// TODO(dborowitz/wyatta): Rationalize these arguments so HTML and text templates are operating
@@ -150,7 +149,7 @@
cm.setAccountsToNotify(accountsToNotify);
cm.send();
} catch (Exception e) {
- log.error("Cannot email comments for " + patchSet.getId(), e);
+ logger.atSevere().withCause(e).log("Cannot email comments for %s", patchSet.getId());
} finally {
requestContext.setContext(old);
if (db != null) {
diff --git a/java/com/google/gerrit/server/change/IncludedInResolver.java b/java/com/google/gerrit/server/change/IncludedInResolver.java
index 658c91c..820c90f 100644
--- a/java/com/google/gerrit/server/change/IncludedInResolver.java
+++ b/java/com/google/gerrit/server/change/IncludedInResolver.java
@@ -17,6 +17,7 @@
import com.google.common.collect.LinkedListMultimap;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Lists;
+import com.google.common.flogger.FluentLogger;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
@@ -34,13 +35,10 @@
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevFlag;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Resolve in which tags and branches a commit is included. */
public class IncludedInResolver {
-
- private static final Logger log = LoggerFactory.getLogger(IncludedInResolver.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static Result resolve(Repository repo, RevWalk rw, RevCommit commit) throws IOException {
RevFlag flag = newFlag(rw);
@@ -206,13 +204,11 @@
} catch (MissingObjectException notHere) {
// Log the problem with this branch, but keep processing.
//
- log.warn(
- "Reference "
- + ref.getName()
- + " in "
- + repo.getDirectory()
- + " points to dangling object "
- + ref.getObjectId());
+ logger
+ .atWarning()
+ .log(
+ "Reference %s in %s points to dangling object %s",
+ ref.getName(), repo.getDirectory(), ref.getObjectId());
continue;
}
commitToRef.put(commit, ref.getName());
diff --git a/java/com/google/gerrit/server/change/MergeabilityCacheImpl.java b/java/com/google/gerrit/server/change/MergeabilityCacheImpl.java
index b57be15..6e6c2f5c 100644
--- a/java/com/google/gerrit/server/change/MergeabilityCacheImpl.java
+++ b/java/com/google/gerrit/server/change/MergeabilityCacheImpl.java
@@ -22,6 +22,7 @@
import com.google.common.base.MoreObjects;
import com.google.common.cache.Cache;
import com.google.common.cache.Weigher;
+import com.google.common.flogger.FluentLogger;
import com.google.common.util.concurrent.UncheckedExecutionException;
import com.google.gerrit.extensions.client.SubmitType;
import com.google.gerrit.reviewdb.client.Branch;
@@ -46,12 +47,10 @@
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class MergeabilityCacheImpl implements MergeabilityCache {
- private static final Logger log = LoggerFactory.getLogger(MergeabilityCacheImpl.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String CACHE_NAME = "mergeability";
@@ -213,11 +212,12 @@
}
});
} catch (ExecutionException | UncheckedExecutionException e) {
- log.error(
- String.format(
+ logger
+ .atSevere()
+ .withCause(e.getCause())
+ .log(
"Error checking mergeability of %s into %s (%s)",
- key.commit.name(), key.into.name(), key.submitType.name()),
- e.getCause());
+ key.commit.name(), key.into.name(), key.submitType.name());
return false;
}
}
diff --git a/java/com/google/gerrit/server/change/PatchSetInserter.java b/java/com/google/gerrit/server/change/PatchSetInserter.java
index d05d133..126b682 100644
--- a/java/com/google/gerrit/server/change/PatchSetInserter.java
+++ b/java/com/google/gerrit/server/change/PatchSetInserter.java
@@ -22,6 +22,7 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.ListMultimap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.api.changes.RecipientType;
import com.google.gerrit.extensions.restapi.AuthException;
@@ -63,11 +64,9 @@
import java.util.List;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.transport.ReceiveCommand;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class PatchSetInserter implements BatchUpdateOp {
- private static final Logger log = LoggerFactory.getLogger(PatchSetInserter.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public interface Factory {
PatchSetInserter create(ChangeNotes notes, PatchSet.Id psId, ObjectId commitId);
@@ -301,7 +300,10 @@
cm.setAccountsToNotify(accountsToNotify);
cm.send();
} catch (Exception err) {
- log.error("Cannot send email for new patch set on change " + change.getId(), err);
+ logger
+ .atSevere()
+ .withCause(err)
+ .log("Cannot send email for new patch set on change %s", change.getId());
}
}
diff --git a/java/com/google/gerrit/server/change/RebaseUtil.java b/java/com/google/gerrit/server/change/RebaseUtil.java
index bfb1692..bb35d4f 100644
--- a/java/com/google/gerrit/server/change/RebaseUtil.java
+++ b/java/com/google/gerrit/server/change/RebaseUtil.java
@@ -15,6 +15,7 @@
package com.google.gerrit.server.change;
import com.google.auto.value.AutoValue;
+import com.google.common.flogger.FluentLogger;
import com.google.common.primitives.Ints;
import com.google.gerrit.extensions.restapi.ResourceConflictException;
import com.google.gerrit.extensions.restapi.RestApiException;
@@ -38,12 +39,10 @@
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Utility methods related to rebasing changes. */
public class RebaseUtil {
- private static final Logger log = LoggerFactory.getLogger(RebaseUtil.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final Provider<InternalChangeQuery> queryProvider;
private final ChangeNotes.Factory notesFactory;
@@ -69,10 +68,10 @@
} catch (RestApiException e) {
return false;
} catch (OrmException | IOException e) {
- log.warn(
- String.format(
- "Error checking if patch set %s on %s can be rebased", patchSet.getId(), dest),
- e);
+ logger
+ .atWarning()
+ .withCause(e)
+ .log("Error checking if patch set %s on %s can be rebased", patchSet.getId(), dest);
return false;
}
}
diff --git a/java/com/google/gerrit/server/change/SetAssigneeOp.java b/java/com/google/gerrit/server/change/SetAssigneeOp.java
index 74ca54b..7be63b9 100644
--- a/java/com/google/gerrit/server/change/SetAssigneeOp.java
+++ b/java/com/google/gerrit/server/change/SetAssigneeOp.java
@@ -16,6 +16,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.extensions.restapi.ResourceConflictException;
import com.google.gerrit.extensions.restapi.RestApiException;
@@ -35,11 +36,9 @@
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.assistedinject.Assisted;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class SetAssigneeOp implements BatchUpdateOp {
- private static final Logger log = LoggerFactory.getLogger(SetAssigneeOp.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public interface Factory {
SetAssigneeOp create(IdentifiedUser assignee);
@@ -127,7 +126,10 @@
cm.setFrom(user.get().getAccountId());
cm.send();
} catch (Exception err) {
- log.error("Cannot send email to new assignee of change " + change.getId(), err);
+ logger
+ .atSevere()
+ .withCause(err)
+ .log("Cannot send email to new assignee of change %s", change.getId());
}
assigneeChanged.fire(
change, ctx.getAccount(), oldAssignee != null ? oldAssignee.state() : null, ctx.getWhen());
diff --git a/java/com/google/gerrit/server/change/WalkSorter.java b/java/com/google/gerrit/server/change/WalkSorter.java
index 509f774..fe9af9f 100644
--- a/java/com/google/gerrit/server/change/WalkSorter.java
+++ b/java/com/google/gerrit/server/change/WalkSorter.java
@@ -23,6 +23,7 @@
import com.google.common.collect.ListMultimap;
import com.google.common.collect.MultimapBuilder;
import com.google.common.collect.Ordering;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.git.GitRepositoryManager;
@@ -46,8 +47,6 @@
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevFlag;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Helper to sort {@link ChangeData}s based on {@link RevWalk} ordering.
@@ -63,7 +62,7 @@
* of the changes was updated.
*/
public class WalkSorter {
- private static final Logger log = LoggerFactory.getLogger(WalkSorter.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final Ordering<List<PatchSetData>> PROJECT_LIST_SORTER =
Ordering.natural()
@@ -237,7 +236,10 @@
RevCommit c = rw.parseCommit(id);
byCommit.put(c, PatchSetData.create(cd, maxPs, c));
} catch (MissingObjectException | IncorrectObjectTypeException e) {
- log.warn("missing commit " + id.name() + " for patch set " + maxPs.getId(), e);
+ logger
+ .atWarning()
+ .withCause(e)
+ .log("missing commit %s for patch set %s", id.name(), maxPs.getId());
}
}
return byCommit;
diff --git a/java/com/google/gerrit/server/config/AdministrateServerGroupsProvider.java b/java/com/google/gerrit/server/config/AdministrateServerGroupsProvider.java
index 29f288a..d6e61c4 100644
--- a/java/com/google/gerrit/server/config/AdministrateServerGroupsProvider.java
+++ b/java/com/google/gerrit/server/config/AdministrateServerGroupsProvider.java
@@ -15,6 +15,7 @@
package com.google.gerrit.server.config;
import com.google.common.collect.ImmutableSet;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.GroupReference;
import com.google.gerrit.common.data.PermissionRule;
import com.google.gerrit.server.account.GroupBackend;
@@ -25,11 +26,11 @@
import com.google.inject.Inject;
import com.google.inject.Provider;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Loads {@link AdministrateServerGroups} from {@code gerrit.config}. */
public class AdministrateServerGroupsProvider implements Provider<ImmutableSet<GroupReference>> {
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
private final ImmutableSet<GroupReference> groups;
@Inject
@@ -48,8 +49,7 @@
if (g != null) {
builder.add(g);
} else {
- Logger log = LoggerFactory.getLogger(getClass());
- log.warn("Group \"{}\" not available, skipping.", name);
+ logger.atWarning().log("Group \"%s\" not available, skipping.", name);
}
}
groups = builder.build();
diff --git a/java/com/google/gerrit/server/config/GerritServerConfigProvider.java b/java/com/google/gerrit/server/config/GerritServerConfigProvider.java
index e02bf1c..8df21da 100644
--- a/java/com/google/gerrit/server/config/GerritServerConfigProvider.java
+++ b/java/com/google/gerrit/server/config/GerritServerConfigProvider.java
@@ -16,6 +16,7 @@
import static java.util.stream.Collectors.joining;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.server.notedb.NotesMigration;
import com.google.gerrit.server.securestore.SecureStore;
@@ -31,8 +32,6 @@
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.storage.file.FileBasedConfig;
import org.eclipse.jgit.util.FS;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Provides {@link Config} annotated with {@link GerritServerConfig}.
@@ -44,7 +43,7 @@
*/
@Singleton
public class GerritServerConfigProvider implements Provider<Config> {
- private static final Logger log = LoggerFactory.getLogger(GerritServerConfigProvider.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final SitePaths site;
private final SecureStore secureStore;
@@ -78,7 +77,7 @@
public GerritConfig loadConfig() {
FileBasedConfig baseConfig = loadConfig(null, site.gerrit_config);
if (!baseConfig.getFile().exists()) {
- log.info("No " + site.gerrit_config.toAbsolutePath() + "; assuming defaults");
+ logger.atInfo().log("No %s; assuming defaults", site.gerrit_config.toAbsolutePath());
}
FileBasedConfig noteDbConfigOverBaseConfig = loadConfig(baseConfig, site.notedb_config);
diff --git a/java/com/google/gerrit/server/config/GerritServerConfigReloader.java b/java/com/google/gerrit/server/config/GerritServerConfigReloader.java
index 61adadd..1890de8 100644
--- a/java/com/google/gerrit/server/config/GerritServerConfigReloader.java
+++ b/java/com/google/gerrit/server/config/GerritServerConfigReloader.java
@@ -14,18 +14,17 @@
package com.google.gerrit.server.config;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.util.ArrayList;
import java.util.List;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Issues a configuration reload from the GerritServerConfigProvider and notify all listeners. */
@Singleton
public class GerritServerConfigReloader {
- private static final Logger log = LoggerFactory.getLogger(GerritServerConfigReloader.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final GerritServerConfigProvider configProvider;
private final DynamicSet<GerritConfigListener> configListeners;
@@ -42,9 +41,9 @@
* reload is fully completed before a new one starts.
*/
public List<ConfigUpdatedEvent.Update> reloadConfig() {
- log.info("Starting server configuration reload");
+ logger.atInfo().log("Starting server configuration reload");
List<ConfigUpdatedEvent.Update> updates = fireUpdatedConfigEvent(configProvider.updateConfig());
- log.info("Server configuration reload completed succesfully");
+ logger.atInfo().log("Server configuration reload completed succesfully");
return updates;
}
diff --git a/java/com/google/gerrit/server/config/GitwebCgiConfig.java b/java/com/google/gerrit/server/config/GitwebCgiConfig.java
index 153cddc..d7fb83c 100644
--- a/java/com/google/gerrit/server/config/GitwebCgiConfig.java
+++ b/java/com/google/gerrit/server/config/GitwebCgiConfig.java
@@ -17,17 +17,16 @@
import static java.nio.file.Files.isExecutable;
import static java.nio.file.Files.isRegularFile;
+import com.google.common.flogger.FluentLogger;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class GitwebCgiConfig {
- private static final Logger log = LoggerFactory.getLogger(GitwebCgiConfig.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public GitwebCgiConfig disabled() {
return new GitwebCgiConfig();
@@ -84,11 +83,11 @@
} else if (isRegularFile(pkgCgi) && isExecutable(pkgCgi)) {
// Use the OS packaged CGI.
//
- log.debug("Assuming gitweb at " + pkgCgi);
+ logger.atFine().log("Assuming gitweb at %s", pkgCgi);
cgi = pkgCgi;
} else {
- log.warn("gitweb not installed (no " + pkgCgi + " found)");
+ logger.atWarning().log("gitweb not installed (no %s found)", pkgCgi);
cgi = null;
resourcePaths = new String[] {};
}
diff --git a/java/com/google/gerrit/server/config/GitwebConfig.java b/java/com/google/gerrit/server/config/GitwebConfig.java
index 6c0f769..f38572d 100644
--- a/java/com/google/gerrit/server/config/GitwebConfig.java
+++ b/java/com/google/gerrit/server/config/GitwebConfig.java
@@ -19,6 +19,7 @@
import static com.google.common.base.Strings.isNullOrEmpty;
import static com.google.common.base.Strings.nullToEmpty;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.GitwebType;
import com.google.gerrit.common.data.ParameterizedString;
@@ -36,11 +37,9 @@
import com.google.inject.Inject;
import com.google.inject.Singleton;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class GitwebConfig {
- private static final Logger log = LoggerFactory.getLogger(GitwebConfig.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static boolean isDisabled(Config cfg) {
return isEmptyString(cfg, "gitweb", null, "url")
@@ -124,10 +123,10 @@
if (isValidPathSeparator(c)) {
type.setPathSeparator(firstNonNull(c, defaultType.getPathSeparator()));
} else {
- log.warn("Invalid gitweb.pathSeparator: " + c);
+ logger.atWarning().log("Invalid gitweb.pathSeparator: %s", c);
}
} else {
- log.warn("gitweb.pathSeparator is not a single character: " + pathSeparator);
+ logger.atWarning().log("gitweb.pathSeparator is not a single character: %s", pathSeparator);
}
}
return type;
diff --git a/java/com/google/gerrit/server/config/GroupSetProvider.java b/java/com/google/gerrit/server/config/GroupSetProvider.java
index a8c1674..2255a67 100644
--- a/java/com/google/gerrit/server/config/GroupSetProvider.java
+++ b/java/com/google/gerrit/server/config/GroupSetProvider.java
@@ -15,6 +15,7 @@
package com.google.gerrit.server.config;
import com.google.common.collect.ImmutableSet;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.GroupReference;
import com.google.gerrit.reviewdb.client.AccountGroup;
import com.google.gerrit.server.account.GroupBackend;
@@ -25,11 +26,10 @@
import com.google.inject.Provider;
import java.util.List;
import java.util.Set;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Parses groups referenced in the {@code gerrit.config} file. */
public abstract class GroupSetProvider implements Provider<Set<AccountGroup.UUID>> {
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
protected Set<AccountGroup.UUID> groupIds;
@@ -46,8 +46,7 @@
if (g != null) {
builder.add(g.getUUID());
} else {
- Logger log = LoggerFactory.getLogger(getClass());
- log.warn("Group \"{}\" not available, skipping.", n);
+ logger.atWarning().log("Group \"%s\" not available, skipping.", n);
}
}
groupIds = builder.build();
diff --git a/java/com/google/gerrit/server/config/PluginConfigFactory.java b/java/com/google/gerrit/server/config/PluginConfigFactory.java
index a46efb8..69b300d 100644
--- a/java/com/google/gerrit/server/config/PluginConfigFactory.java
+++ b/java/com/google/gerrit/server/config/PluginConfigFactory.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.config;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.plugins.Plugin;
import com.google.gerrit.server.plugins.ReloadPluginListener;
@@ -35,12 +36,11 @@
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.storage.file.FileBasedConfig;
import org.eclipse.jgit.util.FS;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class PluginConfigFactory implements ReloadPluginListener {
- private static final Logger log = LoggerFactory.getLogger(PluginConfigFactory.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
private static final String EXTENSION = ".config";
private final SitePaths site;
@@ -222,7 +222,7 @@
GlobalPluginConfig pluginConfig = new GlobalPluginConfig(pluginName, cfg, secureStore);
pluginConfigs.put(pluginName, pluginConfig);
if (!cfg.getFile().exists()) {
- log.info("No " + pluginConfigFile.toAbsolutePath() + "; assuming defaults");
+ logger.atInfo().log("No %s; assuming defaults", pluginConfigFile.toAbsolutePath());
return pluginConfig;
}
@@ -230,9 +230,9 @@
cfg.load();
} catch (ConfigInvalidException e) {
// This is an error in user input, don't spam logs with a stack trace.
- log.warn("Failed to load " + pluginConfigFile.toAbsolutePath() + ": " + e);
+ logger.atWarning().log("Failed to load %s: %s", pluginConfigFile.toAbsolutePath(), e);
} catch (IOException e) {
- log.warn("Failed to load " + pluginConfigFile.toAbsolutePath(), e);
+ logger.atWarning().withCause(e).log("Failed to load %s", pluginConfigFile.toAbsolutePath());
}
return pluginConfig;
diff --git a/java/com/google/gerrit/server/config/ProjectConfigEntry.java b/java/com/google/gerrit/server/config/ProjectConfigEntry.java
index 4a72ffc..5468550 100644
--- a/java/com/google/gerrit/server/config/ProjectConfigEntry.java
+++ b/java/com/google/gerrit/server/config/ProjectConfigEntry.java
@@ -16,6 +16,7 @@
import static java.util.stream.Collectors.toList;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.annotations.ExtensionPoint;
import com.google.gerrit.extensions.api.projects.ConfigValue;
import com.google.gerrit.extensions.api.projects.ProjectConfigEntryType;
@@ -36,8 +37,6 @@
import org.eclipse.jgit.errors.RepositoryNotFoundException;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Repository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@ExtensionPoint
public class ProjectConfigEntry {
@@ -299,7 +298,7 @@
public void onUpdate(Project.NameKey project, Long oldValue, Long newValue) {}
public static class UpdateChecker implements GitReferenceUpdatedListener {
- private static final Logger log = LoggerFactory.getLogger(UpdateChecker.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final GitRepositoryManager repoManager;
private final DynamicMap<ProjectConfigEntry> pluginConfigEntries;
@@ -350,9 +349,10 @@
}
}
} catch (IOException | ConfigInvalidException e) {
- log.error(
- String.format("Failed to check if plugin config of project %s was updated.", p.get()),
- e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log("Failed to check if plugin config of project %s was updated.", p.get());
}
}
diff --git a/java/com/google/gerrit/server/config/ScheduleConfig.java b/java/com/google/gerrit/server/config/ScheduleConfig.java
index 9fff101..4083184 100644
--- a/java/com/google/gerrit/server/config/ScheduleConfig.java
+++ b/java/com/google/gerrit/server/config/ScheduleConfig.java
@@ -20,6 +20,7 @@
import com.google.auto.value.AutoValue;
import com.google.auto.value.extension.memoized.Memoized;
import com.google.common.annotations.VisibleForTesting;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import java.time.DayOfWeek;
import java.time.Duration;
@@ -32,8 +33,6 @@
import java.util.Optional;
import java.util.concurrent.TimeUnit;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* This class reads a schedule for running a periodic background job from a Git config.
@@ -101,7 +100,7 @@
*/
@AutoValue
public abstract class ScheduleConfig {
- private static final Logger log = LoggerFactory.getLogger(ScheduleConfig.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
@VisibleForTesting static final String KEY_INTERVAL = "interval";
@VisibleForTesting static final String KEY_STARTTIME = "startTime";
@@ -157,28 +156,30 @@
private boolean isInvalidOrMissing(long interval, long initialDelay) {
String key = section() + (subsection() != null ? "." + subsection() : "");
if (interval == MISSING_CONFIG && initialDelay == MISSING_CONFIG) {
- log.info("No schedule configuration for \"{}\".", key);
+ logger.atInfo().log("No schedule configuration for \"%s\".", key);
return true;
}
if (interval == MISSING_CONFIG) {
- log.error(
- "Incomplete schedule configuration for \"{}\" is ignored. Missing value for \"{}\".",
- key,
- key + "." + keyInterval());
+ logger
+ .atSevere()
+ .log(
+ "Incomplete schedule configuration for \"%s\" is ignored. Missing value for \"%s\".",
+ key, key + "." + keyInterval());
return true;
}
if (initialDelay == MISSING_CONFIG) {
- log.error(
- "Incomplete schedule configuration for \"{}\" is ignored. Missing value for \"{}\".",
- key,
- key + "." + keyStartTime());
+ logger
+ .atSevere()
+ .log(
+ "Incomplete schedule configuration for \"%s\" is ignored. Missing value for \"%s\".",
+ key, key + "." + keyStartTime());
return true;
}
if (interval <= 0 || initialDelay < 0) {
- log.error("Invalid schedule configuration for \"{}\" is ignored. ", key);
+ logger.atSevere().log("Invalid schedule configuration for \"%s\" is ignored. ", key);
return true;
}
diff --git a/java/com/google/gerrit/server/config/TrackingFootersProvider.java b/java/com/google/gerrit/server/config/TrackingFootersProvider.java
index 7b23fcc..7017a80 100644
--- a/java/com/google/gerrit/server/config/TrackingFootersProvider.java
+++ b/java/com/google/gerrit/server/config/TrackingFootersProvider.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.config;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.TrackingId;
import com.google.inject.Inject;
import com.google.inject.Provider;
@@ -26,18 +27,17 @@
import java.util.Set;
import java.util.regex.PatternSyntaxException;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Provides a list of all configured {@link TrackingFooter}s. */
@Singleton
public class TrackingFootersProvider implements Provider<TrackingFooters> {
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
private static String TRACKING_ID_TAG = "trackingid";
private static String FOOTER_TAG = "footer";
private static String SYSTEM_TAG = "system";
private static String REGEX_TAG = "match";
private final List<TrackingFooter> trackingFooters = new ArrayList<>();
- private static final Logger log = LoggerFactory.getLogger(TrackingFootersProvider.class);
@Inject
TrackingFootersProvider(@GerritServerConfig Config cfg) {
@@ -50,36 +50,32 @@
if (footers.isEmpty()) {
configValid = false;
- log.error(
- "Missing " + TRACKING_ID_TAG + "." + name + "." + FOOTER_TAG + " in gerrit.config");
+ logger
+ .atSevere()
+ .log("Missing %s.%s.%s in gerrit.config", TRACKING_ID_TAG, name, FOOTER_TAG);
}
String system = cfg.getString(TRACKING_ID_TAG, name, SYSTEM_TAG);
if (system == null || system.isEmpty()) {
configValid = false;
- log.error(
- "Missing " + TRACKING_ID_TAG + "." + name + "." + SYSTEM_TAG + " in gerrit.config");
+ logger
+ .atSevere()
+ .log("Missing %s.%s.%s in gerrit.config", TRACKING_ID_TAG, name, SYSTEM_TAG);
} else if (system.length() > TrackingId.TRACKING_SYSTEM_MAX_CHAR) {
configValid = false;
- log.error(
- "String too long \""
- + system
- + "\" in gerrit.config "
- + TRACKING_ID_TAG
- + "."
- + name
- + "."
- + SYSTEM_TAG
- + " (max "
- + TrackingId.TRACKING_SYSTEM_MAX_CHAR
- + " char)");
+ logger
+ .atSevere()
+ .log(
+ "String too long \"%s\" in gerrit.config %s.%s.%s (max %d char)",
+ system, TRACKING_ID_TAG, name, SYSTEM_TAG, TrackingId.TRACKING_SYSTEM_MAX_CHAR);
}
String match = cfg.getString(TRACKING_ID_TAG, name, REGEX_TAG);
if (match == null || match.isEmpty()) {
configValid = false;
- log.error(
- "Missing " + TRACKING_ID_TAG + "." + name + "." + REGEX_TAG + " in gerrit.config");
+ logger
+ .atSevere()
+ .log("Missing %s.%s.%s in gerrit.config", TRACKING_ID_TAG, name, REGEX_TAG);
}
if (configValid) {
@@ -88,17 +84,11 @@
trackingFooters.add(new TrackingFooter(footer, match, system));
}
} catch (PatternSyntaxException e) {
- log.error(
- "Invalid pattern \""
- + match
- + "\" in gerrit.config "
- + TRACKING_ID_TAG
- + "."
- + name
- + "."
- + REGEX_TAG
- + ": "
- + e.getMessage());
+ logger
+ .atSevere()
+ .log(
+ "Invalid pattern \"%s\" in gerrit.config %s.%s.%s: %s",
+ match, TRACKING_ID_TAG, name, REGEX_TAG, e.getMessage());
}
}
}
diff --git a/java/com/google/gerrit/server/documentation/MarkdownFormatter.java b/java/com/google/gerrit/server/documentation/MarkdownFormatter.java
index 68d2a34..a7f9a05 100644
--- a/java/com/google/gerrit/server/documentation/MarkdownFormatter.java
+++ b/java/com/google/gerrit/server/documentation/MarkdownFormatter.java
@@ -20,6 +20,7 @@
import static org.pegdown.Extensions.SUPPRESS_ALL_HTML;
import com.google.common.base.Strings;
+import com.google.common.flogger.FluentLogger;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
@@ -37,11 +38,9 @@
import org.pegdown.ast.Node;
import org.pegdown.ast.RootNode;
import org.pegdown.ast.TextNode;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class MarkdownFormatter {
- private static final Logger log = LoggerFactory.getLogger(MarkdownFormatter.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String defaultCss;
@@ -51,7 +50,7 @@
try {
src = readPegdownCss(file);
} catch (IOException err) {
- log.warn("Cannot load pegdown.css", err);
+ logger.atWarning().withCause(err).log("Cannot load pegdown.css");
src = "";
}
defaultCss = file.get() ? null : src;
@@ -64,7 +63,7 @@
try {
return readPegdownCss(new AtomicBoolean());
} catch (IOException err) {
- log.warn("Cannot load pegdown.css", err);
+ logger.atWarning().withCause(err).log("Cannot load pegdown.css");
return "";
}
}
diff --git a/java/com/google/gerrit/server/documentation/QueryDocumentationExecutor.java b/java/com/google/gerrit/server/documentation/QueryDocumentationExecutor.java
index eef6d35..c606919 100644
--- a/java/com/google/gerrit/server/documentation/QueryDocumentationExecutor.java
+++ b/java/com/google/gerrit/server/documentation/QueryDocumentationExecutor.java
@@ -16,6 +16,7 @@
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
+import com.google.common.flogger.FluentLogger;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.io.IOException;
@@ -36,12 +37,10 @@
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.IndexOutput;
import org.apache.lucene.store.RAMDirectory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class QueryDocumentationExecutor {
- private static final Logger log = LoggerFactory.getLogger(QueryDocumentationExecutor.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static Map<String, Float> WEIGHTS =
ImmutableMap.of(
@@ -70,7 +69,7 @@
searcher = new IndexSearcher(reader);
parser = new SimpleQueryParser(new StandardAnalyzer(), WEIGHTS);
} catch (IOException e) {
- log.error("Cannot initialize documentation full text index", e);
+ logger.atSevere().withCause(e).log("Cannot initialize documentation full text index");
searcher = null;
parser = null;
}
@@ -107,7 +106,7 @@
byte[] buffer = new byte[4096];
InputStream index = getClass().getResourceAsStream(Constants.INDEX_ZIP);
if (index == null) {
- log.warn("No index available");
+ logger.atWarning().log("No index available");
return null;
}
diff --git a/java/com/google/gerrit/server/edit/tree/ChangeFileContentModification.java b/java/com/google/gerrit/server/edit/tree/ChangeFileContentModification.java
index 3d75e6a..a163b58 100644
--- a/java/com/google/gerrit/server/edit/tree/ChangeFileContentModification.java
+++ b/java/com/google/gerrit/server/edit/tree/ChangeFileContentModification.java
@@ -18,6 +18,7 @@
import static org.eclipse.jgit.lib.Constants.OBJ_BLOB;
import com.google.common.annotations.VisibleForTesting;
+import com.google.common.flogger.FluentLogger;
import com.google.common.io.ByteStreams;
import com.google.gerrit.extensions.restapi.RawInput;
import java.io.IOException;
@@ -32,13 +33,10 @@
import org.eclipse.jgit.lib.ObjectInserter;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** A {@code TreeModification} which changes the content of a file. */
public class ChangeFileContentModification implements TreeModification {
-
- private static final Logger log = LoggerFactory.getLogger(ChangeFileContentModification.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final String filePath;
private final RawInput newContent;
@@ -97,9 +95,9 @@
} catch (IOException e) {
String message =
String.format("Could not change the content of %s", dirCacheEntry.getPathString());
- log.error(message, e);
+ logger.atSevere().withCause(e).log(message);
} catch (InvalidObjectIdException e) {
- log.error("Invalid object id in submodule link", e);
+ logger.atSevere().withCause(e).log("Invalid object id in submodule link");
}
}
diff --git a/java/com/google/gerrit/server/events/EventBroker.java b/java/com/google/gerrit/server/events/EventBroker.java
index 62e8d12..6af0f44 100644
--- a/java/com/google/gerrit/server/events/EventBroker.java
+++ b/java/com/google/gerrit/server/events/EventBroker.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.events;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.registration.DynamicItem;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.extensions.restapi.AuthException;
@@ -37,13 +38,11 @@
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Distributes Events to listeners if they are allowed to see them */
@Singleton
public class EventBroker implements EventDispatcher {
- private static final Logger log = LoggerFactory.getLogger(EventBroker.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static class Module extends LifecycleModule {
@Override
@@ -203,7 +202,9 @@
.getChange();
return isVisibleTo(change, user);
} catch (NoSuchChangeException e) {
- log.debug("Change {} cannot be found, falling back on ref visibility check", cid.id);
+ logger
+ .atFine()
+ .log("Change %s cannot be found, falling back on ref visibility check", cid.id);
}
}
return isVisibleTo(refEvent.getBranchNameKey(), user);
diff --git a/java/com/google/gerrit/server/events/EventFactory.java b/java/com/google/gerrit/server/events/EventFactory.java
index bc9d190..e82ca7e 100644
--- a/java/com/google/gerrit/server/events/EventFactory.java
+++ b/java/com/google/gerrit/server/events/EventFactory.java
@@ -19,6 +19,7 @@
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Lists;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.LabelType;
import com.google.gerrit.common.data.LabelTypes;
@@ -80,12 +81,10 @@
import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class EventFactory {
- private static final Logger log = LoggerFactory.getLogger(EventFactory.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final AccountCache accountCache;
private final Emails emails;
@@ -135,7 +134,7 @@
try (ReviewDb db = schema.open()) {
return asChangeAttribute(db, change);
} catch (OrmException e) {
- log.error("Cannot open database connection", e);
+ logger.atSevere().withCause(e).log("Cannot open database connection");
return new ChangeAttribute();
}
}
@@ -158,7 +157,10 @@
try {
a.commitMessage = changeDataFactory.create(db, change).commitMessage();
} catch (Exception e) {
- log.error("Error while getting full commit message for change {}", a.number, e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log("Error while getting full commit message for change %d", a.number);
}
a.url = getChangeUrl(change);
a.owner = asAccountAttribute(change.getOwner());
@@ -450,9 +452,9 @@
patchSetAttribute.files.add(p);
}
} catch (PatchListObjectTooLargeException e) {
- log.warn("Cannot get patch list: " + e.getMessage());
+ logger.atWarning().log("Cannot get patch list: %s", e.getMessage());
} catch (PatchListNotAvailableException e) {
- log.error("Cannot get patch list", e);
+ logger.atSevere().withCause(e).log("Cannot get patch list");
}
}
@@ -476,7 +478,7 @@
try (ReviewDb db = schema.open()) {
return asPatchSetAttribute(db, revWalk, change, patchSet);
} catch (OrmException e) {
- log.error("Cannot open database connection", e);
+ logger.atSevere().withCause(e).log("Cannot open database connection");
return new PatchSetAttribute();
}
}
@@ -523,11 +525,11 @@
}
p.kind = changeKindCache.getChangeKind(db, change, patchSet);
} catch (IOException | OrmException e) {
- log.error("Cannot load patch set data for {}", patchSet.getId(), e);
+ logger.atSevere().withCause(e).log("Cannot load patch set data for %s", patchSet.getId());
} catch (PatchListObjectTooLargeException e) {
- log.warn(String.format("Cannot get size information for %s: %s", pId, e.getMessage()));
+ logger.atWarning().log("Cannot get size information for %s: %s", pId, e.getMessage());
} catch (PatchListNotAvailableException e) {
- log.error("Cannot get size information for {}.", pId, e);
+ logger.atSevere().withCause(e).log("Cannot get size information for %s.", pId);
}
return p;
}
diff --git a/java/com/google/gerrit/server/events/StreamEventsApiListener.java b/java/com/google/gerrit/server/events/StreamEventsApiListener.java
index a63e1f8..9592238 100644
--- a/java/com/google/gerrit/server/events/StreamEventsApiListener.java
+++ b/java/com/google/gerrit/server/events/StreamEventsApiListener.java
@@ -17,6 +17,7 @@
import com.google.common.base.Supplier;
import com.google.common.base.Suppliers;
import com.google.common.collect.Sets;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.LabelType;
import com.google.gerrit.common.data.LabelTypes;
import com.google.gerrit.extensions.common.AccountInfo;
@@ -69,8 +70,6 @@
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class StreamEventsApiListener
@@ -89,7 +88,7 @@
RevisionCreatedListener,
TopicEditedListener,
VoteDeletedListener {
- private static final Logger log = LoggerFactory.getLogger(StreamEventsApiListener.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static class Module extends AbstractModule {
@Override
@@ -267,7 +266,7 @@
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
- log.error("Failed to dispatch event", e);
+ logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -283,7 +282,7 @@
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
- log.error("Failed to dispatch event", e);
+ logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -301,7 +300,7 @@
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
- log.error("Failed to dispatch event", e);
+ logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -321,7 +320,7 @@
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
- log.error("Failed to dispatch event", e);
+ logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -339,7 +338,7 @@
dispatcher.get().postEvent(change, event);
}
} catch (OrmException | PermissionBackendException e) {
- log.error("Failed to dispatch event", e);
+ logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -366,7 +365,7 @@
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
- log.error("Failed to dispatch event", e);
+ logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -391,7 +390,7 @@
try {
dispatcher.get().postEvent(refName, event);
} catch (PermissionBackendException e) {
- log.error("error while posting event", e);
+ logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -411,7 +410,7 @@
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
- log.error("Failed to dispatch event", e);
+ logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -429,7 +428,7 @@
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
- log.error("Failed to dispatch event", e);
+ logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -447,7 +446,7 @@
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
- log.error("Failed to dispatch event", e);
+ logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -465,7 +464,7 @@
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
- log.error("Failed to dispatch event", e);
+ logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -480,7 +479,7 @@
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
- log.error("Failed to dispatch event", e);
+ logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -495,7 +494,7 @@
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
- log.error("Failed to dispatch event", e);
+ logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
@@ -515,7 +514,7 @@
dispatcher.get().postEvent(change, event);
} catch (OrmException | PermissionBackendException e) {
- log.error("Failed to dispatch event", e);
+ logger.atSevere().withCause(e).log("Failed to dispatch event");
}
}
}
diff --git a/java/com/google/gerrit/server/extensions/events/AssigneeChanged.java b/java/com/google/gerrit/server/extensions/events/AssigneeChanged.java
index 3aeaf43..7320fd3 100644
--- a/java/com/google/gerrit/server/extensions/events/AssigneeChanged.java
+++ b/java/com/google/gerrit/server/extensions/events/AssigneeChanged.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -25,12 +26,10 @@
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.sql.Timestamp;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class AssigneeChanged {
- private static final Logger log = LoggerFactory.getLogger(AssigneeChanged.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<AssigneeChangedListener> listeners;
private final EventUtil util;
@@ -61,7 +60,7 @@
}
}
} catch (OrmException e) {
- log.error("Couldn't fire event", e);
+ logger.atSevere().withCause(e).log("Couldn't fire event");
}
}
diff --git a/java/com/google/gerrit/server/extensions/events/ChangeAbandoned.java b/java/com/google/gerrit/server/extensions/events/ChangeAbandoned.java
index d600240..3a19e97 100644
--- a/java/com/google/gerrit/server/extensions/events/ChangeAbandoned.java
+++ b/java/com/google/gerrit/server/extensions/events/ChangeAbandoned.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -32,12 +33,10 @@
import com.google.inject.Singleton;
import java.io.IOException;
import java.sql.Timestamp;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class ChangeAbandoned {
- private static final Logger log = LoggerFactory.getLogger(ChangeAbandoned.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<ChangeAbandonedListener> listeners;
private final EventUtil util;
@@ -75,13 +74,13 @@
}
}
} catch (PatchListObjectTooLargeException e) {
- log.warn("Couldn't fire event: " + e.getMessage());
+ logger.atWarning().log("Couldn't fire event: %s", e.getMessage());
} catch (PatchListNotAvailableException
| GpgException
| IOException
| OrmException
| PermissionBackendException e) {
- log.error("Couldn't fire event", e);
+ logger.atSevere().withCause(e).log("Couldn't fire event");
}
}
diff --git a/java/com/google/gerrit/server/extensions/events/ChangeMerged.java b/java/com/google/gerrit/server/extensions/events/ChangeMerged.java
index 04dba5c..5b882b8 100644
--- a/java/com/google/gerrit/server/extensions/events/ChangeMerged.java
+++ b/java/com/google/gerrit/server/extensions/events/ChangeMerged.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -32,12 +33,10 @@
import com.google.inject.Singleton;
import java.io.IOException;
import java.sql.Timestamp;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class ChangeMerged {
- private static final Logger log = LoggerFactory.getLogger(ChangeMerged.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<ChangeMergedListener> listeners;
private final EventUtil util;
@@ -69,13 +68,13 @@
}
}
} catch (PatchListObjectTooLargeException e) {
- log.warn("Couldn't fire event: " + e.getMessage());
+ logger.atWarning().log("Couldn't fire event: %s", e.getMessage());
} catch (PatchListNotAvailableException
| GpgException
| IOException
| OrmException
| PermissionBackendException e) {
- log.error("Couldn't fire event", e);
+ logger.atSevere().withCause(e).log("Couldn't fire event");
}
}
diff --git a/java/com/google/gerrit/server/extensions/events/ChangeRestored.java b/java/com/google/gerrit/server/extensions/events/ChangeRestored.java
index deee7e0..d62b6c1 100644
--- a/java/com/google/gerrit/server/extensions/events/ChangeRestored.java
+++ b/java/com/google/gerrit/server/extensions/events/ChangeRestored.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -32,12 +33,10 @@
import com.google.inject.Singleton;
import java.io.IOException;
import java.sql.Timestamp;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class ChangeRestored {
- private static final Logger log = LoggerFactory.getLogger(ChangeRestored.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<ChangeRestoredListener> listeners;
private final EventUtil util;
@@ -69,13 +68,13 @@
}
}
} catch (PatchListObjectTooLargeException e) {
- log.warn("Couldn't fire event: " + e.getMessage());
+ logger.atWarning().log("Couldn't fire event: %s", e.getMessage());
} catch (PatchListNotAvailableException
| GpgException
| IOException
| OrmException
| PermissionBackendException e) {
- log.error("Couldn't fire event", e);
+ logger.atSevere().withCause(e).log("Couldn't fire event");
}
}
diff --git a/java/com/google/gerrit/server/extensions/events/ChangeReverted.java b/java/com/google/gerrit/server/extensions/events/ChangeReverted.java
index 1e91ab3..5f8f8c3 100644
--- a/java/com/google/gerrit/server/extensions/events/ChangeReverted.java
+++ b/java/com/google/gerrit/server/extensions/events/ChangeReverted.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.ChangeInfo;
import com.google.gerrit.extensions.events.ChangeRevertedListener;
@@ -23,12 +24,10 @@
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.sql.Timestamp;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class ChangeReverted {
- private static final Logger log = LoggerFactory.getLogger(ChangeReverted.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<ChangeRevertedListener> listeners;
private final EventUtil util;
@@ -53,7 +52,7 @@
}
}
} catch (OrmException e) {
- log.error("Couldn't fire event", e);
+ logger.atSevere().withCause(e).log("Couldn't fire event");
}
}
diff --git a/java/com/google/gerrit/server/extensions/events/CommentAdded.java b/java/com/google/gerrit/server/extensions/events/CommentAdded.java
index ec35ea8..8ba9f82 100644
--- a/java/com/google/gerrit/server/extensions/events/CommentAdded.java
+++ b/java/com/google/gerrit/server/extensions/events/CommentAdded.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ApprovalInfo;
@@ -34,12 +35,10 @@
import java.io.IOException;
import java.sql.Timestamp;
import java.util.Map;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class CommentAdded {
- private static final Logger log = LoggerFactory.getLogger(CommentAdded.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<CommentAddedListener> listeners;
private final EventUtil util;
@@ -79,13 +78,13 @@
}
}
} catch (PatchListObjectTooLargeException e) {
- log.warn("Couldn't fire event: " + e.getMessage());
+ logger.atWarning().log("Couldn't fire event: %s", e.getMessage());
} catch (PatchListNotAvailableException
| GpgException
| IOException
| OrmException
| PermissionBackendException e) {
- log.error("Couldn't fire event", e);
+ logger.atSevere().withCause(e).log("Couldn't fire event");
}
}
diff --git a/java/com/google/gerrit/server/extensions/events/EventUtil.java b/java/com/google/gerrit/server/extensions/events/EventUtil.java
index 5bc4bb4..8861148 100644
--- a/java/com/google/gerrit/server/extensions/events/EventUtil.java
+++ b/java/com/google/gerrit/server/extensions/events/EventUtil.java
@@ -16,6 +16,7 @@
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.client.ListChangesOption;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ApprovalInfo;
@@ -41,12 +42,10 @@
import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class EventUtil {
- private static final Logger log = LoggerFactory.getLogger(EventUtil.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final ImmutableSet<ListChangesOption> CHANGE_OPTIONS;
@@ -121,26 +120,24 @@
}
public void logEventListenerError(Object event, Object listener, Exception error) {
- if (log.isDebugEnabled()) {
- log.debug(
- "Error in event listener {} for event {}",
- listener.getClass().getName(),
- event.getClass().getName(),
- error);
- } else {
- log.warn(
- "Error in event listener {} for event {}: {}",
- listener.getClass().getName(),
- event.getClass().getName(),
- error.getMessage());
- }
+ logger
+ .atWarning()
+ .log(
+ "Error in event listener %s for event %s: %s",
+ listener.getClass().getName(), event.getClass().getName(), error.getMessage());
+ logger
+ .atFine()
+ .withCause(error)
+ .log("Cause of error in event listener %s:", listener.getClass().getName());
}
public static void logEventListenerError(Object listener, Exception error) {
- if (log.isDebugEnabled()) {
- log.debug("Error in event listener {}", listener.getClass().getName(), error);
- } else {
- log.warn("Error in event listener {}: {}", listener.getClass().getName(), error.getMessage());
- }
+ logger
+ .atWarning()
+ .log("Error in event listener %s: %s", listener.getClass().getName(), error.getMessage());
+ logger
+ .atFine()
+ .withCause(error)
+ .log("Cause of error in event listener %s", listener.getClass().getName());
}
}
diff --git a/java/com/google/gerrit/server/extensions/events/HashtagsEdited.java b/java/com/google/gerrit/server/extensions/events/HashtagsEdited.java
index 948ff2d..9a0247a 100644
--- a/java/com/google/gerrit/server/extensions/events/HashtagsEdited.java
+++ b/java/com/google/gerrit/server/extensions/events/HashtagsEdited.java
@@ -15,6 +15,7 @@
package com.google.gerrit.server.extensions.events;
import com.google.common.collect.ImmutableSortedSet;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -28,12 +29,10 @@
import java.sql.Timestamp;
import java.util.Collection;
import java.util.Set;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class HashtagsEdited {
- private static final Logger log = LoggerFactory.getLogger(HashtagsEdited.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<HashtagsEditedListener> listeners;
private final EventUtil util;
@@ -66,7 +65,7 @@
}
}
} catch (OrmException e) {
- log.error("Couldn't fire event", e);
+ logger.atSevere().withCause(e).log("Couldn't fire event");
}
}
diff --git a/java/com/google/gerrit/server/extensions/events/PrivateStateChanged.java b/java/com/google/gerrit/server/extensions/events/PrivateStateChanged.java
index b30d473..acd275d 100644
--- a/java/com/google/gerrit/server/extensions/events/PrivateStateChanged.java
+++ b/java/com/google/gerrit/server/extensions/events/PrivateStateChanged.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -25,12 +26,10 @@
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.sql.Timestamp;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class PrivateStateChanged {
- private static final Logger log = LoggerFactory.getLogger(PrivateStateChanged.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<PrivateStateChangedListener> listeners;
private final EventUtil util;
@@ -55,7 +54,7 @@
}
}
} catch (OrmException e) {
- log.error("Couldn't fire event", e);
+ logger.atSevere().withCause(e).log("Couldn't fire event");
}
}
diff --git a/java/com/google/gerrit/server/extensions/events/ReviewerAdded.java b/java/com/google/gerrit/server/extensions/events/ReviewerAdded.java
index 433ae06..e33715b 100644
--- a/java/com/google/gerrit/server/extensions/events/ReviewerAdded.java
+++ b/java/com/google/gerrit/server/extensions/events/ReviewerAdded.java
@@ -15,6 +15,7 @@
package com.google.gerrit.server.extensions.events;
import com.google.common.collect.Lists;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -34,12 +35,10 @@
import java.io.IOException;
import java.sql.Timestamp;
import java.util.List;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class ReviewerAdded {
- private static final Logger log = LoggerFactory.getLogger(ReviewerAdded.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<ReviewerAddedListener> listeners;
private final EventUtil util;
@@ -76,13 +75,13 @@
}
}
} catch (PatchListObjectTooLargeException e) {
- log.warn("Couldn't fire event: " + e.getMessage());
+ logger.atWarning().log("Couldn't fire event: %s", e.getMessage());
} catch (PatchListNotAvailableException
| GpgException
| IOException
| OrmException
| PermissionBackendException e) {
- log.error("Couldn't fire event", e);
+ logger.atSevere().withCause(e).log("Couldn't fire event");
}
}
diff --git a/java/com/google/gerrit/server/extensions/events/ReviewerDeleted.java b/java/com/google/gerrit/server/extensions/events/ReviewerDeleted.java
index 0037783..011a3e8 100644
--- a/java/com/google/gerrit/server/extensions/events/ReviewerDeleted.java
+++ b/java/com/google/gerrit/server/extensions/events/ReviewerDeleted.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ApprovalInfo;
@@ -34,12 +35,10 @@
import java.io.IOException;
import java.sql.Timestamp;
import java.util.Map;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class ReviewerDeleted {
- private static final Logger log = LoggerFactory.getLogger(ReviewerDeleted.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<ReviewerDeletedListener> listeners;
private final EventUtil util;
@@ -83,13 +82,13 @@
}
}
} catch (PatchListObjectTooLargeException e) {
- log.warn("Couldn't fire event: " + e.getMessage());
+ logger.atWarning().log("Couldn't fire event: %s", e.getMessage());
} catch (PatchListNotAvailableException
| GpgException
| IOException
| OrmException
| PermissionBackendException e) {
- log.error("Couldn't fire event", e);
+ logger.atSevere().withCause(e).log("Couldn't fire event");
}
}
diff --git a/java/com/google/gerrit/server/extensions/events/RevisionCreated.java b/java/com/google/gerrit/server/extensions/events/RevisionCreated.java
index e4fa647..f203f5d 100644
--- a/java/com/google/gerrit/server/extensions/events/RevisionCreated.java
+++ b/java/com/google/gerrit/server/extensions/events/RevisionCreated.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -32,12 +33,10 @@
import com.google.inject.Singleton;
import java.io.IOException;
import java.sql.Timestamp;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class RevisionCreated {
- private static final Logger log = LoggerFactory.getLogger(RevisionCreated.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static final RevisionCreated DISABLED =
new RevisionCreated() {
@@ -89,13 +88,13 @@
}
}
} catch (PatchListObjectTooLargeException e) {
- log.warn("Couldn't fire event: " + e.getMessage());
+ logger.atWarning().log("Couldn't fire event: %s", e.getMessage());
} catch (PatchListNotAvailableException
| GpgException
| IOException
| OrmException
| PermissionBackendException e) {
- log.error("Couldn't fire event", e);
+ logger.atSevere().withCause(e).log("Couldn't fire event");
}
}
diff --git a/java/com/google/gerrit/server/extensions/events/TopicEdited.java b/java/com/google/gerrit/server/extensions/events/TopicEdited.java
index 354137a..45962f9 100644
--- a/java/com/google/gerrit/server/extensions/events/TopicEdited.java
+++ b/java/com/google/gerrit/server/extensions/events/TopicEdited.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -25,12 +26,10 @@
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.sql.Timestamp;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class TopicEdited {
- private static final Logger log = LoggerFactory.getLogger(TopicEdited.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<TopicEditedListener> listeners;
private final EventUtil util;
@@ -56,7 +55,7 @@
}
}
} catch (OrmException e) {
- log.error("Couldn't fire event", e);
+ logger.atSevere().withCause(e).log("Couldn't fire event");
}
}
diff --git a/java/com/google/gerrit/server/extensions/events/VoteDeleted.java b/java/com/google/gerrit/server/extensions/events/VoteDeleted.java
index bd48c32..5480dd8 100644
--- a/java/com/google/gerrit/server/extensions/events/VoteDeleted.java
+++ b/java/com/google/gerrit/server/extensions/events/VoteDeleted.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ApprovalInfo;
@@ -34,12 +35,10 @@
import java.io.IOException;
import java.sql.Timestamp;
import java.util.Map;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class VoteDeleted {
- private static final Logger log = LoggerFactory.getLogger(VoteDeleted.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<VoteDeletedListener> listeners;
private final EventUtil util;
@@ -83,13 +82,13 @@
}
}
} catch (PatchListObjectTooLargeException e) {
- log.warn("Couldn't fire event: " + e.getMessage());
+ logger.atWarning().log("Couldn't fire event: %s", e.getMessage());
} catch (PatchListNotAvailableException
| GpgException
| IOException
| OrmException
| PermissionBackendException e) {
- log.error("Couldn't fire event", e);
+ logger.atSevere().withCause(e).log("Couldn't fire event");
}
}
diff --git a/java/com/google/gerrit/server/extensions/events/WorkInProgressStateChanged.java b/java/com/google/gerrit/server/extensions/events/WorkInProgressStateChanged.java
index 62312d8..3f9f35b 100644
--- a/java/com/google/gerrit/server/extensions/events/WorkInProgressStateChanged.java
+++ b/java/com/google/gerrit/server/extensions/events/WorkInProgressStateChanged.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.extensions.events;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -25,12 +26,10 @@
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.sql.Timestamp;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class WorkInProgressStateChanged {
- private static final Logger log = LoggerFactory.getLogger(WorkInProgressStateChanged.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<WorkInProgressStateChangedListener> listeners;
private final EventUtil util;
@@ -56,7 +55,7 @@
}
}
} catch (OrmException e) {
- log.error("Couldn't fire event", e);
+ logger.atSevere().withCause(e).log("Couldn't fire event");
}
}
diff --git a/java/com/google/gerrit/server/extensions/webui/UiActions.java b/java/com/google/gerrit/server/extensions/webui/UiActions.java
index 26a7957..0582e2d 100644
--- a/java/com/google/gerrit/server/extensions/webui/UiActions.java
+++ b/java/com/google/gerrit/server/extensions/webui/UiActions.java
@@ -21,6 +21,7 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Predicate;
import com.google.common.collect.Streams;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.api.access.GlobalOrPluginPermission;
import com.google.gerrit.extensions.conditions.BooleanCondition;
@@ -47,12 +48,10 @@
import java.util.Map;
import java.util.Objects;
import java.util.Set;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class UiActions {
- private static final Logger log = LoggerFactory.getLogger(UiActions.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static Predicate<UiAction.Description> enabled() {
return UiAction.Description::isEnabled;
@@ -131,8 +130,10 @@
try {
view = e.getProvider().get();
} catch (RuntimeException err) {
- log.error(
- String.format("error creating view %s.%s", e.getPluginName(), e.getExportName()), err);
+ logger
+ .atSevere()
+ .withCause(err)
+ .log("error creating view %s.%s", e.getPluginName(), e.getExportName());
return null;
}
@@ -154,8 +155,10 @@
try {
globalRequired = GlobalPermission.fromAnnotation(e.getPluginName(), view.getClass());
} catch (PermissionBackendException err) {
- log.error(
- String.format("exception testing view %s.%s", e.getPluginName(), e.getExportName()), err);
+ logger
+ .atSevere()
+ .withCause(err)
+ .log("exception testing view %s.%s", e.getPluginName(), e.getExportName());
return null;
}
if (!globalRequired.isEmpty()) {
diff --git a/java/com/google/gerrit/server/git/GarbageCollection.java b/java/com/google/gerrit/server/git/GarbageCollection.java
index 997907e..3624695 100644
--- a/java/com/google/gerrit/server/git/GarbageCollection.java
+++ b/java/com/google/gerrit/server/git/GarbageCollection.java
@@ -15,6 +15,7 @@
package com.google.gerrit.server.git;
import com.google.common.collect.Sets;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.GarbageCollectionResult;
import com.google.gerrit.extensions.events.GarbageCollectorListener;
import com.google.gerrit.extensions.registration.DynamicSet;
@@ -35,11 +36,9 @@
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.TextProgressMonitor;
import org.eclipse.jgit.storage.pack.PackConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class GarbageCollection {
- private static final Logger log = LoggerFactory.getLogger(GarbageCollection.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final GitRepositoryManager repoManager;
private final GarbageCollectionQueue gcQueue;
@@ -118,7 +117,7 @@
try {
l.onGarbageCollected(event);
} catch (RuntimeException e) {
- log.warn("Failure in GarbageCollectorListener", e);
+ logger.atWarning().withCause(e).log("Failure in GarbageCollectorListener");
}
}
}
@@ -139,7 +138,7 @@
}
b.append(s);
}
- log.info(b.toString());
+ logger.atInfo().log(b.toString());
}
private static void logGcConfiguration(
@@ -179,7 +178,7 @@
print(writer, "failed.\n\n");
StringBuilder b = new StringBuilder();
b.append("[").append(projectName.get()).append("]");
- log.error(b.toString(), e);
+ logger.atSevere().withCause(e).log(b.toString());
}
private static void print(PrintWriter writer, String message) {
diff --git a/java/com/google/gerrit/server/git/GarbageCollectionLogFile.java b/java/com/google/gerrit/server/git/GarbageCollectionLogFile.java
index 8796fdf..b711708 100644
--- a/java/com/google/gerrit/server/git/GarbageCollectionLogFile.java
+++ b/java/com/google/gerrit/server/git/GarbageCollectionLogFile.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.git;
+import com.google.common.flogger.backend.Platform;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.config.SitePaths;
@@ -40,13 +41,17 @@
@Override
public void stop() {
- LogManager.getLogger(GarbageCollection.class).removeAllAppenders();
- LogManager.getLogger(GarbageCollectionRunner.class).removeAllAppenders();
+ getLogger(GarbageCollection.class).removeAllAppenders();
+ getLogger(GarbageCollectionRunner.class).removeAllAppenders();
}
private static void initLogSystem(Path logdir, boolean rotate) {
- initGcLogger(logdir, rotate, LogManager.getLogger(GarbageCollection.class));
- initGcLogger(logdir, rotate, LogManager.getLogger(GarbageCollectionRunner.class));
+ initGcLogger(logdir, rotate, getLogger(GarbageCollection.class));
+ initGcLogger(logdir, rotate, getLogger(GarbageCollectionRunner.class));
+ }
+
+ private static Logger getLogger(Class<?> clazz) {
+ return LogManager.getLogger(Platform.getBackend(clazz.getName()).getLoggerName());
}
private static void initGcLogger(Path logdir, boolean rotate, Logger gcLogger) {
diff --git a/java/com/google/gerrit/server/git/GarbageCollectionRunner.java b/java/com/google/gerrit/server/git/GarbageCollectionRunner.java
index 054e56a..b44251d 100644
--- a/java/com/google/gerrit/server/git/GarbageCollectionRunner.java
+++ b/java/com/google/gerrit/server/git/GarbageCollectionRunner.java
@@ -15,16 +15,15 @@
package com.google.gerrit.server.git;
import com.google.common.collect.Lists;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.server.config.GcConfig;
import com.google.gerrit.server.project.ProjectCache;
import com.google.inject.Inject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Runnable to enable scheduling gc to run periodically */
public class GarbageCollectionRunner implements Runnable {
- private static final Logger log = LoggerFactory.getLogger(GarbageCollectionRunner.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
static class Lifecycle implements LifecycleListener {
private final WorkQueue queue;
@@ -61,7 +60,7 @@
@Override
public void run() {
- log.info("Triggering gc on all repositories");
+ logger.atInfo().log("Triggering gc on all repositories");
garbageCollectionFactory.create().run(Lists.newArrayList(projectCache.all()));
}
diff --git a/java/com/google/gerrit/server/git/GroupCollector.java b/java/com/google/gerrit/server/git/GroupCollector.java
index 4a7c7e9..bb65fa8 100644
--- a/java/com/google/gerrit/server/git/GroupCollector.java
+++ b/java/com/google/gerrit/server/git/GroupCollector.java
@@ -27,6 +27,7 @@
import com.google.common.collect.SetMultimap;
import com.google.common.collect.Sets;
import com.google.common.collect.SortedSetMultimap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
@@ -44,8 +45,6 @@
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.revwalk.RevCommit;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Helper for assigning groups to commits during {@code ReceiveCommits}.
@@ -75,7 +74,7 @@
* visited, call {@link #getGroups()} for the result.
*/
public class GroupCollector {
- private static final Logger log = LoggerFactory.getLogger(GroupCollector.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static List<String> getDefaultGroups(PatchSet ps) {
return ImmutableList.of(ps.getRevision().get());
@@ -281,7 +280,7 @@
return ObjectId.fromString(group);
} catch (IllegalArgumentException e) {
// Shouldn't happen; some sort of corruption or manual tinkering?
- log.warn("group for commit {} is not a SHA-1: {}", forCommit.name(), group);
+ logger.atWarning().log("group for commit %s is not a SHA-1: %s", forCommit.name(), group);
return null;
}
}
diff --git a/java/com/google/gerrit/server/git/LocalDiskRepositoryManager.java b/java/com/google/gerrit/server/git/LocalDiskRepositoryManager.java
index 2c035d3..549c284 100644
--- a/java/com/google/gerrit/server/git/LocalDiskRepositoryManager.java
+++ b/java/com/google/gerrit/server/git/LocalDiskRepositoryManager.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.git;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.lifecycle.LifecycleModule;
import com.google.gerrit.reviewdb.client.Project;
@@ -45,13 +46,11 @@
import org.eclipse.jgit.lib.StoredConfig;
import org.eclipse.jgit.storage.file.WindowCacheConfig;
import org.eclipse.jgit.util.FS;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Manages Git repositories stored on the local filesystem. */
@Singleton
public class LocalDiskRepositoryManager implements GitRepositoryManager {
- private static final Logger log = LoggerFactory.getLogger(LocalDiskRepositoryManager.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static class Module extends LifecycleModule {
@Override
@@ -98,7 +97,7 @@
} else {
desc = String.format("%d", limit);
}
- log.info("Defaulting core.streamFileThreshold to {}", desc);
+ logger.atInfo().log("Defaulting core.streamFileThreshold to %s", desc);
cfg.setStreamFileThreshold(limit);
}
cfg.install();
@@ -193,7 +192,9 @@
//
File metaConfigLog = new File(db.getDirectory(), "logs/" + RefNames.REFS_CONFIG);
if (!metaConfigLog.getParentFile().mkdirs() || !metaConfigLog.createNewFile()) {
- log.error("Failed to create ref log for {} in repository {}", RefNames.REFS_CONFIG, name);
+ logger
+ .atSevere()
+ .log("Failed to create ref log for %s in repository %s", RefNames.REFS_CONFIG, name);
}
return db;
@@ -246,7 +247,10 @@
Integer.MAX_VALUE,
visitor);
} catch (IOException e) {
- log.error("Error walking repository tree {}", visitor.startFolder.toAbsolutePath(), e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log("Error walking repository tree %s", visitor.startFolder.toAbsolutePath());
}
}
@@ -286,7 +290,7 @@
@Override
public FileVisitResult visitFileFailed(Path file, IOException e) {
- log.warn(e.getMessage());
+ logger.atWarning().log(e.getMessage());
return FileVisitResult.CONTINUE;
}
@@ -301,7 +305,7 @@
Project.NameKey nameKey = getProjectName(startFolder, p);
if (getBasePath(nameKey).equals(startFolder)) {
if (isUnreasonableName(nameKey)) {
- log.warn("Ignoring unreasonably named repository {}", p.toAbsolutePath());
+ logger.atWarning().log("Ignoring unreasonably named repository %s", p.toAbsolutePath());
} else {
found.add(nameKey);
}
diff --git a/java/com/google/gerrit/server/git/MergeUtil.java b/java/com/google/gerrit/server/git/MergeUtil.java
index e2bec34..637be24 100644
--- a/java/com/google/gerrit/server/git/MergeUtil.java
+++ b/java/com/google/gerrit/server/git/MergeUtil.java
@@ -23,6 +23,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.FooterConstants;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.LabelType;
@@ -92,8 +93,6 @@
import org.eclipse.jgit.revwalk.RevFlag;
import org.eclipse.jgit.revwalk.RevSort;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Utility methods used during the merge process.
@@ -104,7 +103,7 @@
* {@code BatchUpdate}.
*/
public class MergeUtil {
- private static final Logger log = LoggerFactory.getLogger(MergeUtil.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
static class PluggableCommitMessageGenerator {
private final DynamicSet<ChangeMessageModifier> changeMessageModifiers;
@@ -466,7 +465,7 @@
try {
return approvalsUtil.byPatchSet(db.get(), notes, user, psId, null, null);
} catch (OrmException e) {
- log.error("Can't read approval records for " + psId, e);
+ logger.atSevere().withCause(e).log("Can't read approval records for %s", psId);
return Collections.emptyList();
}
}
@@ -499,7 +498,7 @@
try (ObjectInserter ins = new InMemoryInserter(repo)) {
return newThreeWayMerger(ins, repo.getConfig()).merge(new AnyObjectId[] {mergeTip, toMerge});
} catch (LargeObjectException e) {
- log.warn("Cannot merge due to LargeObjectException: " + toMerge.name());
+ logger.atWarning().log("Cannot merge due to LargeObjectException: %s", toMerge.name());
return false;
} catch (NoMergeBaseException e) {
return false;
diff --git a/java/com/google/gerrit/server/git/MergedByPushOp.java b/java/com/google/gerrit/server/git/MergedByPushOp.java
index bb50218..656202d 100644
--- a/java/com/google/gerrit/server/git/MergedByPushOp.java
+++ b/java/com/google/gerrit/server/git/MergedByPushOp.java
@@ -16,6 +16,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.ChangeMessage;
import com.google.gerrit.reviewdb.client.LabelId;
@@ -47,11 +48,9 @@
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class MergedByPushOp implements BatchUpdateOp {
- private static final Logger log = LoggerFactory.getLogger(MergedByPushOp.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public interface Factory {
MergedByPushOp create(
@@ -181,7 +180,10 @@
cm.setPatchSet(patchSet, info);
cm.send();
} catch (Exception e) {
- log.error("Cannot send email for submitted patch set " + psId, e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log("Cannot send email for submitted patch set %s", psId);
}
}
diff --git a/java/com/google/gerrit/server/git/MultiProgressMonitor.java b/java/com/google/gerrit/server/git/MultiProgressMonitor.java
index 2b9cad1..1336d59 100644
--- a/java/com/google/gerrit/server/git/MultiProgressMonitor.java
+++ b/java/com/google/gerrit/server/git/MultiProgressMonitor.java
@@ -17,6 +17,7 @@
import static java.util.concurrent.TimeUnit.NANOSECONDS;
import com.google.common.base.Strings;
+import com.google.common.flogger.FluentLogger;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
@@ -28,8 +29,6 @@
import java.util.concurrent.TimeoutException;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ProgressMonitor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Progress reporting interface that multiplexes multiple sub-tasks.
@@ -48,7 +47,7 @@
* multi-line progress messages would be impossible.)
*/
public class MultiProgressMonitor {
- private static final Logger log = LoggerFactory.getLogger(MultiProgressMonitor.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
/** Constant indicating the total work units cannot be predicted. */
public static final int UNKNOWN = 0;
@@ -215,10 +214,11 @@
String.format(
"(timeout %sms, cancelled)",
TimeUnit.MILLISECONDS.convert(now - deadline, NANOSECONDS));
- log.warn(
- String.format(
- "MultiProgressMonitor worker killed after %sms" + detailMessage, //
- TimeUnit.MILLISECONDS.convert(now - overallStart, NANOSECONDS)));
+ logger
+ .atWarning()
+ .log(
+ "MultiProgressMonitor worker killed after %sms: %s",
+ TimeUnit.MILLISECONDS.convert(now - overallStart, NANOSECONDS), detailMessage);
}
break;
}
@@ -232,7 +232,7 @@
if (!done && workerFuture.isDone()) {
// The worker may not have called end() explicitly, which is likely a
// programming error.
- log.warn("MultiProgressMonitor worker did not call end() before returning");
+ logger.atWarning().log("MultiProgressMonitor worker did not call end() before returning");
end();
}
}
diff --git a/java/com/google/gerrit/server/git/SearchingChangeCacheImpl.java b/java/com/google/gerrit/server/git/SearchingChangeCacheImpl.java
index 6ae8b91..1b83097 100644
--- a/java/com/google/gerrit/server/git/SearchingChangeCacheImpl.java
+++ b/java/com/google/gerrit/server/git/SearchingChangeCacheImpl.java
@@ -17,6 +17,7 @@
import com.google.auto.value.AutoValue;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.events.GitReferenceUpdatedListener;
import com.google.gerrit.extensions.registration.DynamicSet;
@@ -41,12 +42,11 @@
import java.util.Collections;
import java.util.List;
import java.util.concurrent.ExecutionException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class SearchingChangeCacheImpl implements GitReferenceUpdatedListener {
- private static final Logger log = LoggerFactory.getLogger(SearchingChangeCacheImpl.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
static final String ID_CACHE = "changes";
public static class Module extends CacheModule {
@@ -120,7 +120,7 @@
}
return Collections.unmodifiableList(cds);
} catch (ExecutionException e) {
- log.warn("Cannot fetch changes for " + project, e);
+ logger.atWarning().withCause(e).log("Cannot fetch changes for %s", project);
return Collections.emptyList();
}
}
diff --git a/java/com/google/gerrit/server/git/TagSet.java b/java/com/google/gerrit/server/git/TagSet.java
index 118223b..10b3411 100644
--- a/java/com/google/gerrit/server/git/TagSet.java
+++ b/java/com/google/gerrit/server/git/TagSet.java
@@ -17,6 +17,7 @@
import static org.eclipse.jgit.lib.ObjectIdSerializer.readWithoutMarker;
import static org.eclipse.jgit.lib.ObjectIdSerializer.writeWithoutMarker;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.client.RefNames;
@@ -38,11 +39,9 @@
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevSort;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
class TagSet {
- private static final Logger log = LoggerFactory.getLogger(TagSet.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final Project.NameKey projectName;
private final Map<String, CachedRef> refs;
@@ -141,7 +140,7 @@
} catch (IOException err) {
// Defer a cache update until later. No conclusion can be made
// based on an exception reading from the repository storage.
- log.warn("Error checking tags of " + projectName, err);
+ logger.atWarning().withCause(err).log("Error checking tags of %s", projectName);
}
}
} finally {
@@ -185,7 +184,7 @@
}
}
} catch (IOException e) {
- log.warn("Error building tags for repository " + projectName, e);
+ logger.atWarning().withCause(e).log("Error building tags for repository %s", projectName);
}
}
@@ -302,7 +301,7 @@
} catch (IncorrectObjectTypeException notCommit) {
flags = new BitSet();
} catch (IOException e) {
- log.warn("Error on " + ref.getName() + " of " + projectName, e);
+ logger.atWarning().withCause(e).log("Error on %s of %s", ref.getName(), projectName);
flags = new BitSet();
}
tags.add(new Tag(id, flags));
@@ -323,7 +322,7 @@
// For instance, refs from refs/cache-automerge
// will often end up here.
} catch (IOException e) {
- log.warn("Error on " + ref.getName() + " of " + projectName, e);
+ logger.atWarning().withCause(e).log("Error on %s of %s", ref.getName(), projectName);
}
}
diff --git a/java/com/google/gerrit/server/git/WorkQueue.java b/java/com/google/gerrit/server/git/WorkQueue.java
index 4e5480a..badb0d9 100644
--- a/java/com/google/gerrit/server/git/WorkQueue.java
+++ b/java/com/google/gerrit/server/git/WorkQueue.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.git;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.lifecycle.LifecycleModule;
import com.google.gerrit.reviewdb.client.Project;
@@ -44,12 +45,12 @@
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Delayed execution of tasks using a background thread pool. */
@Singleton
public class WorkQueue {
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
public static class Lifecycle implements LifecycleListener {
private final WorkQueue workQueue;
@@ -75,12 +76,11 @@
}
}
- private static final Logger log = LoggerFactory.getLogger(WorkQueue.class);
private static final UncaughtExceptionHandler LOG_UNCAUGHT_EXCEPTION =
new UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
- log.error("WorkQueue thread " + t.getName() + " threw exception", e);
+ logger.atSevere().withCause(e).log("WorkQueue thread %s threw exception", t.getName());
}
};
@@ -479,7 +479,9 @@
}
}
} catch (ClassNotFoundException | IllegalArgumentException | IllegalAccessException e) {
- log.debug("Cannot get a proper name for TrustedListenableFutureTask: {}", e.getMessage());
+ logger
+ .atFine()
+ .log("Cannot get a proper name for TrustedListenableFutureTask: %s", e.getMessage());
}
return runnable.toString();
}
diff --git a/java/com/google/gerrit/server/git/receive/AsyncReceiveCommits.java b/java/com/google/gerrit/server/git/receive/AsyncReceiveCommits.java
index b7297fa..3b621d8 100644
--- a/java/com/google/gerrit/server/git/receive/AsyncReceiveCommits.java
+++ b/java/com/google/gerrit/server/git/receive/AsyncReceiveCommits.java
@@ -15,6 +15,7 @@
package com.google.gerrit.server.git.receive;
import com.google.common.collect.SetMultimap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.Capable;
import com.google.gerrit.extensions.restapi.AuthException;
@@ -63,12 +64,10 @@
import org.eclipse.jgit.transport.ReceiveCommand;
import org.eclipse.jgit.transport.ReceiveCommand.Result;
import org.eclipse.jgit.transport.ReceivePack;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Hook that delegates to {@link ReceiveCommits} in a worker thread. */
public class AsyncReceiveCommits implements PreReceiveHook {
- private static final Logger log = LoggerFactory.getLogger(AsyncReceiveCommits.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String TIMEOUT_NAME = "ReceiveCommitsOverallTimeout";
@@ -272,11 +271,12 @@
w.progress.waitFor(
executor.submit(scopePropagator.wrap(w)), timeoutMillis, TimeUnit.MILLISECONDS);
} catch (ExecutionException e) {
- log.warn(
- String.format(
+ logger
+ .atWarning()
+ .withCause(e)
+ .log(
"Error in ReceiveCommits while processing changes for project %s",
- projectState.getName()),
- e);
+ projectState.getName());
rp.sendError("internal error while processing changes");
// ReceiveCommits has tried its best to catch errors, so anything at this
// point is very bad.
diff --git a/java/com/google/gerrit/server/git/receive/BUILD b/java/com/google/gerrit/server/git/receive/BUILD
index 4d24b4b..fddb9d6 100644
--- a/java/com/google/gerrit/server/git/receive/BUILD
+++ b/java/com/google/gerrit/server/git/receive/BUILD
@@ -14,9 +14,9 @@
"//lib:gwtorm",
"//lib/auto:auto-value",
"//lib/auto:auto-value-annotations",
+ "//lib/flogger:api",
"//lib/guice",
"//lib/guice:guice-assistedinject",
"//lib/jgit/org.eclipse.jgit:jgit",
- "//lib/log:api",
],
)
diff --git a/java/com/google/gerrit/server/git/receive/HackPushNegotiateHook.java b/java/com/google/gerrit/server/git/receive/HackPushNegotiateHook.java
index 7f0c626..1001d04 100644
--- a/java/com/google/gerrit/server/git/receive/HackPushNegotiateHook.java
+++ b/java/com/google/gerrit/server/git/receive/HackPushNegotiateHook.java
@@ -17,6 +17,7 @@
import static org.eclipse.jgit.lib.RefDatabase.ALL;
import com.google.common.collect.Sets;
+import com.google.common.flogger.FluentLogger;
import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
@@ -31,8 +32,6 @@
import org.eclipse.jgit.transport.BaseReceivePack;
import org.eclipse.jgit.transport.ServiceMayNotContinueException;
import org.eclipse.jgit.transport.UploadPack;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Advertises part of history to git push clients.
@@ -47,7 +46,7 @@
* a common ancestor.
*/
public class HackPushNegotiateHook implements AdvertiseRefsHook {
- private static final Logger log = LoggerFactory.getLogger(HackPushNegotiateHook.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
/** Size of an additional ".have" line. */
private static final int HAVE_LINE_LEN = 4 + Constants.OBJECT_ID_STRING_LENGTH + 1 + 5 + 1;
@@ -127,7 +126,7 @@
}
}
} catch (IOException err) {
- log.error("error trying to advertise history", err);
+ logger.atSevere().withCause(err).log("error trying to advertise history");
}
return history;
} finally {
diff --git a/java/com/google/gerrit/server/git/receive/ReceiveCommits.java b/java/com/google/gerrit/server/git/receive/ReceiveCommits.java
index c93c1d7..879dd40 100644
--- a/java/com/google/gerrit/server/git/receive/ReceiveCommits.java
+++ b/java/com/google/gerrit/server/git/receive/ReceiveCommits.java
@@ -56,6 +56,7 @@
import com.google.common.collect.SetMultimap;
import com.google.common.collect.Sets;
import com.google.common.collect.SortedSetMultimap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.TimeUtil;
import com.google.gerrit.common.data.LabelType;
@@ -209,12 +210,10 @@
import org.eclipse.jgit.transport.ReceivePack;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.Option;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Receives change upload using the Git receive-pack protocol. */
class ReceiveCommits {
- private static final Logger log = LoggerFactory.getLogger(ReceiveCommits.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private enum ReceiveError {
CONFIG_UPDATE(
@@ -1738,7 +1737,7 @@
try {
return repo.getFullBranch();
} catch (IOException e) {
- log.error("Cannot read HEAD symref", e);
+ logger.atSevere().withCause(e).log("Cannot read HEAD symref");
return null;
}
}
@@ -2707,20 +2706,23 @@
try {
projectCache.evict(project);
} catch (IOException e) {
- log.warn("Cannot evict from project cache, name key: " + project.getName(), e);
+ logger
+ .atWarning()
+ .withCause(e)
+ .log("Cannot evict from project cache, name key: %s", project.getName());
}
ProjectState ps = projectCache.get(project.getNameKey());
try {
logDebug("Updating project description");
repo.setGitwebDescription(ps.getProject().getDescription());
} catch (IOException e) {
- log.warn("cannot update description of " + project.getName(), e);
+ logger.atWarning().withCause(e).log("cannot update description of %s", project.getName());
}
if (allProjectsName.equals(project.getNameKey())) {
try {
createGroupPermissionSyncer.syncIfNeeded();
} catch (IOException | ConfigInvalidException e) {
- log.error("Can't sync create group permissions", e);
+ logger.atSevere().withCause(e).log("Can't sync create group permissions");
}
}
}
@@ -3115,19 +3117,13 @@
}
private void logDebug(String msg, Object... args) {
- if (log.isDebugEnabled()) {
- log.debug(receiveId + msg, args);
+ if (logger.atFine().isEnabled()) {
+ logger.atFine().logVarargs(receiveId + msg, args);
}
}
private void logWarn(String msg, Throwable t) {
- if (log.isWarnEnabled()) {
- if (t != null) {
- log.warn(receiveId + msg, t);
- } else {
- log.warn(receiveId + msg);
- }
- }
+ logger.atWarning().withCause(t).log("%s%s", receiveId, msg);
}
private void logWarn(String msg) {
@@ -3135,13 +3131,7 @@
}
private void logError(String msg, Throwable t) {
- if (log.isErrorEnabled()) {
- if (t != null) {
- log.error(receiveId + msg, t);
- } else {
- log.error(receiveId + msg);
- }
- }
+ logger.atSevere().withCause(t).log("%s%s", receiveId, msg);
}
private void logError(String msg) {
diff --git a/java/com/google/gerrit/server/git/receive/ReceiveCommitsAdvertiseRefsHook.java b/java/com/google/gerrit/server/git/receive/ReceiveCommitsAdvertiseRefsHook.java
index 723fef4..8cbcc88 100644
--- a/java/com/google/gerrit/server/git/receive/ReceiveCommitsAdvertiseRefsHook.java
+++ b/java/com/google/gerrit/server/git/receive/ReceiveCommitsAdvertiseRefsHook.java
@@ -18,6 +18,7 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.client.RefNames;
@@ -37,12 +38,10 @@
import org.eclipse.jgit.transport.BaseReceivePack;
import org.eclipse.jgit.transport.ServiceMayNotContinueException;
import org.eclipse.jgit.transport.UploadPack;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Exposes only the non refs/changes/ reference names. */
public class ReceiveCommitsAdvertiseRefsHook implements AdvertiseRefsHook {
- private static final Logger log = LoggerFactory.getLogger(ReceiveCommitsAdvertiseRefsHook.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
@VisibleForTesting
@AutoValue
@@ -120,7 +119,7 @@
}
return r;
} catch (OrmException err) {
- log.error("Cannot list open changes of " + projectName, err);
+ logger.atSevere().withCause(err).log("Cannot list open changes of %s", projectName);
return Collections.emptySet();
}
}
diff --git a/java/com/google/gerrit/server/git/receive/ReplaceOp.java b/java/com/google/gerrit/server/git/receive/ReplaceOp.java
index 3b8091c..1eb1d4e 100644
--- a/java/com/google/gerrit/server/git/receive/ReplaceOp.java
+++ b/java/com/google/gerrit/server/git/receive/ReplaceOp.java
@@ -23,6 +23,7 @@
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableListMultimap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.LabelType;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
@@ -78,10 +79,10 @@
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.transport.PushCertificate;
import org.eclipse.jgit.transport.ReceiveCommand;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class ReplaceOp implements BatchUpdateOp {
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
public interface Factory {
ReplaceOp create(
ProjectState projectState,
@@ -97,8 +98,6 @@
@Nullable PushCertificate pushCertificate);
}
- private static final Logger log = LoggerFactory.getLogger(ReplaceOp.class);
-
private static final String CHANGE_IS_CLOSED = "change is closed";
private final AccountResolver accountResolver;
@@ -486,7 +485,7 @@
try {
fireCommentAddedEvent(ctx);
} catch (Exception e) {
- log.warn("comment-added event invocation failed", e);
+ logger.atWarning().withCause(e).log("comment-added event invocation failed");
}
if (mergedByPushOp != null) {
mergedByPushOp.postUpdate(ctx);
@@ -516,7 +515,10 @@
cm.addExtraCC(recipients.getCcOnly());
cm.send();
} catch (Exception e) {
- log.error("Cannot send email for new patch set " + newPatchSet.getId(), e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log("Cannot send email for new patch set %s", newPatchSet.getId());
}
}
@@ -600,7 +602,7 @@
}
return null;
} catch (IOException e) {
- log.warn("Can't check for already submitted change", e);
+ logger.atWarning().withCause(e).log("Can't check for already submitted change");
return null;
}
}
diff --git a/java/com/google/gerrit/server/git/validators/CommitValidators.java b/java/com/google/gerrit/server/git/validators/CommitValidators.java
index e2ab1e9..88a62ca 100644
--- a/java/com/google/gerrit/server/git/validators/CommitValidators.java
+++ b/java/com/google/gerrit/server/git/validators/CommitValidators.java
@@ -23,6 +23,7 @@
import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.FooterConstants;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.PageLinks;
@@ -77,11 +78,9 @@
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.util.SystemReader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class CommitValidators {
- private static final Logger log = LoggerFactory.getLogger(CommitValidators.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static final Pattern NEW_PATCHSET_PATTERN =
Pattern.compile("^" + REFS_CHANGES + "(?:[0-9][0-9]/)?([1-9][0-9]*)(?:/[1-9][0-9]*)?$");
@@ -227,7 +226,10 @@
messages.addAll(commitValidator.onCommitReceived(receiveEvent));
}
} catch (CommitValidationException e) {
- log.debug("CommitValidationException occurred: {}", e.getFullMessage(), e);
+ logger
+ .atFine()
+ .withCause(e)
+ .log("CommitValidationException occurred: %s", e.getFullMessage());
// Keep the old messages (and their order) in case of an exception
messages.addAll(e.getMessages());
throw new CommitValidationException(e.getMessage(), messages);
@@ -443,14 +445,14 @@
throw new ConfigInvalidException("invalid project configuration");
}
} catch (ConfigInvalidException | IOException e) {
- log.error(
- "User "
- + user.getLoggableName()
- + " tried to push an invalid project configuration "
- + receiveEvent.command.getNewId().name()
- + " for project "
- + receiveEvent.project.getName(),
- e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log(
+ "User %s tried to push an invalid project configuration %s for project %s",
+ user.getLoggableName(),
+ receiveEvent.command.getNewId().name(),
+ receiveEvent.project.getName());
throw new CommitValidationException("invalid project configuration", messages);
}
}
@@ -479,7 +481,7 @@
} catch (AuthException e) {
throw new CommitValidationException("you are not allowed to upload merges");
} catch (PermissionBackendException e) {
- log.error("cannot check MERGE", e);
+ logger.atSevere().withCause(e).log("cannot check MERGE");
throw new CommitValidationException("internal auth error");
}
}
@@ -554,7 +556,7 @@
throw new CommitValidationException(
"not Signed-off-by author/committer/uploader in commit message footer");
} catch (PermissionBackendException e) {
- log.error("cannot check FORGE_COMMITTER", e);
+ logger.atSevere().withCause(e).log("cannot check FORGE_COMMITTER");
throw new CommitValidationException("internal auth error");
}
}
@@ -590,7 +592,7 @@
"invalid author",
invalidEmail(receiveEvent.commit, "author", author, user, canonicalWebUrl));
} catch (PermissionBackendException e) {
- log.error("cannot check FORGE_AUTHOR", e);
+ logger.atSevere().withCause(e).log("cannot check FORGE_AUTHOR");
throw new CommitValidationException("internal auth error");
}
}
@@ -624,7 +626,7 @@
"invalid committer",
invalidEmail(receiveEvent.commit, "committer", committer, user, canonicalWebUrl));
} catch (PermissionBackendException e) {
- log.error("cannot check FORGE_COMMITTER", e);
+ logger.atSevere().withCause(e).log("cannot check FORGE_COMMITTER");
throw new CommitValidationException("internal auth error");
}
}
@@ -663,7 +665,7 @@
gerritIdent.getEmailAddress(),
RefPermission.FORGE_SERVER.name()));
} catch (PermissionBackendException e) {
- log.error("cannot check FORGE_SERVER", e);
+ logger.atSevere().withCause(e).log("cannot check FORGE_SERVER");
throw new CommitValidationException("internal auth error");
}
}
@@ -690,7 +692,7 @@
return Collections.emptyList();
} catch (IOException e) {
String m = "error checking banned commits";
- log.warn(m, e);
+ logger.atWarning().withCause(e).log(m);
throw new CommitValidationException(m, e);
}
}
@@ -729,7 +731,7 @@
return msgs;
} catch (IOException | ConfigInvalidException e) {
String m = "error validating external IDs";
- log.warn(m, e);
+ logger.atWarning().withCause(e).log(m);
throw new CommitValidationException(m, e);
}
}
@@ -787,7 +789,7 @@
}
} catch (IOException e) {
String m = String.format("Validating update for account %s failed", accountId.get());
- log.error(m, e);
+ logger.atSevere().withCause(e).log(m);
throw new CommitValidationException(m, e);
}
return Collections.emptyList();
diff --git a/java/com/google/gerrit/server/git/validators/MergeValidators.java b/java/com/google/gerrit/server/git/validators/MergeValidators.java
index 5579e0e..94d9996 100644
--- a/java/com/google/gerrit/server/git/validators/MergeValidators.java
+++ b/java/com/google/gerrit/server/git/validators/MergeValidators.java
@@ -16,6 +16,7 @@
import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableList;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.projects.ProjectConfigEntryType;
import com.google.gerrit.extensions.registration.DynamicMap;
import com.google.gerrit.extensions.registration.DynamicMap.Entry;
@@ -49,11 +50,9 @@
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class MergeValidators {
- private static final Logger log = LoggerFactory.getLogger(MergeValidators.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<MergeValidationListener> mergeValidationListeners;
private final ProjectConfigValidator.Factory projectConfigValidatorFactory;
@@ -168,7 +167,7 @@
} catch (AuthException e) {
throw new MergeValidationException(SET_BY_ADMIN);
} catch (PermissionBackendException e) {
- log.warn("Cannot check ADMINISTRATE_SERVER", e);
+ logger.atWarning().withCause(e).log("Cannot check ADMINISTRATE_SERVER");
throw new MergeValidationException("validation unavailable");
}
if (allUsersName.equals(destProject.getNameKey())
@@ -280,7 +279,7 @@
return;
}
} catch (IOException | OrmException e) {
- log.error("Cannot validate account update", e);
+ logger.atSevere().withCause(e).log("Cannot validate account update");
throw new MergeValidationException("account validation unavailable");
}
@@ -291,7 +290,7 @@
"invalid account configuration: " + Joiner.on("; ").join(errorMessages));
}
} catch (IOException e) {
- log.error("Cannot validate account update", e);
+ logger.atSevere().withCause(e).log("Cannot validate account update");
throw new MergeValidationException("account validation unavailable");
}
}
diff --git a/java/com/google/gerrit/server/git/validators/RefOperationValidators.java b/java/com/google/gerrit/server/git/validators/RefOperationValidators.java
index 1e031da..1df8da4 100644
--- a/java/com/google/gerrit/server/git/validators/RefOperationValidators.java
+++ b/java/com/google/gerrit/server/git/validators/RefOperationValidators.java
@@ -16,6 +16,7 @@
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.reviewdb.client.Account;
@@ -34,12 +35,11 @@
import java.util.List;
import org.eclipse.jgit.lib.RefUpdate;
import org.eclipse.jgit.transport.ReceiveCommand;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class RefOperationValidators {
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
private static final GetErrorMessages GET_ERRORS = new GetErrorMessages();
- private static final Logger LOG = LoggerFactory.getLogger(RefOperationValidators.class);
public interface Factory {
RefOperationValidators create(Project project, IdentifiedUser user, ReceiveCommand cmd);
@@ -101,7 +101,7 @@
String.format(
"Ref \"%s\" %S in project %s validation failed",
event.command.getRefName(), event.command.getType(), event.project.getName());
- LOG.error(header);
+ logger.atSevere().log(header);
throw new RefOperationValidationException(header, errors);
}
diff --git a/java/com/google/gerrit/server/group/PeriodicGroupIndexer.java b/java/com/google/gerrit/server/group/PeriodicGroupIndexer.java
index d30945f..dbbc3f6 100644
--- a/java/com/google/gerrit/server/group/PeriodicGroupIndexer.java
+++ b/java/com/google/gerrit/server/group/PeriodicGroupIndexer.java
@@ -18,6 +18,7 @@
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.GroupReference;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.lifecycle.LifecycleModule;
@@ -35,8 +36,6 @@
import java.util.concurrent.TimeUnit;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.Repository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Runnable to schedule periodic group reindexing.
@@ -58,7 +57,7 @@
* slave.
*/
public class PeriodicGroupIndexer implements Runnable {
- private static final Logger log = LoggerFactory.getLogger(PeriodicGroupIndexer.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static class Module extends LifecycleModule {
@Override
@@ -88,7 +87,7 @@
boolean isEnabled = cfg.getBoolean("index", "scheduledIndexer", "enabled", true);
if (!isEnabled) {
- log.warn("index.scheduledIndexer is disabled");
+ logger.atWarning().log("index.scheduledIndexer is disabled");
return;
}
@@ -146,9 +145,9 @@
}
}
groupUuids = newGroupUuids;
- log.info("Run group indexer, {} groups reindexed", reindexCounter);
+ logger.atInfo().log("Run group indexer, %s groups reindexed", reindexCounter);
} catch (Throwable t) {
- log.error("Failed to reindex groups", t);
+ logger.atSevere().withCause(t).log("Failed to reindex groups");
}
}
}
diff --git a/java/com/google/gerrit/server/group/db/AuditLogReader.java b/java/com/google/gerrit/server/group/db/AuditLogReader.java
index 967b0d2..5c1b100 100644
--- a/java/com/google/gerrit/server/group/db/AuditLogReader.java
+++ b/java/com/google/gerrit/server/group/db/AuditLogReader.java
@@ -18,6 +18,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.MultimapBuilder;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.AccountGroup;
import com.google.gerrit.reviewdb.client.AccountGroupByIdAud;
@@ -41,13 +42,11 @@
import org.eclipse.jgit.revwalk.RevSort;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.util.RawParseUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** NoteDb reader for group audit log. */
@Singleton
public class AuditLogReader {
- private static final Logger log = LoggerFactory.getLogger(AuditLogReader.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final String serverId;
@@ -184,11 +183,11 @@
}
private static void logInvalid(AccountGroup.UUID uuid, RevCommit c, FooterLine line) {
- log.debug(
- "Invalid footer line in commit {} while parsing audit log for group {}: {}",
- c.name(),
- uuid,
- line);
+ logger
+ .atFine()
+ .log(
+ "Invalid footer line in commit %s while parsing audit log for group %s: %s",
+ c.name(), uuid, line);
}
private ImmutableList<ParsedCommit> parseCommits(Repository repo, AccountGroup.UUID uuid)
diff --git a/java/com/google/gerrit/server/group/db/GroupsNoteDbConsistencyChecker.java b/java/com/google/gerrit/server/group/db/GroupsNoteDbConsistencyChecker.java
index 9f0cb3a..b5324f1 100644
--- a/java/com/google/gerrit/server/group/db/GroupsNoteDbConsistencyChecker.java
+++ b/java/com/google/gerrit/server/group/db/GroupsNoteDbConsistencyChecker.java
@@ -21,6 +21,7 @@
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import com.google.common.collect.ImmutableList;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.GroupReference;
import com.google.gerrit.extensions.api.config.ConsistencyCheckInfo;
@@ -46,13 +47,12 @@
import org.eclipse.jgit.notes.NoteMap;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Check the referential integrity of NoteDb group storage. */
@Singleton
public class GroupsNoteDbConsistencyChecker {
- private static final Logger log = LoggerFactory.getLogger(GroupsNoteDbConsistencyChecker.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
/**
* The result of a consistency check. The UUID map is only non-null if no problems were detected.
*/
@@ -271,9 +271,9 @@
public static void logConsistencyProblem(ConsistencyProblemInfo p) {
if (p.status == ConsistencyProblemInfo.Status.WARNING) {
- log.warn(p.message);
+ logger.atWarning().log(p.message);
} else {
- log.error(p.message);
+ logger.atSevere().log(p.message);
}
}
diff --git a/java/com/google/gerrit/server/group/db/RenameGroupOp.java b/java/com/google/gerrit/server/group/db/RenameGroupOp.java
index 57acc3b..6a0da98 100644
--- a/java/com/google/gerrit/server/group/db/RenameGroupOp.java
+++ b/java/com/google/gerrit/server/group/db/RenameGroupOp.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.group.db;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.GroupReference;
import com.google.gerrit.reviewdb.client.AccountGroup;
import com.google.gerrit.reviewdb.client.Project;
@@ -32,10 +33,10 @@
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.errors.RepositoryNotFoundException;
import org.eclipse.jgit.lib.PersonIdent;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
class RenameGroupOp extends DefaultQueueOp {
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
interface Factory {
RenameGroupOp create(
@Assisted("author") PersonIdent author,
@@ -45,7 +46,6 @@
}
private static final int MAX_TRIES = 10;
- private static final Logger log = LoggerFactory.getLogger(RenameGroupOp.class);
private final ProjectCache projectCache;
private final MetaDataUpdate.Server metaDataUpdateFactory;
@@ -93,7 +93,7 @@
} catch (RepositoryNotFoundException noProject) {
continue;
} catch (ConfigInvalidException | IOException err) {
- log.error("Cannot rename group " + oldName + " in " + projectName, err);
+ logger.atSevere().withCause(err).log("Cannot rename group %s in %s", oldName, projectName);
}
}
@@ -127,14 +127,12 @@
projectCache.evict(config.getProject());
success = true;
} catch (IOException e) {
- log.error(
- "Could not commit rename of group "
- + oldName
- + " to "
- + newName
- + " in "
- + md.getProjectName().get(),
- e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log(
+ "Could not commit rename of group %s to %s in %s",
+ oldName, newName, md.getProjectName().get());
try {
Thread.sleep(25 /* milliseconds */);
} catch (InterruptedException wakeUp) {
@@ -145,13 +143,11 @@
if (!success) {
if (tryingAgain) {
- log.warn(
- "Could not rename group "
- + oldName
- + " to "
- + newName
- + " in "
- + md.getProjectName().get());
+ logger
+ .atWarning()
+ .log(
+ "Could not rename group %s to %s in %s",
+ oldName, newName, md.getProjectName().get());
} else {
retryOn.add(md.getProjectName());
}
diff --git a/java/com/google/gerrit/server/index/OnlineReindexer.java b/java/com/google/gerrit/server/index/OnlineReindexer.java
index ee2a76e..709bf2b 100644
--- a/java/com/google/gerrit/server/index/OnlineReindexer.java
+++ b/java/com/google/gerrit/server/index/OnlineReindexer.java
@@ -17,6 +17,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.collect.Lists;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.index.Index;
import com.google.gerrit.index.IndexCollection;
@@ -25,11 +26,9 @@
import java.io.IOException;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class OnlineReindexer<K, V, I extends Index<K, V>> {
- private static final Logger log = LoggerFactory.getLogger(OnlineReindexer.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final String name;
private final IndexCollection<K, V, I> indexes;
@@ -64,7 +63,10 @@
reindex();
ok = true;
} catch (IOException e) {
- log.error("Online reindex of {} schema version {} failed", name, version(index), e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log("Online reindex of %s schema version %s failed", name, version(index));
} finally {
running.set(false);
if (!ok) {
@@ -103,27 +105,26 @@
"not an active write schema version: %s %s",
name,
newVersion);
- log.info(
- "Starting online reindex of {} from schema version {} to {}",
- name,
- version(indexes.getSearchIndex()),
- version(index));
+ logger
+ .atInfo()
+ .log(
+ "Starting online reindex of %s from schema version %s to %s",
+ name, version(indexes.getSearchIndex()), version(index));
if (oldVersion != newVersion) {
index.deleteAll();
}
SiteIndexer.Result result = batchIndexer.indexAll(index);
if (!result.success()) {
- log.error(
- "Online reindex of {} schema version {} failed. Successfully"
- + " indexed {}, failed to index {}",
- name,
- version(index),
- result.doneCount(),
- result.failedCount());
+ logger
+ .atSevere()
+ .log(
+ "Online reindex of %s schema version %s failed. Successfully"
+ + " indexed %s, failed to index %s",
+ name, version(index), result.doneCount(), result.failedCount());
return;
}
- log.info("Reindex {} to version {} complete", name, version(index));
+ logger.atInfo().log("Reindex %s to version %s complete", name, version(index));
activateIndex();
for (OnlineUpgradeListener listener : listeners) {
listener.onSuccess(name, oldVersion, newVersion);
@@ -132,11 +133,11 @@
public void activateIndex() {
indexes.setSearchIndex(index);
- log.info("Using {} schema version {}", name, version(index));
+ logger.atInfo().log("Using %s schema version %s", name, version(index));
try {
index.markReady(true);
} catch (IOException e) {
- log.warn("Error activating new {} schema version {}", name, version(index));
+ logger.atWarning().log("Error activating new %s schema version %s", name, version(index));
}
List<I> toRemove = Lists.newArrayListWithExpectedSize(1);
@@ -150,7 +151,7 @@
i.markReady(false);
indexes.removeWriteIndex(version(i));
} catch (IOException e) {
- log.warn("Error deactivating old {} schema version {}", name, version(i));
+ logger.atWarning().log("Error deactivating old %s schema version %s", name, version(i));
}
}
}
diff --git a/java/com/google/gerrit/server/index/account/AllAccountsIndexer.java b/java/com/google/gerrit/server/index/account/AllAccountsIndexer.java
index ae1fec6..0015268 100644
--- a/java/com/google/gerrit/server/index/account/AllAccountsIndexer.java
+++ b/java/com/google/gerrit/server/index/account/AllAccountsIndexer.java
@@ -17,6 +17,7 @@
import static com.google.gerrit.server.git.QueueProvider.QueueType.BATCH;
import com.google.common.base.Stopwatch;
+import com.google.common.flogger.FluentLogger;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
@@ -38,12 +39,10 @@
import java.util.concurrent.atomic.AtomicInteger;
import org.eclipse.jgit.lib.ProgressMonitor;
import org.eclipse.jgit.lib.TextProgressMonitor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class AllAccountsIndexer extends SiteIndexer<Account.Id, AccountState, AccountIndex> {
- private static final Logger log = LoggerFactory.getLogger(AllAccountsIndexer.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final ListeningExecutorService executor;
private final Accounts accounts;
@@ -68,7 +67,7 @@
try {
ids = collectAccounts(progress);
} catch (IOException e) {
- log.error("Error collecting accounts", e);
+ logger.atSevere().withCause(e).log("Error collecting accounts");
return new SiteIndexer.Result(sw, false, 0, 0);
}
return reindexAccounts(index, ids, progress);
@@ -110,7 +109,7 @@
try {
Futures.successfulAsList(futures).get();
} catch (ExecutionException | InterruptedException e) {
- log.error("Error waiting on account futures", e);
+ logger.atSevere().withCause(e).log("Error waiting on account futures");
return new SiteIndexer.Result(sw, false, 0, 0);
}
diff --git a/java/com/google/gerrit/server/index/change/AllChangesIndexer.java b/java/com/google/gerrit/server/index/change/AllChangesIndexer.java
index 54bf0dc..060053d 100644
--- a/java/com/google/gerrit/server/index/change/AllChangesIndexer.java
+++ b/java/com/google/gerrit/server/index/change/AllChangesIndexer.java
@@ -22,6 +22,7 @@
import com.google.common.base.Stopwatch;
import com.google.common.collect.ComparisonChain;
+import com.google.common.flogger.FluentLogger;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.gerrit.index.SiteIndexer;
@@ -53,11 +54,9 @@
import org.eclipse.jgit.lib.ProgressMonitor;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.TextProgressMonitor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class AllChangesIndexer extends SiteIndexer<Change.Id, ChangeData, ChangeIndex> {
- private static final Logger log = LoggerFactory.getLogger(AllChangesIndexer.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final SchemaFactory<ReviewDb> schemaFactory;
private final ChangeData.Factory changeDataFactory;
@@ -118,10 +117,10 @@
changeCount += size;
projects.add(new ProjectHolder(name, size));
} catch (IOException e) {
- log.error("Error collecting project {}", name, e);
+ logger.atSevere().withCause(e).log("Error collecting project %s", name);
projectsFailed++;
if (projectsFailed > projects.size() / 2) {
- log.error("Over 50% of the projects could not be collected: aborted");
+ logger.atSevere().log("Over 50%% of the projects could not be collected: aborted");
return new Result(sw, false, 0, 0);
}
}
@@ -176,7 +175,7 @@
},
directExecutor()));
} catch (ExecutionException e) {
- log.error("Error in batch indexer", e);
+ logger.atSevere().withCause(e).log("Error in batch indexer");
ok.set(false);
}
// If too many changes failed, maybe there was a bug in the indexer. Don't
@@ -187,9 +186,11 @@
int nTotal = nFailed + nDone;
double pctFailed = ((double) nFailed) / nTotal * 100;
if (pctFailed > 10) {
- log.error(
- "Failed {}/{} changes ({}%); not marking new index as ready",
- nFailed, nTotal, Math.round(pctFailed));
+ logger
+ .atSevere()
+ .log(
+ "Failed %s/%s changes (%s%%); not marking new index as ready",
+ nFailed, nTotal, Math.round(pctFailed));
ok.set(false);
}
return new Result(sw, ok.get(), nDone, nFailed);
@@ -228,7 +229,7 @@
// we don't have concrete proof that improving packfile locality would help.
notesFactory.scan(repo, db, project).forEach(r -> index(db, r));
} catch (RepositoryNotFoundException rnfe) {
- log.error(rnfe.getMessage());
+ logger.atSevere().log(rnfe.getMessage());
}
return null;
}
@@ -255,12 +256,7 @@
this.failed.update(1);
}
- if (e != null) {
- log.warn(error, e);
- } else {
- log.warn(error);
- }
-
+ logger.atWarning().withCause(e).log(error);
verboseWriter.println(error);
}
diff --git a/java/com/google/gerrit/server/index/change/ChangeField.java b/java/com/google/gerrit/server/index/change/ChangeField.java
index 82253f2..26ac707 100644
--- a/java/com/google/gerrit/server/index/change/ChangeField.java
+++ b/java/com/google/gerrit/server/index/change/ChangeField.java
@@ -38,6 +38,7 @@
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Table;
+import com.google.common.flogger.FluentLogger;
import com.google.common.primitives.Longs;
import com.google.gerrit.common.data.SubmitRecord;
import com.google.gerrit.common.data.SubmitRequirement;
@@ -85,8 +86,6 @@
import java.util.function.Function;
import java.util.stream.Stream;
import org.eclipse.jgit.lib.PersonIdent;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Fields indexed on change documents.
@@ -99,7 +98,7 @@
* unambiguous derived field names containing other characters.
*/
public class ChangeField {
- private static final Logger log = LoggerFactory.getLogger(ChangeField.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static final int NO_ASSIGNEE = -1;
@@ -267,7 +266,9 @@
int i = v.indexOf(',');
if (i < 0) {
- log.warn("Invalid value for reviewer field from change {}: {}", changeId.get(), v);
+ logger
+ .atWarning()
+ .log("Invalid value for reviewer field from change %s: %s", changeId.get(), v);
continue;
}
@@ -285,24 +286,31 @@
com.google.common.base.Optional<ReviewerStateInternal> reviewerState =
Enums.getIfPresent(ReviewerStateInternal.class, v.substring(0, i));
if (!reviewerState.isPresent()) {
- log.warn(
- "Failed to parse reviewer state of reviewer field from change {}: {}",
- changeId.get(),
- v);
+ logger
+ .atWarning()
+ .log(
+ "Failed to parse reviewer state of reviewer field from change %s: %s",
+ changeId.get(), v);
continue;
}
Optional<Account.Id> accountId = Account.Id.tryParse(v.substring(i + 1, i2));
if (!accountId.isPresent()) {
- log.warn(
- "Failed to parse account ID of reviewer field from change {}: {}", changeId.get(), v);
+ logger
+ .atWarning()
+ .log(
+ "Failed to parse account ID of reviewer field from change %s: %s",
+ changeId.get(), v);
continue;
}
Long l = Longs.tryParse(v.substring(i2 + 1, v.length()));
if (l == null) {
- log.warn(
- "Failed to parse timestamp of reviewer field from change {}: {}", changeId.get(), v);
+ logger
+ .atWarning()
+ .log(
+ "Failed to parse timestamp of reviewer field from change %s: %s",
+ changeId.get(), v);
continue;
}
Timestamp timestamp = new Timestamp(l);
@@ -318,7 +326,9 @@
for (String v : values) {
int i = v.indexOf(',');
if (i < 0) {
- log.warn("Invalid value for reviewer by email field from change {}: {}", changeId.get(), v);
+ logger
+ .atWarning()
+ .log("Invalid value for reviewer by email field from change %s: %s", changeId.get(), v);
continue;
}
@@ -337,28 +347,31 @@
com.google.common.base.Optional<ReviewerStateInternal> reviewerState =
Enums.getIfPresent(ReviewerStateInternal.class, v.substring(0, i));
if (!reviewerState.isPresent()) {
- log.warn(
- "Failed to parse reviewer state of reviewer by email field from change {}: {}",
- changeId.get(),
- v);
+ logger
+ .atWarning()
+ .log(
+ "Failed to parse reviewer state of reviewer by email field from change %s: %s",
+ changeId.get(), v);
continue;
}
Address address = Address.tryParse(v.substring(i + 1, i2));
if (address == null) {
- log.warn(
- "Failed to parse address of reviewer by email field from change {}: {}",
- changeId.get(),
- v);
+ logger
+ .atWarning()
+ .log(
+ "Failed to parse address of reviewer by email field from change %s: %s",
+ changeId.get(), v);
continue;
}
Long l = Longs.tryParse(v.substring(i2 + 1, v.length()));
if (l == null) {
- log.warn(
- "Failed to parse timestamp of reviewer by email field from change {}: {}",
- changeId.get(),
- v);
+ logger
+ .atWarning()
+ .log(
+ "Failed to parse timestamp of reviewer by email field from change %s: %s",
+ changeId.get(), v);
continue;
}
Timestamp timestamp = new Timestamp(l);
diff --git a/java/com/google/gerrit/server/index/change/ChangeIndexer.java b/java/com/google/gerrit/server/index/change/ChangeIndexer.java
index 55f8b48..8bad926 100644
--- a/java/com/google/gerrit/server/index/change/ChangeIndexer.java
+++ b/java/com/google/gerrit/server/index/change/ChangeIndexer.java
@@ -17,6 +17,7 @@
import static com.google.gerrit.server.extensions.events.EventUtil.logEventListenerError;
import static com.google.gerrit.server.git.QueueProvider.QueueType.BATCH;
+import com.google.common.flogger.FluentLogger;
import com.google.common.util.concurrent.Atomics;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
@@ -56,8 +57,6 @@
import java.util.concurrent.atomic.AtomicReference;
import org.eclipse.jgit.errors.RepositoryNotFoundException;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Helper for (re)indexing a change document.
@@ -66,7 +65,7 @@
* fields and/or update the index.
*/
public class ChangeIndexer {
- private static final Logger log = LoggerFactory.getLogger(ChangeIndexer.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public interface Factory {
ChangeIndexer create(ListeningExecutorService executor, ChangeIndex index);
@@ -379,7 +378,7 @@
}
}
} catch (Exception e) {
- log.error("Failed to execute " + this, e);
+ logger.atSevere().withCause(e).log("Failed to execute %s", this);
throw e;
}
}
@@ -419,7 +418,7 @@
for (ChangeIndex i : getWriteIndexes()) {
i.delete(id);
}
- log.info("Deleted change {} from index.", id.get());
+ logger.atInfo().log("Deleted change %s from index.", id.get());
fireChangeDeletedFromIndexEvent(id.get());
return null;
}
@@ -438,15 +437,16 @@
return true;
}
} catch (NoSuchChangeException nsce) {
- log.debug("Change {} was deleted, aborting reindexing the change.", id.get());
+ logger.atFine().log("Change %s was deleted, aborting reindexing the change.", id.get());
} catch (Exception e) {
if (!isCausedByRepositoryNotFoundException(e)) {
throw e;
}
- log.debug(
- "Change {} belongs to deleted project {}, aborting reindexing the change.",
- id.get(),
- project.get());
+ logger
+ .atFine()
+ .log(
+ "Change %s belongs to deleted project %s, aborting reindexing the change.",
+ id.get(), project.get());
}
return false;
}
diff --git a/java/com/google/gerrit/server/index/change/ReindexAfterRefUpdate.java b/java/com/google/gerrit/server/index/change/ReindexAfterRefUpdate.java
index 0b76b1e..609432b 100644
--- a/java/com/google/gerrit/server/index/change/ReindexAfterRefUpdate.java
+++ b/java/com/google/gerrit/server/index/change/ReindexAfterRefUpdate.java
@@ -17,6 +17,7 @@
import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
import static com.google.gerrit.server.query.change.ChangeData.asChanges;
+import com.google.common.flogger.FluentLogger;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListeningExecutorService;
@@ -47,11 +48,9 @@
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class ReindexAfterRefUpdate implements GitReferenceUpdatedListener {
- private static final Logger log = LoggerFactory.getLogger(ReindexAfterRefUpdate.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final OneOffRequestContext requestContext;
private final Provider<InternalChangeQuery> queryProvider;
@@ -97,7 +96,7 @@
accountCache.evict(accountId);
indexer.get().index(accountId);
} catch (IOException e) {
- log.error(String.format("Reindex account %s failed.", accountId), e);
+ logger.atSevere().withCause(e).log("Reindex account %s failed.", accountId);
}
}
}
@@ -140,7 +139,7 @@
try (ManualRequestContext ctx = requestContext.open()) {
return impl(ctx);
} catch (Exception e) {
- log.error("Failed to reindex changes after " + event, e);
+ logger.atSevere().withCause(e).log("Failed to reindex changes after %s", event);
throw e;
}
}
diff --git a/java/com/google/gerrit/server/index/change/StalenessChecker.java b/java/com/google/gerrit/server/index/change/StalenessChecker.java
index 6c31369..208e949 100644
--- a/java/com/google/gerrit/server/index/change/StalenessChecker.java
+++ b/java/com/google/gerrit/server/index/change/StalenessChecker.java
@@ -28,6 +28,7 @@
import com.google.common.collect.SetMultimap;
import com.google.common.collect.Sets;
import com.google.common.collect.Streams;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.index.IndexConfig;
import com.google.gerrit.reviewdb.client.Change;
@@ -49,12 +50,10 @@
import java.util.regex.Pattern;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class StalenessChecker {
- private static final Logger log = LoggerFactory.getLogger(StalenessChecker.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static final ImmutableSet<String> FIELDS =
ImmutableSet.of(
@@ -200,7 +199,7 @@
}
return false;
} catch (IOException e) {
- log.warn("error checking staleness of {} in {}", id, project, e);
+ logger.atWarning().withCause(e).log("error checking staleness of %s in %s", id, project);
return true;
}
}
diff --git a/java/com/google/gerrit/server/index/group/AllGroupsIndexer.java b/java/com/google/gerrit/server/index/group/AllGroupsIndexer.java
index c90bece..2823c2e 100644
--- a/java/com/google/gerrit/server/index/group/AllGroupsIndexer.java
+++ b/java/com/google/gerrit/server/index/group/AllGroupsIndexer.java
@@ -18,6 +18,7 @@
import static com.google.gerrit.server.git.QueueProvider.QueueType.BATCH;
import com.google.common.base.Stopwatch;
+import com.google.common.flogger.FluentLogger;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
@@ -42,12 +43,10 @@
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.ProgressMonitor;
import org.eclipse.jgit.lib.TextProgressMonitor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class AllGroupsIndexer extends SiteIndexer<AccountGroup.UUID, InternalGroup, GroupIndex> {
- private static final Logger log = LoggerFactory.getLogger(AllGroupsIndexer.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final ListeningExecutorService executor;
private final GroupCache groupCache;
@@ -72,7 +71,7 @@
try {
uuids = collectGroups(progress);
} catch (IOException | ConfigInvalidException e) {
- log.error("Error collecting groups", e);
+ logger.atSevere().withCause(e).log("Error collecting groups");
return new SiteIndexer.Result(sw, false, 0, 0);
}
return reindexGroups(index, uuids, progress);
@@ -118,7 +117,7 @@
try {
Futures.successfulAsList(futures).get();
} catch (ExecutionException | InterruptedException e) {
- log.error("Error waiting on group futures", e);
+ logger.atSevere().withCause(e).log("Error waiting on group futures");
return new SiteIndexer.Result(sw, false, 0, 0);
}
diff --git a/java/com/google/gerrit/server/index/project/AllProjectsIndexer.java b/java/com/google/gerrit/server/index/project/AllProjectsIndexer.java
index 1e36f18..650df22 100644
--- a/java/com/google/gerrit/server/index/project/AllProjectsIndexer.java
+++ b/java/com/google/gerrit/server/index/project/AllProjectsIndexer.java
@@ -17,6 +17,7 @@
import static com.google.gerrit.server.git.QueueProvider.QueueType.BATCH;
import com.google.common.base.Stopwatch;
+import com.google.common.flogger.FluentLogger;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
@@ -36,13 +37,10 @@
import java.util.concurrent.atomic.AtomicInteger;
import org.eclipse.jgit.lib.ProgressMonitor;
import org.eclipse.jgit.lib.TextProgressMonitor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class AllProjectsIndexer extends SiteIndexer<Project.NameKey, ProjectData, ProjectIndex> {
-
- private static final Logger log = LoggerFactory.getLogger(AllProjectsIndexer.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final ListeningExecutorService executor;
private final ProjectCache projectCache;
@@ -93,7 +91,7 @@
try {
Futures.successfulAsList(futures).get();
} catch (ExecutionException | InterruptedException e) {
- log.error("Error waiting on project futures", e);
+ logger.atSevere().withCause(e).log("Error waiting on project futures");
return new SiteIndexer.Result(sw, false, 0, 0);
}
diff --git a/java/com/google/gerrit/server/mail/AutoReplyMailFilter.java b/java/com/google/gerrit/server/mail/AutoReplyMailFilter.java
index 199731e..16268cd 100644
--- a/java/com/google/gerrit/server/mail/AutoReplyMailFilter.java
+++ b/java/com/google/gerrit/server/mail/AutoReplyMailFilter.java
@@ -14,16 +14,14 @@
package com.google.gerrit.server.mail;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.server.mail.receive.MailMessage;
import com.google.inject.Singleton;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Filters out auto-reply messages according to RFC 3834. */
@Singleton
public class AutoReplyMailFilter implements MailFilter {
-
- private static final Logger log = LoggerFactory.getLogger(AutoReplyMailFilter.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
@Override
public boolean shouldProcessMessage(MailMessage message) {
@@ -32,8 +30,11 @@
String prec = header.substring(MailHeader.PRECEDENCE.fieldWithDelimiter().length()).trim();
if (prec.equals("list") || prec.equals("junk") || prec.equals("bulk")) {
- log.error(
- "Message {} has a Precedence header. Will ignore and delete message.", message.id());
+ logger
+ .atSevere()
+ .log(
+ "Message %s has a Precedence header. Will ignore and delete message.",
+ message.id());
return false;
}
@@ -42,9 +43,11 @@
header.substring(MailHeader.AUTO_SUBMITTED.fieldWithDelimiter().length()).trim();
if (!autoSubmitted.equals("no")) {
- log.error(
- "Message {} has an Auto-Submitted header. Will ignore and delete message.",
- message.id());
+ logger
+ .atSevere()
+ .log(
+ "Message %s has an Auto-Submitted header. Will ignore and delete message.",
+ message.id());
return false;
}
}
diff --git a/java/com/google/gerrit/server/mail/ListMailFilter.java b/java/com/google/gerrit/server/mail/ListMailFilter.java
index 21347cb..5a41c77 100644
--- a/java/com/google/gerrit/server/mail/ListMailFilter.java
+++ b/java/com/google/gerrit/server/mail/ListMailFilter.java
@@ -16,6 +16,7 @@
import static java.util.stream.Collectors.joining;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.mail.receive.MailMessage;
import com.google.inject.Inject;
@@ -23,19 +24,17 @@
import java.util.Arrays;
import java.util.regex.Pattern;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class ListMailFilter implements MailFilter {
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
public enum ListFilterMode {
OFF,
WHITELIST,
BLACKLIST
}
- private static final Logger log = LoggerFactory.getLogger(ListMailFilter.class);
-
private final ListFilterMode mode;
private final Pattern mailPattern;
@@ -55,7 +54,7 @@
boolean match = mailPattern.matcher(message.from().email).find();
if (mode == ListFilterMode.WHITELIST && !match || mode == ListFilterMode.BLACKLIST && match) {
- log.info("Mail message from " + message.from() + " rejected by list filter");
+ logger.atInfo().log("Mail message from %s rejected by list filter", message.from());
return false;
}
return true;
diff --git a/java/com/google/gerrit/server/mail/receive/ImapMailReceiver.java b/java/com/google/gerrit/server/mail/receive/ImapMailReceiver.java
index 6bb6211..871caf7 100644
--- a/java/com/google/gerrit/server/mail/receive/ImapMailReceiver.java
+++ b/java/com/google/gerrit/server/mail/receive/ImapMailReceiver.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.mail.receive;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.server.git.WorkQueue;
import com.google.gerrit.server.mail.EmailSettings;
import com.google.gerrit.server.mail.Encryption;
@@ -24,12 +25,11 @@
import java.util.List;
import org.apache.commons.net.imap.IMAPClient;
import org.apache.commons.net.imap.IMAPSClient;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class ImapMailReceiver extends MailReceiver {
- private static final Logger log = LoggerFactory.getLogger(ImapMailReceiver.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
private static final String INBOX_FOLDER = "INBOX";
@Inject
@@ -71,7 +71,7 @@
// should fetch.
if (!imap.fetch("1:*", "(INTERNALDATE)")) {
// false indicates that there are no messages to fetch
- log.info("Fetched 0 messages via IMAP");
+ logger.atInfo().log("Fetched 0 messages via IMAP");
return;
}
// Format of reply is one line per email and one line to indicate
@@ -81,7 +81,7 @@
// * 2 FETCH (INTERNALDATE "Mon, 24 Oct 2016 16:53:22 +0200 (CEST)")
// AAAC OK FETCH completed.
int numMessages = imap.getReplyStrings().length - 1;
- log.info("Fetched " + numMessages + " messages via IMAP");
+ logger.atInfo().log("Fetched %d messages via IMAP", numMessages);
// Fetch the full version of all emails
List<MailMessage> mailMessages = new ArrayList<>(numMessages);
for (int i = 1; i <= numMessages; i++) {
@@ -108,21 +108,23 @@
if (imap.store(i + ":" + i, "+FLAGS", "(\\Deleted)")) {
pendingDeletion.remove(mailMessage.id());
} else {
- log.error("Could not mark mail message as deleted: " + mailMessage.id());
+ logger
+ .atSevere()
+ .log("Could not mark mail message as deleted: %s", mailMessage.id());
}
} else {
mailMessages.add(mailMessage);
}
} catch (MailParsingException e) {
- log.error("Exception while parsing email after IMAP fetch", e);
+ logger.atSevere().withCause(e).log("Exception while parsing email after IMAP fetch");
}
} else {
- log.error("IMAP fetch failed. Will retry in next fetch cycle.");
+ logger.atSevere().log("IMAP fetch failed. Will retry in next fetch cycle.");
}
}
// Permanently delete emails marked for deletion
if (!imap.expunge()) {
- log.error("Could not expunge IMAP emails");
+ logger.atSevere().log("Could not expunge IMAP emails");
}
dispatchMailProcessor(mailMessages, async);
} finally {
diff --git a/java/com/google/gerrit/server/mail/receive/MailHeaderParser.java b/java/com/google/gerrit/server/mail/receive/MailHeaderParser.java
index 05525bd..224df9a 100644
--- a/java/com/google/gerrit/server/mail/receive/MailHeaderParser.java
+++ b/java/com/google/gerrit/server/mail/receive/MailHeaderParser.java
@@ -16,18 +16,17 @@
import com.google.common.base.Splitter;
import com.google.common.base.Strings;
+import com.google.common.flogger.FluentLogger;
import com.google.common.primitives.Ints;
import com.google.gerrit.server.mail.MailHeader;
import com.google.gerrit.server.mail.MailUtil;
import java.sql.Timestamp;
import java.time.Instant;
import java.time.format.DateTimeParseException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Parse metadata from inbound email */
public class MailHeaderParser {
- private static final Logger log = LoggerFactory.getLogger(MailHeaderParser.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static MailMetadata parse(MailMessage m) {
MailMetadata metadata = new MailMetadata();
@@ -47,7 +46,10 @@
try {
metadata.timestamp = Timestamp.from(MailUtil.rfcDateformatter.parse(ts, Instant::from));
} catch (DateTimeParseException e) {
- log.error("Mail: Error while parsing timestamp from header of message " + m.id(), e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log("Mail: Error while parsing timestamp from header of message %s", m.id());
}
} else if (header.startsWith(MailHeader.MESSAGE_TYPE.fieldWithDelimiter())) {
metadata.messageType =
@@ -93,7 +95,10 @@
try {
metadata.timestamp = Timestamp.from(MailUtil.rfcDateformatter.parse(ts, Instant::from));
} catch (DateTimeParseException e) {
- log.error("Mail: Error while parsing timestamp from footer of message " + m.id(), e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log("Mail: Error while parsing timestamp from footer of message %s", m.id());
}
} else if (metadata.messageType == null && line.contains(MailHeader.MESSAGE_TYPE.getName())) {
metadata.messageType = extractFooter(MailHeader.MESSAGE_TYPE.withDelimiter(), line);
diff --git a/java/com/google/gerrit/server/mail/receive/MailProcessor.java b/java/com/google/gerrit/server/mail/receive/MailProcessor.java
index c558d63..add2c6d 100644
--- a/java/com/google/gerrit/server/mail/receive/MailProcessor.java
+++ b/java/com/google/gerrit/server/mail/receive/MailProcessor.java
@@ -19,6 +19,7 @@
import com.google.common.base.Strings;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ImmutableList;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.TimeUtil;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.client.Side;
@@ -70,13 +71,11 @@
import java.util.Map;
import java.util.Optional;
import java.util.Set;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** A service that can attach the comments from a {@link MailMessage} to a change. */
@Singleton
public class MailProcessor {
- private static final Logger log = LoggerFactory.getLogger(MailProcessor.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final Emails emails;
private final InboundEmailRejectionSender.Factory emailRejectionSender;
@@ -145,11 +144,11 @@
throws OrmException, UpdateException, RestApiException, IOException {
for (DynamicMap.Entry<MailFilter> filter : mailFilters) {
if (!filter.getProvider().get().shouldProcessMessage(message)) {
- log.warn(
- "Message {} filtered by plugin {} {}. Will delete message.",
- message.id(),
- filter.getPluginName(),
- filter.getExportName());
+ logger
+ .atWarning()
+ .log(
+ "Message %s filtered by plugin %s %s. Will delete message.",
+ message.id(), filter.getPluginName(), filter.getExportName());
return;
}
}
@@ -157,10 +156,11 @@
MailMetadata metadata = MailHeaderParser.parse(message);
if (!metadata.hasRequiredFields()) {
- log.error(
- "Message {} is missing required metadata, have {}. Will delete message.",
- message.id(),
- metadata);
+ logger
+ .atSevere()
+ .log(
+ "Message %s is missing required metadata, have %s. Will delete message.",
+ message.id(), metadata);
sendRejectionEmail(message, InboundEmailRejectionSender.Error.PARSING_ERROR);
return;
}
@@ -168,11 +168,13 @@
Set<Account.Id> accountIds = emails.getAccountFor(metadata.author);
if (accountIds.size() != 1) {
- log.error(
- "Address {} could not be matched to a unique account. It was matched to {}."
- + " Will delete message.",
- metadata.author,
- accountIds);
+ logger
+ .atSevere()
+ .log(
+ "Address %s could not be matched to a unique account. It was matched to %s."
+ + " Will delete message.",
+ metadata.author, accountIds);
+
// We don't want to send an email if no accounts are linked to it.
if (accountIds.size() > 1) {
sendRejectionEmail(message, InboundEmailRejectionSender.Error.UNKNOWN_ACCOUNT);
@@ -182,11 +184,11 @@
Account.Id accountId = accountIds.iterator().next();
Optional<AccountState> accountState = accountCache.get(accountId);
if (!accountState.isPresent()) {
- log.warn("Mail: Account {} doesn't exist. Will delete message.", accountId);
+ logger.atWarning().log("Mail: Account %s doesn't exist. Will delete message.", accountId);
return;
}
if (!accountState.get().getAccount().isActive()) {
- log.warn(String.format("Mail: Account %s is inactive. Will delete message.", accountId));
+ logger.atWarning().log("Mail: Account %s is inactive. Will delete message.", accountId);
sendRejectionEmail(message, InboundEmailRejectionSender.Error.INACTIVE_ACCOUNT);
return;
}
@@ -200,7 +202,7 @@
emailRejectionSender.create(message.from(), message.id(), reason);
em.send();
} catch (Exception e) {
- log.error("Cannot send email to warn for an error", e);
+ logger.atSevere().withCause(e).log("Cannot send email to warn for an error");
}
}
@@ -211,19 +213,20 @@
List<ChangeData> changeDataList =
queryProvider.get().byLegacyChangeId(new Change.Id(metadata.changeNumber));
if (changeDataList.size() != 1) {
- log.error(
- "Message {} references unique change {}, but there are {} matching changes in "
- + "the index. Will delete message.",
- message.id(),
- metadata.changeNumber,
- changeDataList.size());
+ logger
+ .atSevere()
+ .log(
+ "Message %s references unique change %s,"
+ + " but there are %d matching changes in the index."
+ + " Will delete message.",
+ message.id(), metadata.changeNumber, changeDataList.size());
sendRejectionEmail(message, InboundEmailRejectionSender.Error.INTERNAL_EXCEPTION);
return;
}
ChangeData cd = changeDataList.get(0);
if (existingMessageIds(cd).contains(message.id())) {
- log.info("Message {} was already processed. Will delete message.", message.id());
+ logger.atInfo().log("Message %s was already processed. Will delete message.", message.id());
return;
}
// Get all comments; filter and sort them to get the original list of
@@ -246,7 +249,9 @@
}
if (parsedComments.isEmpty()) {
- log.warn("Could not parse any comments from {}. Will delete message.", message.id());
+ logger
+ .atWarning()
+ .log("Could not parse any comments from %s. Will delete message.", message.id());
sendRejectionEmail(message, InboundEmailRejectionSender.Error.PARSING_ERROR);
return;
}
diff --git a/java/com/google/gerrit/server/mail/receive/MailReceiver.java b/java/com/google/gerrit/server/mail/receive/MailReceiver.java
index 6deb240..ebab65e 100644
--- a/java/com/google/gerrit/server/mail/receive/MailReceiver.java
+++ b/java/com/google/gerrit/server/mail/receive/MailReceiver.java
@@ -15,6 +15,7 @@
package com.google.gerrit.server.mail.receive;
import com.google.common.annotations.VisibleForTesting;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.gerrit.lifecycle.LifecycleModule;
@@ -30,12 +31,10 @@
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.Future;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** MailReceiver implements base functionality for receiving emails. */
public abstract class MailReceiver implements LifecycleListener {
- private static final Logger log = LoggerFactory.getLogger(MailReceiver.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
protected EmailSettings mailSettings;
protected Set<String> pendingDeletion;
@@ -91,7 +90,7 @@
try {
MailReceiver.this.handleEmails(true);
} catch (MailTransferException | IOException e) {
- log.error("Error while fetching emails", e);
+ logger.atSevere().withCause(e).log("Error while fetching emails");
}
}
},
@@ -141,7 +140,10 @@
mailProcessor.process(m);
requestDeletion(m.id());
} catch (RestApiException | UpdateException e) {
- log.error("Mail: Can't process message " + m.id() + " . Won't delete.", e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log("Mail: Can't process message %s . Won't delete.", m.id());
}
});
} else {
@@ -150,7 +152,7 @@
mailProcessor.process(m);
requestDeletion(m.id());
} catch (RestApiException | UpdateException e) {
- log.error("Mail: Can't process messages. Won't delete.", e);
+ logger.atSevere().withCause(e).log("Mail: Can't process messages. Won't delete.");
}
}
}
diff --git a/java/com/google/gerrit/server/mail/receive/Pop3MailReceiver.java b/java/com/google/gerrit/server/mail/receive/Pop3MailReceiver.java
index bbb7e66..a3ea265 100644
--- a/java/com/google/gerrit/server/mail/receive/Pop3MailReceiver.java
+++ b/java/com/google/gerrit/server/mail/receive/Pop3MailReceiver.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.mail.receive;
+import com.google.common.flogger.FluentLogger;
import com.google.common.primitives.Ints;
import com.google.gerrit.server.git.WorkQueue;
import com.google.gerrit.server.mail.EmailSettings;
@@ -27,13 +28,11 @@
import org.apache.commons.net.pop3.POP3Client;
import org.apache.commons.net.pop3.POP3MessageInfo;
import org.apache.commons.net.pop3.POP3SClient;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** An implementation of {@link MailReceiver} for POP3. */
@Singleton
public class Pop3MailReceiver extends MailReceiver {
- private static final Logger log = LoggerFactory.getLogger(Pop3MailReceiver.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
@Inject
Pop3MailReceiver(EmailSettings mailSettings, MailProcessor mailProcessor, WorkQueue workQueue) {
@@ -70,7 +69,7 @@
if (messages == null) {
throw new MailTransferException("Could not retrieve message list via POP3");
}
- log.info("Received " + messages.length + " messages via POP3");
+ logger.atInfo().log("Received %d messages via POP3", messages.length);
// Fetch messages
List<MailMessage> mailMessages = new ArrayList<>();
for (POP3MessageInfo msginfo : messages) {
@@ -93,14 +92,14 @@
if (pop3.deleteMessage(msginfo.number)) {
pendingDeletion.remove(mailMessage.id());
} else {
- log.error("Could not delete message " + msginfo.number);
+ logger.atSevere().log("Could not delete message %d", msginfo.number);
}
} else {
// Process message further
mailMessages.add(mailMessage);
}
} catch (MailParsingException e) {
- log.error("Could not parse message " + msginfo.number);
+ logger.atSevere().log("Could not parse message %d", msginfo.number);
}
}
dispatchMailProcessor(mailMessages, async);
diff --git a/java/com/google/gerrit/server/mail/send/ChangeEmail.java b/java/com/google/gerrit/server/mail/send/ChangeEmail.java
index 11f50a9..503fbd0 100644
--- a/java/com/google/gerrit/server/mail/send/ChangeEmail.java
+++ b/java/com/google/gerrit/server/mail/send/ChangeEmail.java
@@ -16,6 +16,7 @@
import com.google.common.base.Splitter;
import com.google.common.collect.ListMultimap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.errors.EmailException;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.api.changes.RecipientType;
@@ -62,12 +63,10 @@
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.util.RawParseUtils;
import org.eclipse.jgit.util.TemporaryBuffer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Sends an email to one or more interested parties. */
public abstract class ChangeEmail extends NotificationEmail {
- private static final Logger log = LoggerFactory.getLogger(ChangeEmail.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
protected static ChangeData newChangeData(
EmailArguments ea, Project.NameKey project, Change.Id id) {
@@ -300,7 +299,7 @@
}
return detail.toString();
} catch (Exception err) {
- log.warn("Cannot format change detail", err);
+ logger.atWarning().withCause(err).log("Cannot format change detail");
return "";
}
}
@@ -376,7 +375,7 @@
add(RecipientType.CC, id);
}
} catch (OrmException err) {
- log.warn("Cannot CC users that reviewed updated change", err);
+ logger.atWarning().withCause(err).log("Cannot CC users that reviewed updated change");
}
}
@@ -391,7 +390,7 @@
add(RecipientType.CC, id);
}
} catch (OrmException err) {
- log.warn("Cannot CC users that commented on updated change", err);
+ logger.atWarning().withCause(err).log("Cannot CC users that commented on updated change");
}
}
@@ -514,7 +513,7 @@
reviewers.add(getNameEmailFor(who));
}
} catch (OrmException e) {
- log.warn("Cannot get change reviewers", e);
+ logger.atWarning().withCause(e).log("Cannot get change reviewers");
}
return reviewers;
}
@@ -536,10 +535,10 @@
return "[Octopus merge; cannot be formatted as a diff.]\n";
}
} catch (PatchListObjectTooLargeException e) {
- log.warn("Cannot format patch " + e.getMessage());
+ logger.atWarning().log("Cannot format patch %s", e.getMessage());
return "";
} catch (PatchListNotAvailableException e) {
- log.error("Cannot format patch", e);
+ logger.atSevere().withCause(e).log("Cannot format patch");
return "";
}
@@ -556,11 +555,11 @@
if (JGitText.get().inMemoryBufferLimitExceeded.equals(e.getMessage())) {
return "";
}
- log.error("Cannot format patch", e);
+ logger.atSevere().withCause(e).log("Cannot format patch");
return "";
}
} catch (IOException e) {
- log.error("Cannot open repository to format patch", e);
+ logger.atSevere().withCause(e).log("Cannot open repository to format patch");
return "";
}
}
diff --git a/java/com/google/gerrit/server/mail/send/CommentSender.java b/java/com/google/gerrit/server/mail/send/CommentSender.java
index bbff29f..9272297 100644
--- a/java/com/google/gerrit/server/mail/send/CommentSender.java
+++ b/java/com/google/gerrit/server/mail/send/CommentSender.java
@@ -18,6 +18,7 @@
import com.google.common.base.Strings;
import com.google.common.collect.Ordering;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.FilenameComparator;
import com.google.gerrit.common.errors.EmailException;
import com.google.gerrit.common.errors.NoSuchEntityException;
@@ -58,12 +59,10 @@
import org.apache.james.mime4j.dom.field.FieldName;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.Repository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Send comments, after the author of them hit used Publish Comments in the UI. */
public class CommentSender extends ReplyToChangeSender {
- private static final Logger log = LoggerFactory.getLogger(CommentSender.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public interface Factory {
CommentSender create(Project.NameKey project, Change.Id id);
@@ -205,9 +204,9 @@
try {
patchList = getPatchList();
} catch (PatchListObjectTooLargeException e) {
- log.warn("Failed to get patch list: " + e.getMessage());
+ logger.atWarning().log("Failed to get patch list: %s", e.getMessage());
} catch (PatchListNotAvailableException e) {
- log.error("Failed to get patch list", e);
+ logger.atSevere().withCause(e).log("Failed to get patch list");
}
}
@@ -227,12 +226,12 @@
try {
currentGroup.fileData = new PatchFile(repo, patchList, c.key.filename);
} catch (IOException e) {
- log.warn(
- "Cannot load {} from {} in {}",
- c.key.filename,
- patchList.getNewId().name(),
- projectState.getName(),
- e);
+ logger
+ .atWarning()
+ .withCause(e)
+ .log(
+ "Cannot load %s from %s in %s",
+ c.key.filename, patchList.getNewId().name(), projectState.getName());
currentGroup.fileData = null;
}
}
@@ -322,7 +321,7 @@
try {
return commentsUtil.getPublished(args.db.get(), changeData.notes(), key);
} catch (OrmException e) {
- log.warn("Could not find the parent of this comment: {}", child.toString());
+ logger.atWarning().log("Could not find the parent of this comment: %s", child);
return Optional.empty();
}
}
@@ -540,16 +539,16 @@
return fileInfo.getLine(side, lineNbr);
} catch (IOException err) {
// Default to the empty string if the file cannot be safely read.
- log.warn("Failed to read file on side {}", side, err);
+ logger.atWarning().withCause(err).log("Failed to read file on side %d", side);
return "";
} catch (IndexOutOfBoundsException err) {
// Default to the empty string if the given line number does not appear
// in the file.
- log.debug("Failed to get line number of file on side {}", side, err);
+ logger.atFine().withCause(err).log("Failed to get line number of file on side %d", side);
return "";
} catch (NoSuchEntityException err) {
// Default to the empty string if the side cannot be found.
- log.warn("Side {} of file didn't exist", side, err);
+ logger.atWarning().withCause(err).log("Side %d of file didn't exist", side);
return "";
}
}
diff --git a/java/com/google/gerrit/server/mail/send/CreateChangeSender.java b/java/com/google/gerrit/server/mail/send/CreateChangeSender.java
index 156fde5..fc9c14a 100644
--- a/java/com/google/gerrit/server/mail/send/CreateChangeSender.java
+++ b/java/com/google/gerrit/server/mail/send/CreateChangeSender.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.mail.send;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.errors.EmailException;
import com.google.gerrit.extensions.api.changes.RecipientType;
import com.google.gerrit.reviewdb.client.Account;
@@ -27,12 +28,10 @@
import com.google.inject.Inject;
import com.google.inject.assistedinject.Assisted;
import java.util.stream.StreamSupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Notify interested parties of a brand new change. */
public class CreateChangeSender extends NewChangeSender {
- private static final Logger log = LoggerFactory.getLogger(CreateChangeSender.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public interface Factory {
CreateChangeSender create(Project.NameKey project, Change.Id id);
@@ -71,7 +70,7 @@
// Just don't CC everyone. Better to send a partial message to those
// we already have queued up then to fail deliver entirely to people
// who have a lower interest in the change.
- log.warn("Cannot notify watchers for new change", err);
+ logger.atWarning().withCause(err).log("Cannot notify watchers for new change");
}
includeWatchers(NotifyType.NEW_PATCHSETS, !change.isWorkInProgress() && !change.isPrivate());
diff --git a/java/com/google/gerrit/server/mail/send/NotificationEmail.java b/java/com/google/gerrit/server/mail/send/NotificationEmail.java
index 2a24f38..0cc7a1d 100644
--- a/java/com/google/gerrit/server/mail/send/NotificationEmail.java
+++ b/java/com/google/gerrit/server/mail/send/NotificationEmail.java
@@ -16,6 +16,7 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.Iterables;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.errors.EmailException;
import com.google.gerrit.extensions.api.changes.RecipientType;
import com.google.gerrit.reviewdb.client.Account;
@@ -27,12 +28,10 @@
import com.google.gwtorm.server.OrmException;
import java.util.HashMap;
import java.util.Map;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Common class for notifications that are related to a project and branch */
public abstract class NotificationEmail extends OutgoingEmail {
- private static final Logger log = LoggerFactory.getLogger(NotificationEmail.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
protected Branch.NameKey branch;
@@ -73,7 +72,7 @@
// Just don't CC everyone. Better to send a partial message to those
// we already have queued up then to fail deliver entirely to people
// who have a lower interest in the change.
- log.warn("Cannot BCC watchers for " + type, err);
+ logger.atWarning().withCause(err).log("Cannot BCC watchers for %s", type);
}
}
diff --git a/java/com/google/gerrit/server/mail/send/OutgoingEmail.java b/java/com/google/gerrit/server/mail/send/OutgoingEmail.java
index f1f1778..a62a910 100644
--- a/java/com/google/gerrit/server/mail/send/OutgoingEmail.java
+++ b/java/com/google/gerrit/server/mail/send/OutgoingEmail.java
@@ -20,6 +20,7 @@
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.ListMultimap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.errors.EmailException;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.api.changes.RecipientType;
@@ -51,12 +52,10 @@
import java.util.StringJoiner;
import org.apache.james.mime4j.dom.field.FieldName;
import org.eclipse.jgit.util.SystemReader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Sends an email to one or more interested parties. */
public abstract class OutgoingEmail {
- private static final Logger log = LoggerFactory.getLogger(OutgoingEmail.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
protected String messageClass;
private final Set<Account.Id> rcptTo = new HashSet<>();
@@ -470,7 +469,7 @@
add(rt, toAddress(to), override);
}
} catch (PermissionBackendException e) {
- log.error("Error reading database for account: " + to, e);
+ logger.atSevere().withCause(e).log("Error reading database for account: %s", to);
}
}
@@ -491,9 +490,9 @@
protected void add(RecipientType rt, Address addr, boolean override) {
if (addr != null && addr.getEmail() != null && addr.getEmail().length() > 0) {
if (!args.validator.isValid(addr.getEmail())) {
- log.warn("Not emailing " + addr.getEmail() + " (invalid email address)");
+ logger.atWarning().log("Not emailing %s (invalid email address)", addr.getEmail());
} else if (!args.emailSender.canEmail(addr.getEmail())) {
- log.warn("Not emailing " + addr.getEmail() + " (prohibited by allowrcpt)");
+ logger.atWarning().log("Not emailing %s (prohibited by allowrcpt)", addr.getEmail());
} else {
if (!smtpRcptTo.add(addr)) {
if (!override) {
diff --git a/java/com/google/gerrit/server/mail/send/OutgoingEmailValidator.java b/java/com/google/gerrit/server/mail/send/OutgoingEmailValidator.java
index 1a4d39b..bc6c89e 100644
--- a/java/com/google/gerrit/server/mail/send/OutgoingEmailValidator.java
+++ b/java/com/google/gerrit/server/mail/send/OutgoingEmailValidator.java
@@ -16,18 +16,17 @@
import static org.apache.commons.validator.routines.DomainValidator.ArrayType.GENERIC_PLUS;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import org.apache.commons.validator.routines.DomainValidator;
import org.apache.commons.validator.routines.EmailValidator;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class OutgoingEmailValidator {
- private static final Logger log = LoggerFactory.getLogger(OutgoingEmailValidator.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
@Inject
OutgoingEmailValidator(@GerritServerConfig Config config) {
@@ -38,7 +37,7 @@
} catch (IllegalStateException e) {
// Should only happen in tests, where the OutgoingEmailValidator
// is instantiated repeatedly.
- log.error("Failed to update TLD override: " + e.getMessage());
+ logger.atSevere().log("Failed to update TLD override: %s", e.getMessage());
}
}
}
diff --git a/java/com/google/gerrit/server/mail/send/ProjectWatch.java b/java/com/google/gerrit/server/mail/send/ProjectWatch.java
index 5b361f1..8f6e72d 100644
--- a/java/com/google/gerrit/server/mail/send/ProjectWatch.java
+++ b/java/com/google/gerrit/server/mail/send/ProjectWatch.java
@@ -16,6 +16,7 @@
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableSet;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.GroupDescription;
import com.google.gerrit.common.data.GroupReference;
import com.google.gerrit.index.query.Predicate;
@@ -40,11 +41,9 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class ProjectWatch {
- private static final Logger log = LoggerFactory.getLogger(ProjectWatch.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
protected final EmailArguments args;
protected final ProjectState projectState;
@@ -102,12 +101,11 @@
try {
add(matching, nc);
} catch (QueryParseException e) {
- log.warn(
- "Project {} has invalid notify {} filter \"{}\": {}",
- state.getName(),
- nc.getName(),
- nc.getFilter(),
- e.getMessage());
+ logger
+ .atWarning()
+ .log(
+ "Project %s has invalid notify %s filter \"%s\": %s",
+ state.getName(), nc.getName(), nc.getFilter(), e.getMessage());
}
}
}
diff --git a/java/com/google/gerrit/server/mime/DefaultFileExtensionRegistry.java b/java/com/google/gerrit/server/mime/DefaultFileExtensionRegistry.java
index 7f0661c..1814e54 100644
--- a/java/com/google/gerrit/server/mime/DefaultFileExtensionRegistry.java
+++ b/java/com/google/gerrit/server/mime/DefaultFileExtensionRegistry.java
@@ -15,6 +15,7 @@
package com.google.gerrit.server.mime;
import com.google.common.collect.ImmutableMap;
+import com.google.common.flogger.FluentLogger;
import eu.medsea.mimeutil.MimeException;
import eu.medsea.mimeutil.MimeType;
import eu.medsea.mimeutil.MimeUtil;
@@ -27,12 +28,11 @@
import java.util.Collections;
import java.util.Map;
import java.util.Properties;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Loads mime types from {@code mime-types.properties} at specificity of 2. */
public class DefaultFileExtensionRegistry extends MimeDetector {
- private static final Logger log = LoggerFactory.getLogger(DefaultFileExtensionRegistry.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
private static final ImmutableMap<String, MimeType> TYPES;
static {
@@ -41,7 +41,7 @@
DefaultFileExtensionRegistry.class.getResourceAsStream("mime-types.properties")) {
prop.load(in);
} catch (IOException e) {
- log.warn("Cannot load mime-types.properties", e);
+ logger.atWarning().withCause(e).log("Cannot load mime-types.properties");
}
ImmutableMap.Builder<String, MimeType> b = ImmutableMap.builder();
diff --git a/java/com/google/gerrit/server/mime/MimeUtilFileTypeRegistry.java b/java/com/google/gerrit/server/mime/MimeUtilFileTypeRegistry.java
index 7cb34e2..eecf935 100644
--- a/java/com/google/gerrit/server/mime/MimeUtilFileTypeRegistry.java
+++ b/java/com/google/gerrit/server/mime/MimeUtilFileTypeRegistry.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.mime;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@@ -29,14 +30,13 @@
import java.util.List;
import java.util.Set;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class MimeUtilFileTypeRegistry implements FileTypeRegistry {
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
private static final String KEY_SAFE = "safe";
private static final String SECTION_MIMETYPE = "mimetype";
- private static final Logger log = LoggerFactory.getLogger(MimeUtilFileTypeRegistry.class);
private final Config cfg;
private final MimeUtil2 mimeUtil;
@@ -85,7 +85,7 @@
try {
mimeTypes.addAll(mimeUtil.getMimeTypes(content));
} catch (MimeException e) {
- log.warn("Unable to determine MIME type from content", e);
+ logger.atWarning().withCause(e).log("Unable to determine MIME type from content");
}
}
return getMimeType(mimeTypes, path);
@@ -98,7 +98,7 @@
try {
mimeTypes.addAll(mimeUtil.getMimeTypes(is));
} catch (MimeException e) {
- log.warn("Unable to determine MIME type from content", e);
+ logger.atWarning().withCause(e).log("Unable to determine MIME type from content");
}
return getMimeType(mimeTypes, path);
}
@@ -108,7 +108,7 @@
try {
mimeTypes.addAll(mimeUtil.getMimeTypes(path));
} catch (MimeException e) {
- log.warn("Unable to determine MIME type from path", e);
+ logger.atWarning().withCause(e).log("Unable to determine MIME type from path");
}
if (isUnknownType(mimeTypes)) {
diff --git a/java/com/google/gerrit/server/notedb/ChangeNotes.java b/java/com/google/gerrit/server/notedb/ChangeNotes.java
index 99868a4..874ee45 100644
--- a/java/com/google/gerrit/server/notedb/ChangeNotes.java
+++ b/java/com/google/gerrit/server/notedb/ChangeNotes.java
@@ -36,6 +36,7 @@
import com.google.common.collect.Sets;
import com.google.common.collect.Sets.SetView;
import com.google.common.collect.Streams;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.SubmitRecord;
import com.google.gerrit.metrics.Timer1;
@@ -83,12 +84,10 @@
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** View of a single {@link Change} based on the log of its notes branch. */
public class ChangeNotes extends AbstractChangeNotes<ChangeNotes> {
- private static final Logger log = LoggerFactory.getLogger(ChangeNotes.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
static final Ordering<PatchSetApproval> PSA_BY_TIME =
Ordering.from(comparing(PatchSetApproval::getGranted));
@@ -148,7 +147,7 @@
throw new NoSuchChangeException(changeId);
}
if (changes.size() != 1) {
- log.error("Multiple changes found for {}", changeId.get());
+ logger.atSevere().log("Multiple changes found for %d", changeId.get());
throw new NoSuchChangeException(changeId);
}
return changes.get(0).notes();
@@ -365,20 +364,22 @@
if (defaultStorage == PrimaryStorage.REVIEW_DB) {
// If changes should exist in ReviewDb, it's worth warning about a meta ref with
// no corresponding ReviewDb data.
- log.warn("skipping change {} found in project {} but not in ReviewDb", id, project);
+ logger
+ .atWarning()
+ .log("skipping change %s found in project %s but not in ReviewDb", id, project);
return null;
}
// TODO(dborowitz): See discussion in NoteDbBatchUpdate#newChangeContext.
change = ChangeNotes.Factory.newNoteDbOnlyChange(project, id);
} else if (!change.getProject().equals(project)) {
- log.error(
- "skipping change {} found in project {} because ReviewDb change has" + " project {}",
- id,
- project,
- change.getProject());
+ logger
+ .atSevere()
+ .log(
+ "skipping change %s found in project %s because ReviewDb change has project %s",
+ id, project, change.getProject());
return null;
}
- log.debug("adding change {} found in project {}", id, project);
+ logger.atFine().log("adding change %s found in project %s", id, project);
return toResult(change);
}
@@ -761,7 +762,7 @@
//
// Parse notes from the staged result so we can return something useful
// to the caller instead of throwing.
- log.debug("Rebuilding change {} failed: {}", getChangeId(), e.getMessage());
+ logger.atFine().log("Rebuilding change %s failed: %s", getChangeId(), e.getMessage());
args.metrics.autoRebuildFailureCount.increment(CHANGES);
rebuildResult = checkNotNull(r);
checkNotNull(r.newState());
@@ -778,11 +779,13 @@
} catch (OrmException e) {
throw new IOException(e);
} finally {
- log.debug(
- "Rebuilt change {} in project {} in {} ms",
- getChangeId(),
- getProjectName(),
- TimeUnit.MILLISECONDS.convert(timer.stop(), TimeUnit.NANOSECONDS));
+ logger
+ .atFine()
+ .log(
+ "Rebuilt change %s in project %s in %s ms",
+ getChangeId(),
+ getProjectName(),
+ TimeUnit.MILLISECONDS.convert(timer.stop(), TimeUnit.NANOSECONDS));
}
}
}
diff --git a/java/com/google/gerrit/server/notedb/ChangeNotesParser.java b/java/com/google/gerrit/server/notedb/ChangeNotesParser.java
index 689b024..a505929 100644
--- a/java/com/google/gerrit/server/notedb/ChangeNotesParser.java
+++ b/java/com/google/gerrit/server/notedb/ChangeNotesParser.java
@@ -51,6 +51,7 @@
import com.google.common.collect.Sets;
import com.google.common.collect.Table;
import com.google.common.collect.Tables;
+import com.google.common.flogger.FluentLogger;
import com.google.common.primitives.Ints;
import com.google.gerrit.common.data.LabelType;
import com.google.gerrit.common.data.SubmitRecord;
@@ -100,11 +101,9 @@
import org.eclipse.jgit.revwalk.FooterKey;
import org.eclipse.jgit.util.GitDateParser;
import org.eclipse.jgit.util.RawParseUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
class ChangeNotesParser {
- private static final Logger log = LoggerFactory.getLogger(ChangeNotesParser.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
// Sentinel RevId indicating a mutable field on a patch set was parsed, but
// the parser does not yet know its commit SHA-1.
@@ -1092,7 +1091,9 @@
approvals.values(), PatchSetApproval::getPatchSetId, missing);
if (!missing.isEmpty()) {
- log.warn("ignoring {} additional entities due to missing patch sets: {}", pruned, missing);
+ logger
+ .atWarning()
+ .log("ignoring %s additional entities due to missing patch sets: %s", pruned, missing);
}
}
diff --git a/java/com/google/gerrit/server/notedb/DraftCommentNotes.java b/java/com/google/gerrit/server/notedb/DraftCommentNotes.java
index f66665c..487fee3 100644
--- a/java/com/google/gerrit/server/notedb/DraftCommentNotes.java
+++ b/java/com/google/gerrit/server/notedb/DraftCommentNotes.java
@@ -23,6 +23,7 @@
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.MultimapBuilder;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.metrics.Timer1;
import com.google.gerrit.reviewdb.client.Account;
@@ -50,12 +51,10 @@
import org.eclipse.jgit.notes.NoteMap;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.transport.ReceiveCommand;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** View of the draft comments for a single {@link Change} based on the log of its drafts branch. */
public class DraftCommentNotes extends AbstractChangeNotes<DraftCommentNotes> {
- private static final Logger log = LoggerFactory.getLogger(DraftCommentNotes.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public interface Factory {
DraftCommentNotes create(Change change, Account.Id accountId);
@@ -225,7 +224,9 @@
repo.scanForRepoChanges();
} catch (OrmException | IOException e) {
// See ChangeNotes#rebuildAndOpen.
- log.debug("Rebuilding change {} via drafts failed: {}", getChangeId(), e.getMessage());
+ logger
+ .atFine()
+ .log("Rebuilding change %s via drafts failed: %s", getChangeId(), e.getMessage());
args.metrics.autoRebuildFailureCount.increment(CHANGES);
checkNotNull(r.staged());
return LoadHandle.create(
@@ -238,11 +239,13 @@
} catch (OrmException e) {
throw new IOException(e);
} finally {
- log.debug(
- "Rebuilt change {} in {} in {} ms via drafts",
- getChangeId(),
- change != null ? "project " + change.getProject() : "unknown project",
- TimeUnit.MILLISECONDS.convert(timer.stop(), TimeUnit.NANOSECONDS));
+ logger
+ .atFine()
+ .log(
+ "Rebuilt change %s in %s in %s ms via drafts",
+ getChangeId(),
+ change != null ? "project " + change.getProject() : "unknown project",
+ TimeUnit.MILLISECONDS.convert(timer.stop(), TimeUnit.NANOSECONDS));
}
}
diff --git a/java/com/google/gerrit/server/notedb/PrimaryStorageMigrator.java b/java/com/google/gerrit/server/notedb/PrimaryStorageMigrator.java
index 69cc2eb..18c5752 100644
--- a/java/com/google/gerrit/server/notedb/PrimaryStorageMigrator.java
+++ b/java/com/google/gerrit/server/notedb/PrimaryStorageMigrator.java
@@ -27,6 +27,7 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Stopwatch;
import com.google.common.collect.ImmutableMap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.TimeUtil;
import com.google.gerrit.extensions.restapi.RestApiException;
@@ -72,13 +73,11 @@
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Helper to migrate the {@link PrimaryStorage} of individual changes. */
@Singleton
public class PrimaryStorageMigrator {
- private static final Logger log = LoggerFactory.getLogger(PrimaryStorageMigrator.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
/**
* Exception thrown during migration if the change has no {@code noteDbState} field at the
@@ -277,7 +276,9 @@
// the primary storage to NoteDb.
setPrimaryStorageNoteDb(id, rebuiltState);
- log.debug("Migrated change {} to NoteDb primary in {}ms", id, sw.elapsed(MILLISECONDS));
+ logger
+ .atFine()
+ .log("Migrated change %s to NoteDb primary in %sms", id, sw.elapsed(MILLISECONDS));
}
private Change setReadOnlyInReviewDb(Change.Id id) throws OrmException {
@@ -413,7 +414,9 @@
rebuilder.rebuildReviewDb(db(), project, id);
setPrimaryStorageReviewDb(id, newMetaId);
releaseReadOnlyLeaseInNoteDb(project, id);
- log.debug("Migrated change {} to ReviewDb primary in {}ms", id, sw.elapsed(MILLISECONDS));
+ logger
+ .atFine()
+ .log("Migrated change %s to ReviewDb primary in %sms", id, sw.elapsed(MILLISECONDS));
}
private ObjectId setReadOnlyInNoteDb(Project.NameKey project, Change.Id id)
diff --git a/java/com/google/gerrit/server/notedb/rebuild/CommentEvent.java b/java/com/google/gerrit/server/notedb/rebuild/CommentEvent.java
index 1fffab4..5514ed1 100644
--- a/java/com/google/gerrit/server/notedb/rebuild/CommentEvent.java
+++ b/java/com/google/gerrit/server/notedb/rebuild/CommentEvent.java
@@ -17,6 +17,7 @@
import static com.google.gerrit.server.CommentsUtil.setCommentRevId;
import com.google.common.base.MoreObjects.ToStringHelper;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.Comment;
import com.google.gerrit.reviewdb.client.PatchLineComment;
@@ -25,11 +26,9 @@
import com.google.gerrit.server.notedb.ChangeUpdate;
import com.google.gerrit.server.patch.PatchListCache;
import com.google.gerrit.server.patch.PatchListNotAvailableException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
class CommentEvent extends Event {
- private static final Logger log = LoggerFactory.getLogger(CommentEvent.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public final Comment c;
private final Change change;
@@ -67,11 +66,11 @@
try {
setCommentRevId(c, cache, change, ps);
} catch (PatchListNotAvailableException e) {
- log.warn(
- "Unable to determine parent commit of patch set {} ({}); omitting inline comment {}",
- ps.getId(),
- ps.getRevision(),
- c);
+ logger
+ .atWarning()
+ .log(
+ "Unable to determine parent commit of patch set %s (%s); omitting inline comment %s",
+ ps.getId(), ps.getRevision(), c);
return;
}
}
diff --git a/java/com/google/gerrit/server/notedb/rebuild/DraftCommentEvent.java b/java/com/google/gerrit/server/notedb/rebuild/DraftCommentEvent.java
index 3bc3a58..caa4393 100644
--- a/java/com/google/gerrit/server/notedb/rebuild/DraftCommentEvent.java
+++ b/java/com/google/gerrit/server/notedb/rebuild/DraftCommentEvent.java
@@ -17,6 +17,7 @@
import static com.google.gerrit.server.CommentsUtil.setCommentRevId;
import com.google.common.base.MoreObjects.ToStringHelper;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.Comment;
import com.google.gerrit.reviewdb.client.PatchSet;
@@ -25,11 +26,9 @@
import com.google.gerrit.server.notedb.ChangeUpdate;
import com.google.gerrit.server.patch.PatchListCache;
import com.google.gerrit.server.patch.PatchListNotAvailableException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
class DraftCommentEvent extends Event {
- private static final Logger log = LoggerFactory.getLogger(DraftCommentEvent.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public final Comment c;
private final Change change;
@@ -65,11 +64,12 @@
try {
setCommentRevId(c, cache, change, ps);
} catch (PatchListNotAvailableException e) {
- log.warn(
- "Unable to determine parent commit of patch set {} ({}); omitting draft inline comment",
- ps.getId(),
- ps.getRevision(),
- c);
+ logger
+ .atWarning()
+ .log(
+ "Unable to determine parent commit of patch set %s (%s);"
+ + " omitting draft inline comment %s",
+ ps.getId(), ps.getRevision(), c);
return;
}
}
diff --git a/java/com/google/gerrit/server/notedb/rebuild/GcAllUsers.java b/java/com/google/gerrit/server/notedb/rebuild/GcAllUsers.java
index 6480e67..6544b23 100644
--- a/java/com/google/gerrit/server/notedb/rebuild/GcAllUsers.java
+++ b/java/com/google/gerrit/server/notedb/rebuild/GcAllUsers.java
@@ -20,6 +20,7 @@
import com.google.common.base.Throwables;
import com.google.common.collect.ImmutableList;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.GarbageCollectionResult;
import com.google.gerrit.server.config.AllUsersName;
@@ -32,12 +33,10 @@
import java.io.PrintWriter;
import java.util.function.Consumer;
import org.eclipse.jgit.lib.Repository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class GcAllUsers {
- private static final Logger log = LoggerFactory.getLogger(GcAllUsers.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final AllUsersName allUsers;
private final GarbageCollection.Factory gcFactory;
@@ -55,7 +54,7 @@
public void runWithLogger() {
// Print log messages using logger, and skip progress.
- run(log::info, null);
+ run(s -> logger.atInfo().log(s), null);
}
public void run(PrintWriter writer) {
diff --git a/java/com/google/gerrit/server/notedb/rebuild/NoteDbMigrator.java b/java/com/google/gerrit/server/notedb/rebuild/NoteDbMigrator.java
index 59fdde7..81d8935 100644
--- a/java/com/google/gerrit/server/notedb/rebuild/NoteDbMigrator.java
+++ b/java/com/google/gerrit/server/notedb/rebuild/NoteDbMigrator.java
@@ -38,6 +38,7 @@
import com.google.common.collect.Ordering;
import com.google.common.collect.SetMultimap;
import com.google.common.collect.Streams;
+import com.google.common.flogger.FluentLogger;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
@@ -109,12 +110,10 @@
import org.eclipse.jgit.transport.ReceiveCommand;
import org.eclipse.jgit.util.FS;
import org.eclipse.jgit.util.io.NullOutputStream;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** One stop shop for migrating a site's change storage from ReviewDb to NoteDb. */
public class NoteDbMigrator implements AutoCloseable {
- private static final Logger log = LoggerFactory.getLogger(NoteDbMigrator.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String AUTO_MIGRATE = "autoMigrate";
private static final String TRIAL = "trial";
@@ -595,7 +594,7 @@
prev = saveState(prev, READ_WRITE_WITH_SEQUENCE_NOTE_DB_PRIMARY);
Stopwatch sw = Stopwatch.createStarted();
- log.info("Setting primary storage to NoteDb");
+ logger.atInfo().log("Setting primary storage to NoteDb");
List<Change.Id> allChanges;
try (ReviewDb db = unwrapDb(schemaFactory.open())) {
allChanges = Streams.stream(db.changes().all()).map(Change::getId).collect(toList());
@@ -615,18 +614,23 @@
} catch (NoNoteDbStateException e) {
if (canSkipPrimaryStorageMigration(
ctx.getReviewDbProvider().get(), id)) {
- log.warn(
- "Change {} previously failed to rebuild;"
- + " skipping primary storage migration",
- id,
- e);
+ logger
+ .atWarning()
+ .withCause(e)
+ .log(
+ "Change %s previously failed to rebuild;"
+ + " skipping primary storage migration",
+ id);
} else {
throw e;
}
}
return true;
} catch (Exception e) {
- log.error("Error migrating primary storage for " + id, e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log("Error migrating primary storage for %s", id);
return false;
}
}))
@@ -634,10 +638,11 @@
boolean ok = futuresToBoolean(futures, "Error migrating primary storage");
double t = sw.elapsed(TimeUnit.MILLISECONDS) / 1000d;
- log.info(
- String.format(
+ logger
+ .atInfo()
+ .log(
"Migrated primary storage of %d changes in %.01fs (%.01f/s)\n",
- allChanges.size(), t, allChanges.size() / t));
+ allChanges.size(), t, allChanges.size() / t);
if (!ok) {
throw new MigrationException("Migrating primary storage for some changes failed, see log");
}
@@ -673,7 +678,10 @@
try {
return Iterables.isEmpty(unwrapDb(db).patchSets().byChange(id));
} catch (Exception e) {
- log.error("Error checking if change " + id + " can be skipped, assuming no", e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log("Error checking if change %s can be skipped, assuming no", id);
return false;
}
}
@@ -688,7 +696,10 @@
noteDbConfig.load();
return NotesMigrationState.forConfig(noteDbConfig);
} catch (ConfigInvalidException | IllegalArgumentException e) {
- log.warn("error reading NoteDb migration options from " + noteDbConfig.getFile(), e);
+ logger
+ .atWarning()
+ .withCause(e)
+ .log("error reading NoteDb migration options from %s", noteDbConfig.getFile());
return Optional.empty();
}
}
@@ -728,7 +739,7 @@
// Only set in-memory state once it's been persisted to storage.
globalNotesMigration.setFrom(newState);
- log.info("Migration state: {} => {}", expectedOldState, newState);
+ logger.atInfo().log("Migration state: %s => %s", expectedOldState, newState);
return newState;
}
@@ -759,7 +770,7 @@
throw new MigrationException("Cannot rebuild without noteDb.changes.write=true");
}
Stopwatch sw = Stopwatch.createStarted();
- log.info("Rebuilding changes in NoteDb");
+ logger.atInfo().log("Rebuilding changes in NoteDb");
ImmutableListMultimap<Project.NameKey, Change.Id> changesByProject = getChangesByProject();
List<ListenableFuture<Boolean>> futures = new ArrayList<>();
@@ -773,7 +784,7 @@
try {
return rebuildProject(contextHelper.getReviewDb(), changesByProject, project);
} catch (Exception e) {
- log.error("Error rebuilding project " + project, e);
+ logger.atSevere().withCause(e).log("Error rebuilding project %s", project);
return false;
}
});
@@ -782,10 +793,11 @@
boolean ok = futuresToBoolean(futures, "Error rebuilding projects");
double t = sw.elapsed(TimeUnit.MILLISECONDS) / 1000d;
- log.info(
- String.format(
+ logger
+ .atInfo()
+ .log(
"Rebuilt %d changes in %.01fs (%.01f/s)\n",
- changesByProject.size(), t, changesByProject.size() / t));
+ changesByProject.size(), t, changesByProject.size() / t);
if (!ok) {
throw new MigrationException("Rebuilding some changes failed, see log");
}
@@ -893,14 +905,16 @@
toSave++;
} catch (NoPatchSetsException e) {
- log.warn(e.getMessage());
+ logger.atWarning().log(e.getMessage());
} catch (ConflictingUpdateException ex) {
- log.warn(
- "Rebuilding detected a conflicting ReviewDb update for change {};"
- + " will be auto-rebuilt at runtime",
- changeId);
+ logger
+ .atWarning()
+ .log(
+ "Rebuilding detected a conflicting ReviewDb update for change %s;"
+ + " will be auto-rebuilt at runtime",
+ changeId);
} catch (Throwable t) {
- log.error("Failed to rebuild change " + changeId, t);
+ logger.atSevere().withCause(t).log("Failed to rebuild change %s", changeId);
ok = false;
}
pm.update(1);
@@ -918,19 +932,21 @@
// to specify the repo name in the task text.
pm.update(toSave);
} catch (LockFailureException e) {
- log.warn(
- "Rebuilding detected a conflicting NoteDb update for the following refs, which will"
- + " be auto-rebuilt at runtime: {}",
- e.getFailedRefs().stream().distinct().sorted().collect(joining(", ")));
+ logger
+ .atWarning()
+ .log(
+ "Rebuilding detected a conflicting NoteDb update for the following refs, which will"
+ + " be auto-rebuilt at runtime: %s",
+ e.getFailedRefs().stream().distinct().sorted().collect(joining(", ")));
} catch (IOException e) {
- log.error("Failed to save NoteDb state for " + project, e);
+ logger.atSevere().withCause(e).log("Failed to save NoteDb state for %s", project);
} finally {
pm.endTask();
}
} catch (RepositoryNotFoundException e) {
- log.warn("Repository {} not found", project);
+ logger.atWarning().log("Repository %s not found", project);
} catch (IOException e) {
- log.error("Failed to rebuild project " + project, e);
+ logger.atSevere().withCause(e).log("Failed to rebuild project %s", project);
}
return ok;
}
@@ -977,7 +993,7 @@
try {
return Futures.allAsList(futures).get().stream().allMatch(b -> b);
} catch (InterruptedException | ExecutionException e) {
- log.error(errMsg, e);
+ logger.atSevere().withCause(e).log(errMsg);
return false;
}
}
diff --git a/java/com/google/gerrit/server/notedb/rebuild/OnlineNoteDbMigrator.java b/java/com/google/gerrit/server/notedb/rebuild/OnlineNoteDbMigrator.java
index 65755ed..72c0441 100644
--- a/java/com/google/gerrit/server/notedb/rebuild/OnlineNoteDbMigrator.java
+++ b/java/com/google/gerrit/server/notedb/rebuild/OnlineNoteDbMigrator.java
@@ -15,6 +15,7 @@
package com.google.gerrit.server.notedb.rebuild;
import com.google.common.base.Stopwatch;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.lifecycle.LifecycleModule;
import com.google.gerrit.server.config.GerritServerConfig;
@@ -27,12 +28,10 @@
import com.google.inject.name.Names;
import java.util.concurrent.TimeUnit;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class OnlineNoteDbMigrator implements LifecycleListener {
- private static final Logger log = LoggerFactory.getLogger(OnlineNoteDbMigrator.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String TRIAL = "OnlineNoteDbMigrator/trial";
@@ -79,9 +78,11 @@
}
private void migrate() {
- log.info("Starting online NoteDb migration");
+ logger.atInfo().log("Starting online NoteDb migration");
if (upgradeIndex) {
- log.info("Online index schema upgrades will be deferred until NoteDb migration is complete");
+ logger
+ .atInfo()
+ .log("Online index schema upgrades will be deferred until NoteDb migration is complete");
}
Stopwatch sw = Stopwatch.createStarted();
// TODO(dborowitz): Tune threads, maybe expose a progress monitor somewhere.
@@ -89,13 +90,13 @@
migratorBuilderProvider.get().setAutoMigrate(true).setTrialMode(trial).build()) {
migrator.migrate();
} catch (Exception e) {
- log.error("Error in online NoteDb migration", e);
+ logger.atSevere().withCause(e).log("Error in online NoteDb migration");
}
gcAllUsers.runWithLogger();
- log.info("Online NoteDb migration completed in {}s", sw.elapsed(TimeUnit.SECONDS));
+ logger.atInfo().log("Online NoteDb migration completed in %ss", sw.elapsed(TimeUnit.SECONDS));
if (upgradeIndex) {
- log.info("Starting deferred index schema upgrades");
+ logger.atInfo().log("Starting deferred index schema upgrades");
indexUpgrader.start();
}
}
diff --git a/java/com/google/gerrit/server/patch/AutoMerger.java b/java/com/google/gerrit/server/patch/AutoMerger.java
index e4c207b..f1b6639 100644
--- a/java/com/google/gerrit/server/patch/AutoMerger.java
+++ b/java/com/google/gerrit/server/patch/AutoMerger.java
@@ -17,6 +17,7 @@
import static com.google.common.base.Preconditions.checkArgument;
import static java.nio.charset.StandardCharsets.UTF_8;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.reviewdb.client.RefNames;
import com.google.gerrit.server.GerritPersonIdent;
@@ -49,11 +50,9 @@
import org.eclipse.jgit.revwalk.RevObject;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.util.TemporaryBuffer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class AutoMerger {
- private static final Logger log = LoggerFactory.getLogger(AutoMerger.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static boolean cacheAutomerge(Config cfg) {
return cfg.getBoolean("change", null, "cacheAutomerge", true);
@@ -119,7 +118,7 @@
// an exception most likely means that the merge tree was not created
// and m.getMergeResults() is empty. This would mean that all paths are
// unmerged and Gerrit UI would show all paths in the patch list.
- log.warn("Error attempting automerge " + refName, e);
+ logger.atWarning().withCause(e).log("Error attempting automerge %s", refName);
return null;
}
diff --git a/java/com/google/gerrit/server/patch/IntraLineLoader.java b/java/com/google/gerrit/server/patch/IntraLineLoader.java
index f17f0b6..e405b18 100644
--- a/java/com/google/gerrit/server/patch/IntraLineLoader.java
+++ b/java/com/google/gerrit/server/patch/IntraLineLoader.java
@@ -18,6 +18,7 @@
import com.google.common.base.Throwables;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.server.config.ConfigUtil;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.inject.Inject;
@@ -35,11 +36,9 @@
import org.eclipse.jgit.diff.MyersDiff;
import org.eclipse.jgit.diff.ReplaceEdit;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
class IntraLineLoader implements Callable<IntraLineDiff> {
- static final Logger log = LoggerFactory.getLogger(IntraLineLoader.class);
+ static final FluentLogger logger = FluentLogger.forEnclosingClass();
interface Factory {
IntraLineLoader create(IntraLineDiffKey key, IntraLineDiffArgs args);
@@ -84,19 +83,17 @@
try {
return result.get(timeoutMillis, TimeUnit.MILLISECONDS);
} catch (InterruptedException | TimeoutException e) {
- log.warn(
- timeoutMillis
- + " ms timeout reached for IntraLineDiff"
- + " in project "
- + args.project()
- + " on commit "
- + args.commit().name()
- + " for path "
- + args.path()
- + " comparing "
- + key.getBlobA().name()
- + ".."
- + key.getBlobB().name());
+ logger
+ .atWarning()
+ .log(
+ "%s ms timeout reached for IntraLineDiff"
+ + " in project %s on commit %s for path %s comparing %s..%s",
+ timeoutMillis,
+ args.project(),
+ args.commit().name(),
+ args.path(),
+ key.getBlobA().name(),
+ key.getBlobB().name());
result.cancel(true);
return new IntraLineDiff(IntraLineDiff.Status.TIMEOUT);
} catch (ExecutionException e) {
diff --git a/java/com/google/gerrit/server/patch/PatchListCacheImpl.java b/java/com/google/gerrit/server/patch/PatchListCacheImpl.java
index 01c8b41..6039fff 100644
--- a/java/com/google/gerrit/server/patch/PatchListCacheImpl.java
+++ b/java/com/google/gerrit/server/patch/PatchListCacheImpl.java
@@ -106,14 +106,14 @@
}
return pl;
} catch (ExecutionException e) {
- PatchListLoader.log.warn("Error computing " + key, e);
+ PatchListLoader.logger.atWarning().withCause(e).log("Error computing %s", key);
throw new PatchListNotAvailableException(e);
} catch (UncheckedExecutionException e) {
if (e.getCause() instanceof LargeObjectException) {
// Cache negative result so we don't need to redo expensive computations that would yield
// the same result.
fileCache.put(key, new LargeObjectTombstone());
- PatchListLoader.log.warn("Error computing " + key, e);
+ PatchListLoader.logger.atWarning().withCause(e).log("Error computing %s", key);
throw new PatchListNotAvailableException(e);
}
throw e;
@@ -151,7 +151,7 @@
try {
return intraCache.get(key, intraLoaderFactory.create(key, args));
} catch (ExecutionException | LargeObjectException e) {
- IntraLineLoader.log.warn("Error computing " + key, e);
+ IntraLineLoader.logger.atWarning().withCause(e).log("Error computing %s", key);
return new IntraLineDiff(IntraLineDiff.Status.ERROR);
}
}
@@ -164,11 +164,11 @@
try {
return diffSummaryCache.get(key, diffSummaryLoaderFactory.create(key, project));
} catch (ExecutionException e) {
- PatchListLoader.log.warn("Error computing " + key, e);
+ PatchListLoader.logger.atWarning().withCause(e).log("Error computing %s", key);
throw new PatchListNotAvailableException(e);
} catch (UncheckedExecutionException e) {
if (e.getCause() instanceof LargeObjectException) {
- PatchListLoader.log.warn("Error computing " + key, e);
+ PatchListLoader.logger.atWarning().withCause(e).log("Error computing %s", key);
throw new PatchListNotAvailableException(e);
}
throw e;
diff --git a/java/com/google/gerrit/server/patch/PatchListLoader.java b/java/com/google/gerrit/server/patch/PatchListLoader.java
index 3b75f5b..b511ae7 100644
--- a/java/com/google/gerrit/server/patch/PatchListLoader.java
+++ b/java/com/google/gerrit/server/patch/PatchListLoader.java
@@ -27,6 +27,7 @@
import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Multimap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.client.DiffPreferencesInfo.Whitespace;
import com.google.gerrit.reviewdb.client.Patch;
import com.google.gerrit.reviewdb.client.Project;
@@ -74,11 +75,9 @@
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.treewalk.TreeWalk;
import org.eclipse.jgit.util.io.DisabledOutputStream;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class PatchListLoader implements Callable<PatchList> {
- static final Logger log = LoggerFactory.getLogger(PatchListLoader.class);
+ static final FluentLogger logger = FluentLogger.forEnclosingClass();
public interface Factory {
PatchListLoader create(PatchListKey key, Project.NameKey project);
@@ -449,19 +448,17 @@
try {
return result.get(timeoutMillis, TimeUnit.MILLISECONDS);
} catch (InterruptedException | TimeoutException e) {
- log.warn(
- timeoutMillis
- + " ms timeout reached for Diff loader"
- + " in project "
- + project
- + " on commit "
- + commitB.name()
- + " on path "
- + diffEntry.getNewPath()
- + " comparing "
- + diffEntry.getOldId().name()
- + ".."
- + diffEntry.getNewId().name());
+ logger
+ .atWarning()
+ .log(
+ "%s ms timeout reached for Diff loader in project %s"
+ + " on commit %s on path %s comparing %s..%s",
+ timeoutMillis,
+ project,
+ commitB.name(),
+ diffEntry.getNewPath(),
+ diffEntry.getOldId().name(),
+ diffEntry.getNewId().name());
result.cancel(true);
synchronized (diffEntry) {
return toFileHeaderWithoutMyersDiff(diffFormatter, diffEntry);
diff --git a/java/com/google/gerrit/server/patch/PatchScriptFactory.java b/java/com/google/gerrit/server/patch/PatchScriptFactory.java
index b0e5310..b1e0e3c 100644
--- a/java/com/google/gerrit/server/patch/PatchScriptFactory.java
+++ b/java/com/google/gerrit/server/patch/PatchScriptFactory.java
@@ -16,6 +16,7 @@
import static com.google.common.base.Preconditions.checkArgument;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.CommentDetail;
import com.google.gerrit.common.data.PatchScript;
@@ -57,10 +58,10 @@
import org.eclipse.jgit.errors.RepositoryNotFoundException;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Repository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class PatchScriptFactory implements Callable<PatchScript> {
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
public interface Factory {
PatchScriptFactory create(
ChangeNotes notes,
@@ -77,8 +78,6 @@
DiffPreferencesInfo diffPrefs);
}
- private static final Logger log = LoggerFactory.getLogger(PatchScriptFactory.class);
-
private final GitRepositoryManager repoManager;
private final PatchSetUtil psUtil;
private final Provider<PatchScriptBuilder> builderFactory;
@@ -232,16 +231,16 @@
} catch (PatchListNotAvailableException e) {
throw new NoSuchChangeException(changeId, e);
} catch (IOException e) {
- log.error("File content unavailable", e);
+ logger.atSevere().withCause(e).log("File content unavailable");
throw new NoSuchChangeException(changeId, e);
} catch (org.eclipse.jgit.errors.LargeObjectException err) {
throw new LargeObjectException("File content is too large", err);
}
} catch (RepositoryNotFoundException e) {
- log.error("Repository " + notes.getProjectName() + " not found", e);
+ logger.atSevere().withCause(e).log("Repository %s not found", notes.getProjectName());
throw new NoSuchChangeException(changeId, e);
} catch (IOException e) {
- log.error("Cannot open repository " + notes.getProjectName(), e);
+ logger.atSevere().withCause(e).log("Cannot open repository %s", notes.getProjectName());
throw new NoSuchChangeException(changeId, e);
}
}
@@ -277,7 +276,7 @@
try {
return ObjectId.fromString(ps.getRevision().get());
} catch (IllegalArgumentException e) {
- log.error("Patch set " + ps.getId() + " has invalid revision");
+ logger.atSevere().log("Patch set %s has invalid revision", ps.getId());
throw new NoSuchChangeException(changeId, e);
}
}
diff --git a/java/com/google/gerrit/server/patch/Text.java b/java/com/google/gerrit/server/patch/Text.java
index 90141715..172dbaf 100644
--- a/java/com/google/gerrit/server/patch/Text.java
+++ b/java/com/google/gerrit/server/patch/Text.java
@@ -17,6 +17,7 @@
import static java.nio.charset.StandardCharsets.ISO_8859_1;
import static java.nio.charset.StandardCharsets.UTF_8;
+import com.google.common.flogger.FluentLogger;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.IllegalCharsetNameException;
@@ -34,11 +35,10 @@
import org.eclipse.jgit.storage.pack.PackConfig;
import org.eclipse.jgit.util.RawParseUtils;
import org.mozilla.universalchardet.UniversalDetector;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class Text extends RawText {
- private static final Logger log = LoggerFactory.getLogger(Text.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
private static final int bigFileThreshold = PackConfig.DEFAULT_BIG_FILE_THRESHOLD;
public static final byte[] NO_BYTES = {};
@@ -157,11 +157,11 @@
return Charset.forName(encoding);
} catch (IllegalCharsetNameException err) {
- log.error("Invalid detected charset name '" + encoding + "': " + err);
+ logger.atSevere().log("Invalid detected charset name '%s': %s", encoding, err);
return ISO_8859_1;
} catch (UnsupportedCharsetException err) {
- log.error("Detected charset '" + encoding + "' not supported: " + err);
+ logger.atSevere().log("Detected charset '%s' not supported: %s", encoding, err);
return ISO_8859_1;
}
}
diff --git a/java/com/google/gerrit/server/permissions/DefaultRefFilter.java b/java/com/google/gerrit/server/permissions/DefaultRefFilter.java
index 9661156..6a8813a 100644
--- a/java/com/google/gerrit/server/permissions/DefaultRefFilter.java
+++ b/java/com/google/gerrit/server/permissions/DefaultRefFilter.java
@@ -22,6 +22,7 @@
import static java.util.stream.Collectors.toMap;
import com.google.common.collect.ImmutableSet;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.reviewdb.client.Account;
@@ -60,11 +61,9 @@
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.SymbolicRef;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
class DefaultRefFilter {
- private static final Logger log = LoggerFactory.getLogger(DefaultRefFilter.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
interface Factory {
DefaultRefFilter create(ProjectControl projectControl);
@@ -286,7 +285,10 @@
} catch (AuthException e) {
return false;
} catch (PermissionBackendException e) {
- log.error("Failed to check permission for " + id + " in " + projectState.getName(), e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log("Failed to check permission for %s in %s", id, projectState.getName());
return false;
}
}
@@ -306,8 +308,10 @@
}
return visibleChanges;
} catch (OrmException | PermissionBackendException e) {
- log.error(
- "Cannot load changes for project " + project + ", assuming no changes are visible", e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log("Cannot load changes for project %s, assuming no changes are visible", project);
return Collections.emptyMap();
}
}
@@ -318,7 +322,10 @@
try {
s = changeNotesFactory.scan(repo, db.get(), p);
} catch (IOException e) {
- log.error("Cannot load changes for project " + p + ", assuming no changes are visible", e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log("Cannot load changes for project %s, assuming no changes are visible", p);
return Collections.emptyMap();
}
return s.map(this::toNotes)
@@ -329,8 +336,10 @@
@Nullable
private ChangeNotes toNotes(ChangeNotesResult r) {
if (r.error().isPresent()) {
- log.warn(
- "Failed to load change " + r.id() + " in " + projectState.getName(), r.error().get());
+ logger
+ .atWarning()
+ .withCause(r.error().get())
+ .log("Failed to load change %s in %s", r.id(), projectState.getName());
return null;
}
try {
@@ -339,7 +348,10 @@
return r.notes();
}
} catch (PermissionBackendException e) {
- log.error("Failed to check permission for " + r.id() + " in " + projectState.getName(), e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log("Failed to check permission for %s in %s", r.id(), projectState.getName());
}
return null;
}
@@ -362,7 +374,7 @@
} catch (AuthException e) {
return false;
} catch (PermissionBackendException e) {
- log.error("unable to check permissions", e);
+ logger.atSevere().withCause(e).log("unable to check permissions");
return false;
}
return projectState.statePermitsRead();
@@ -375,10 +387,10 @@
} catch (AuthException e) {
return false;
} catch (PermissionBackendException e) {
- log.error(
- String.format(
- "Can't check permission for user %s on project %s", user, projectState.getName()),
- e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log("Can't check permission for user %s on project %s", user, projectState.getName());
return false;
}
return true;
diff --git a/java/com/google/gerrit/server/permissions/GlobalPermission.java b/java/com/google/gerrit/server/permissions/GlobalPermission.java
index a789bd9..ccdde4b 100644
--- a/java/com/google/gerrit/server/permissions/GlobalPermission.java
+++ b/java/com/google/gerrit/server/permissions/GlobalPermission.java
@@ -16,6 +16,7 @@
import static com.google.gerrit.server.permissions.DefaultPermissionMappings.globalPermission;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.annotations.CapabilityScope;
import com.google.gerrit.extensions.annotations.RequiresAnyCapability;
@@ -28,8 +29,6 @@
import java.util.LinkedHashSet;
import java.util.Optional;
import java.util.Set;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Global server permissions built into Gerrit. */
public enum GlobalPermission implements GlobalOrPluginPermission {
@@ -53,7 +52,7 @@
VIEW_QUEUE,
VIEW_ACCESS;
- private static final Logger log = LoggerFactory.getLogger(GlobalPermission.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
/**
* Extracts the {@code @RequiresCapability} or {@code @RequiresAnyCapability} annotation.
@@ -70,12 +69,13 @@
RequiresCapability rc = findAnnotation(clazz, RequiresCapability.class);
RequiresAnyCapability rac = findAnnotation(clazz, RequiresAnyCapability.class);
if (rc != null && rac != null) {
- log.error(
- String.format(
+ logger
+ .atSevere()
+ .log(
"Class %s uses both @%s and @%s",
clazz.getName(),
RequiresCapability.class.getSimpleName(),
- RequiresAnyCapability.class.getSimpleName()));
+ RequiresAnyCapability.class.getSimpleName());
throw new PermissionBackendException("cannot extract permission");
} else if (rc != null) {
return Collections.singleton(
@@ -124,17 +124,17 @@
}
if (scope == CapabilityScope.PLUGIN) {
- log.error(
- String.format(
+ logger
+ .atSevere()
+ .log(
"Class %s uses @%s(scope=%s), but is not within a plugin",
- clazz.getName(), annotationClass.getSimpleName(), scope.name()));
+ clazz.getName(), annotationClass.getSimpleName(), scope.name());
throw new PermissionBackendException("cannot extract permission");
}
Optional<GlobalPermission> perm = globalPermission(capability);
if (!perm.isPresent()) {
- log.error(
- String.format("Class %s requires unknown capability %s", clazz.getName(), capability));
+ logger.atSevere().log("Class %s requires unknown capability %s", clazz.getName(), capability);
throw new PermissionBackendException("cannot extract permission");
}
return perm.get();
diff --git a/java/com/google/gerrit/server/permissions/PermissionBackend.java b/java/com/google/gerrit/server/permissions/PermissionBackend.java
index 8cdb61d..f50f602 100644
--- a/java/com/google/gerrit/server/permissions/PermissionBackend.java
+++ b/java/com/google/gerrit/server/permissions/PermissionBackend.java
@@ -19,6 +19,7 @@
import com.google.auto.value.AutoValue;
import com.google.common.collect.Sets;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.LabelType;
import com.google.gerrit.extensions.api.access.GlobalOrPluginPermission;
import com.google.gerrit.extensions.conditions.BooleanCondition;
@@ -44,8 +45,6 @@
import org.eclipse.jgit.errors.RepositoryNotFoundException;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Checks authorization to perform an action on a project, reference, or change.
@@ -91,7 +90,7 @@
*/
@ImplementedBy(DefaultPermissionBackend.class)
public abstract class PermissionBackend {
- private static final Logger logger = LoggerFactory.getLogger(PermissionBackend.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
/** Returns an instance scoped to the current user. */
public abstract WithUser currentUser();
@@ -253,7 +252,7 @@
try {
return test(perm);
} catch (PermissionBackendException e) {
- logger.warn("Cannot test " + perm + "; assuming false", e);
+ logger.atWarning().withCause(e).log("Cannot test %s; assuming false", perm);
return false;
}
}
@@ -283,7 +282,10 @@
// Do not include this project in allowed.
} catch (PermissionBackendException e) {
if (e.getCause() instanceof RepositoryNotFoundException) {
- logger.warn("Could not find repository of the project {} : ", project.get(), e);
+ logger
+ .atWarning()
+ .withCause(e)
+ .log("Could not find repository of the project %s", project.get());
// Do not include this project because doesn't exist
} else {
throw e;
@@ -350,7 +352,7 @@
try {
return test(perm);
} catch (PermissionBackendException e) {
- logger.warn("Cannot test " + perm + "; assuming false", e);
+ logger.atWarning().withCause(e).log("Cannot test %s; assuming false", perm);
return false;
}
}
@@ -456,7 +458,7 @@
try {
return test(perm);
} catch (PermissionBackendException e) {
- logger.warn("Cannot test " + perm + "; assuming false", e);
+ logger.atWarning().withCause(e).log("Cannot test %s; assuming false", perm);
return false;
}
}
@@ -506,7 +508,7 @@
try {
return test(perm);
} catch (PermissionBackendException e) {
- logger.warn("Cannot test " + perm + "; assuming false", e);
+ logger.atWarning().withCause(e).log("Cannot test %s; assuming false", perm);
return false;
}
}
diff --git a/java/com/google/gerrit/server/permissions/SectionSortCache.java b/java/com/google/gerrit/server/permissions/SectionSortCache.java
index 18aea29..48c8bff 100644
--- a/java/com/google/gerrit/server/permissions/SectionSortCache.java
+++ b/java/com/google/gerrit/server/permissions/SectionSortCache.java
@@ -17,6 +17,7 @@
import com.google.auto.value.AutoValue;
import com.google.common.cache.Cache;
import com.google.common.collect.ImmutableList;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.AccessSection;
import com.google.gerrit.server.cache.CacheModule;
import com.google.gerrit.server.util.MostSpecificComparator;
@@ -28,8 +29,6 @@
import java.util.Collections;
import java.util.IdentityHashMap;
import java.util.List;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Caches the order AccessSections should be sorted for evaluation.
@@ -41,7 +40,7 @@
*/
@Singleton
public class SectionSortCache {
- private static final Logger log = LoggerFactory.getLogger(SectionSortCache.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String CACHE_NAME = "permission_sort";
@@ -102,7 +101,7 @@
}
if (poison) {
- log.error("Received duplicate AccessSection instances, not caching sort");
+ logger.atSevere().log("Received duplicate AccessSection instances, not caching sort");
} else {
cache.put(key, new EntryVal(srcIdx));
}
diff --git a/java/com/google/gerrit/server/plugins/AutoRegisterModules.java b/java/com/google/gerrit/server/plugins/AutoRegisterModules.java
index da3abce..81dd027 100644
--- a/java/com/google/gerrit/server/plugins/AutoRegisterModules.java
+++ b/java/com/google/gerrit/server/plugins/AutoRegisterModules.java
@@ -20,6 +20,7 @@
import com.google.common.collect.LinkedListMultimap;
import com.google.common.collect.ListMultimap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.annotations.Export;
import com.google.gerrit.extensions.annotations.ExtensionPoint;
import com.google.gerrit.extensions.annotations.Listen;
@@ -38,11 +39,9 @@
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
class AutoRegisterModules {
- private static final Logger log = LoggerFactory.getLogger(AutoRegisterModules.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final String pluginName;
private final PluginGuiceEnvironment env;
@@ -134,12 +133,13 @@
initJs = STATIC_INIT_JS;
}
} catch (IOException e) {
- log.warn(
- String.format(
+ logger
+ .atWarning()
+ .withCause(e)
+ .log(
"Cannot access %s from plugin %s: "
+ "JavaScript auto-discovered plugin will not be registered",
- STATIC_INIT_JS, pluginName),
- e);
+ STATIC_INIT_JS, pluginName);
}
}
@@ -155,10 +155,11 @@
Export export = clazz.getAnnotation(Export.class);
if (export == null) {
- log.warn(
- String.format(
+ logger
+ .atWarning()
+ .log(
"In plugin %s asm incorrectly parsed %s with @Export(\"%s\")",
- pluginName, clazz.getName(), def.annotationValue));
+ pluginName, clazz.getName(), def.annotationValue);
return;
}
@@ -192,9 +193,9 @@
if (listen != null) {
listen(clazz, clazz);
} else {
- log.warn(
- String.format(
- "In plugin %s asm incorrectly parsed %s with @Listen", pluginName, clazz.getName()));
+ logger
+ .atWarning()
+ .log("In plugin %s asm incorrectly parsed %s with @Listen", pluginName, clazz.getName());
}
}
diff --git a/java/com/google/gerrit/server/plugins/CleanupHandle.java b/java/com/google/gerrit/server/plugins/CleanupHandle.java
index 5a60ee2..6075741 100644
--- a/java/com/google/gerrit/server/plugins/CleanupHandle.java
+++ b/java/com/google/gerrit/server/plugins/CleanupHandle.java
@@ -14,15 +14,14 @@
package com.google.gerrit.server.plugins;
+import com.google.common.flogger.FluentLogger;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.jar.JarFile;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
class CleanupHandle {
- private static final Logger log = LoggerFactory.getLogger(CleanupHandle.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final Path tmp;
private final JarFile jarFile;
@@ -36,17 +35,18 @@
try {
jarFile.close();
} catch (IOException err) {
- log.error("Cannot close " + jarFile.getName(), err);
+ logger.atSevere().withCause(err).log("Cannot close %s", jarFile.getName());
}
try {
Files.deleteIfExists(tmp);
- log.info("Cleaned plugin " + tmp.getFileName());
+ logger.atInfo().log("Cleaned plugin %s", tmp.getFileName());
} catch (IOException e) {
- log.warn(
- "Cannot delete "
- + tmp.toAbsolutePath()
- + ", retrying to delete it on termination of the virtual machine",
- e);
+ logger
+ .atWarning()
+ .withCause(e)
+ .log(
+ "Cannot delete %s, retrying to delete it on termination of the virtual machine",
+ tmp.toAbsolutePath());
tmp.toFile().deleteOnExit();
}
}
diff --git a/java/com/google/gerrit/server/plugins/JarPluginProvider.java b/java/com/google/gerrit/server/plugins/JarPluginProvider.java
index cf54bf4..229f394 100644
--- a/java/com/google/gerrit/server/plugins/JarPluginProvider.java
+++ b/java/com/google/gerrit/server/plugins/JarPluginProvider.java
@@ -15,6 +15,7 @@
package com.google.gerrit.server.plugins;
import com.google.common.base.MoreObjects;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.server.config.PluginConfig;
import com.google.gerrit.server.config.PluginConfigFactory;
import com.google.gerrit.server.config.SitePaths;
@@ -34,13 +35,12 @@
import java.util.jar.JarFile;
import java.util.jar.Manifest;
import org.eclipse.jgit.internal.storage.file.FileSnapshot;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class JarPluginProvider implements ServerPluginProvider {
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
static final String PLUGIN_TMP_PREFIX = "plugin_";
static final String JAR_EXTENSION = ".jar";
- static final Logger log = LoggerFactory.getLogger(JarPluginProvider.class);
private final Path tmpDir;
private final PluginConfigFactory configFactory;
@@ -129,7 +129,7 @@
if (overlay != null) {
Path classes = Paths.get(overlay).resolve(name).resolve("main");
if (Files.isDirectory(classes)) {
- log.info("plugin {}: including {}", name, classes);
+ logger.atInfo().log("plugin %s: including %s", name, classes);
urls.add(classes.toUri().toURL());
}
}
diff --git a/java/com/google/gerrit/server/plugins/JarScanner.java b/java/com/google/gerrit/server/plugins/JarScanner.java
index 1310b8c..5fd2a92 100644
--- a/java/com/google/gerrit/server/plugins/JarScanner.java
+++ b/java/com/google/gerrit/server/plugins/JarScanner.java
@@ -23,6 +23,7 @@
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.MultimapBuilder;
+import com.google.common.flogger.FluentLogger;
import java.io.IOException;
import java.io.InputStream;
import java.lang.annotation.Annotation;
@@ -50,11 +51,10 @@
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;
import org.objectweb.asm.Type;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class JarScanner implements PluginContentScanner, AutoCloseable {
- private static final Logger log = LoggerFactory.getLogger(JarScanner.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
private static final int SKIP_ALL =
ClassReader.SKIP_CODE | ClassReader.SKIP_DEBUG | ClassReader.SKIP_FRAMES;
private final JarFile jarFile;
@@ -91,11 +91,12 @@
} catch (IOException err) {
throw new InvalidPluginException("Cannot auto-register", err);
} catch (RuntimeException err) {
- log.warn(
- String.format(
+ logger
+ .atWarning()
+ .withCause(err)
+ .log(
"Plugin %s has invalid class file %s inside of %s",
- pluginName, entry.getName(), jarFile.getName()),
- err);
+ pluginName, entry.getName(), jarFile.getName());
continue;
}
@@ -103,10 +104,11 @@
if (def.isConcrete()) {
rawMap.put(def.annotationName, def);
} else {
- log.warn(
- String.format(
+ logger
+ .atWarning()
+ .log(
"Plugin %s tries to @%s(\"%s\") abstract class %s",
- pluginName, def.annotationName, def.annotationValue, def.className));
+ pluginName, def.annotationName, def.annotationValue, def.className);
}
}
}
@@ -151,9 +153,10 @@
try {
new ClassReader(read(jarFile, entry)).accept(def, SKIP_ALL);
} catch (RuntimeException err) {
- log.warn(
- String.format("Jar %s has invalid class file %s", jarFile.getName(), entry.getName()),
- err);
+ logger
+ .atWarning()
+ .withCause(err)
+ .log("Jar %s has invalid class file %s", jarFile.getName(), entry.getName());
continue;
}
diff --git a/java/com/google/gerrit/server/plugins/PluginCleanerTask.java b/java/com/google/gerrit/server/plugins/PluginCleanerTask.java
index 5cff345..99f8e5c 100644
--- a/java/com/google/gerrit/server/plugins/PluginCleanerTask.java
+++ b/java/com/google/gerrit/server/plugins/PluginCleanerTask.java
@@ -14,18 +14,17 @@
package com.google.gerrit.server.plugins;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.TimeUtil;
import com.google.gerrit.server.git.WorkQueue;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
class PluginCleanerTask implements Runnable {
- private static final Logger log = LoggerFactory.getLogger(PluginCleanerTask.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final WorkQueue workQueue;
private final PluginLoader loader;
@@ -58,10 +57,11 @@
if (0 < left) {
long waiting = TimeUtil.nowMs() - start;
- log.warn(
- String.format(
+ logger
+ .atWarning()
+ .log(
"%d plugins still waiting to be reclaimed after %d minutes",
- pending, TimeUnit.MILLISECONDS.toMinutes(waiting)));
+ pending, TimeUnit.MILLISECONDS.toMinutes(waiting));
attempts = Math.min(attempts + 1, 15);
ensureScheduled();
} else {
diff --git a/java/com/google/gerrit/server/plugins/PluginLoader.java b/java/com/google/gerrit/server/plugins/PluginLoader.java
index 73f2cb2..f511716 100644
--- a/java/com/google/gerrit/server/plugins/PluginLoader.java
+++ b/java/com/google/gerrit/server/plugins/PluginLoader.java
@@ -26,6 +26,7 @@
import com.google.common.collect.Maps;
import com.google.common.collect.SetMultimap;
import com.google.common.collect.Sets;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.extensions.restapi.MethodNotAllowedException;
import com.google.gerrit.extensions.systemstatus.ServerInformation;
@@ -62,12 +63,10 @@
import java.util.concurrent.TimeUnit;
import org.eclipse.jgit.internal.storage.file.FileSnapshot;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class PluginLoader implements LifecycleListener {
- private static final Logger log = LoggerFactory.getLogger(PluginLoader.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public String getPluginName(Path srcPath) {
return MoreObjects.firstNonNull(getGerritPluginName(srcPath), PluginUtil.nameOf(srcPath));
@@ -168,10 +167,11 @@
Path tmp = PluginUtil.asTemp(in, ".next_" + fileName + "_", ".tmp", pluginsDir);
String name = MoreObjects.firstNonNull(getGerritPluginName(tmp), PluginUtil.nameOf(fileName));
if (!originalName.equals(name)) {
- log.warn(
- "Plugin provides its own name: <{}>, use it instead of the input name: <{}>",
- name,
- originalName);
+ logger
+ .atWarning()
+ .log(
+ "Plugin provides its own name: <%s>, use it instead of the input name: <%s>",
+ name, originalName);
}
String fileExtension = getExtension(fileName);
@@ -180,7 +180,7 @@
Plugin active = running.get(name);
if (active != null) {
fileName = active.getSrcFile().getFileName().toString();
- log.info("Replacing plugin {}", active.getName());
+ logger.atInfo().log("Replacing plugin %s", active.getName());
Path old = pluginsDir.resolve(".last_" + fileName);
Files.deleteIfExists(old);
Files.move(active.getSrcFile(), old);
@@ -191,7 +191,7 @@
try {
Plugin plugin = runPlugin(name, dst, active);
if (active == null) {
- log.info("Installed plugin {}", plugin.getName());
+ logger.atInfo().log("Installed plugin %s", plugin.getName());
}
} catch (PluginInstallException e) {
Files.deleteIfExists(dst);
@@ -207,7 +207,7 @@
private synchronized void unloadPlugin(Plugin plugin) {
persistentCacheFactory.onStop(plugin.getName());
String name = plugin.getName();
- log.info("Unloading plugin {}, version {}", name, plugin.getVersion());
+ logger.atInfo().log("Unloading plugin %s, version %s", name, plugin.getVersion());
plugin.stop(env);
env.onStopPlugin(plugin);
running.remove(name);
@@ -217,7 +217,9 @@
public void disablePlugins(Set<String> names) {
if (!isRemoteAdminEnabled()) {
- log.warn("Remote plugin administration is disabled, ignoring disablePlugins({})", names);
+ logger
+ .atWarning()
+ .log("Remote plugin administration is disabled, ignoring disablePlugins(%s)", names);
return;
}
@@ -228,13 +230,13 @@
continue;
}
- log.info("Disabling plugin {}", active.getName());
+ logger.atInfo().log("Disabling plugin %s", active.getName());
Path off =
active.getSrcFile().resolveSibling(active.getSrcFile().getFileName() + ".disabled");
try {
Files.move(active.getSrcFile(), off);
} catch (IOException e) {
- log.error("Failed to disable plugin", e);
+ logger.atSevere().withCause(e).log("Failed to disable plugin");
// In theory we could still unload the plugin even if the rename
// failed. However, it would be reloaded on the next server startup,
// which is probably not what the user expects.
@@ -248,7 +250,10 @@
disabled.put(name, offPlugin);
} catch (Throwable e) {
// This shouldn't happen, as the plugin was loaded earlier.
- log.warn("Cannot load disabled plugin {}", active.getName(), e.getCause());
+ logger
+ .atWarning()
+ .withCause(e.getCause())
+ .log("Cannot load disabled plugin %s", active.getName());
}
}
cleanInBackground();
@@ -257,7 +262,9 @@
public void enablePlugins(Set<String> names) throws PluginInstallException {
if (!isRemoteAdminEnabled()) {
- log.warn("Remote plugin administration is disabled, ignoring enablePlugins({})", names);
+ logger
+ .atWarning()
+ .log("Remote plugin administration is disabled, ignoring enablePlugins(%s)", names);
return;
}
@@ -268,7 +275,7 @@
continue;
}
- log.info("Enabling plugin {}", name);
+ logger.atInfo().log("Enabling plugin %s", name);
String n = off.getSrcFile().toFile().getName();
if (n.endsWith(".disabled")) {
n = n.substring(0, n.lastIndexOf('.'));
@@ -277,7 +284,7 @@
try {
Files.move(off.getSrcFile(), on);
} catch (IOException e) {
- log.error("Failed to move plugin {} into place", name, e);
+ logger.atSevere().withCause(e).log("Failed to move plugin %s into place", name);
continue;
}
disabled.remove(name);
@@ -297,16 +304,19 @@
};
try (DirectoryStream<Path> files = Files.newDirectoryStream(tempDir, filter)) {
for (Path file : files) {
- log.info("Removing stale plugin file: {}", file.toFile().getName());
+ logger.atInfo().log("Removing stale plugin file: %s", file.toFile().getName());
try {
Files.delete(file);
} catch (IOException e) {
- log.error(
- "Failed to remove stale plugin file {}: {}", file.toFile().getName(), e.getMessage());
+ logger
+ .atSevere()
+ .log(
+ "Failed to remove stale plugin file %s: %s",
+ file.toFile().getName(), e.getMessage());
}
}
} catch (IOException e) {
- log.warn("Unable to discover stale plugin files: {}", e.getMessage());
+ logger.atWarning().log("Unable to discover stale plugin files: %s", e.getMessage());
}
}
@@ -315,14 +325,14 @@
removeStalePluginFiles();
Path absolutePath = pluginsDir.toAbsolutePath();
if (!Files.exists(absolutePath)) {
- log.info("{} does not exist; creating", absolutePath);
+ logger.atInfo().log("%s does not exist; creating", absolutePath);
try {
Files.createDirectories(absolutePath);
} catch (IOException e) {
- log.error("Failed to create {}: {}", absolutePath, e.getMessage());
+ logger.atSevere().log("Failed to create %s: %s", absolutePath, e.getMessage());
}
}
- log.info("Loading plugins from {}", absolutePath);
+ logger.atInfo().log("Loading plugins from %s", absolutePath);
srvInfoImpl.state = ServerInformation.State.STARTUP;
rescan();
srvInfoImpl.state = ServerInformation.State.RUNNING;
@@ -371,11 +381,13 @@
for (Plugin active : reload) {
String name = active.getName();
try {
- log.info("Reloading plugin {}", name);
+ logger.atInfo().log("Reloading plugin %s", name);
Plugin newPlugin = runPlugin(name, active.getSrcFile(), active);
- log.info("Reloaded plugin {}, version {}", newPlugin.getName(), newPlugin.getVersion());
+ logger
+ .atInfo()
+ .log("Reloaded plugin %s, version %s", newPlugin.getName(), newPlugin.getVersion());
} catch (PluginInstallException e) {
- log.warn("Cannot reload plugin {}", name, e.getCause());
+ logger.atWarning().withCause(e.getCause()).log("Cannot reload plugin %s", name);
throw e;
}
}
@@ -398,7 +410,9 @@
Path path = entry.getValue();
String fileName = path.getFileName().toString();
if (!isUiPlugin(fileName) && !serverPluginFactory.handles(path)) {
- log.warn("No Plugin provider was found that handles this file format: {}", fileName);
+ logger
+ .atWarning()
+ .log("No Plugin provider was found that handles this file format: %s", fileName);
continue;
}
@@ -413,20 +427,22 @@
}
if (active != null) {
- log.info("Reloading plugin {}", active.getName());
+ logger.atInfo().log("Reloading plugin %s", active.getName());
}
try {
Plugin loadedPlugin = runPlugin(name, path, active);
if (!loadedPlugin.isDisabled()) {
- log.info(
- "{} plugin {}, version {}",
- active == null ? "Loaded" : "Reloaded",
- loadedPlugin.getName(),
- loadedPlugin.getVersion());
+ logger
+ .atInfo()
+ .log(
+ "%s plugin %s, version %s",
+ active == null ? "Loaded" : "Reloaded",
+ loadedPlugin.getName(),
+ loadedPlugin.getVersion());
}
} catch (PluginInstallException e) {
- log.warn("Cannot load plugin {}", name, e.getCause());
+ logger.atWarning().withCause(e.getCause()).log("Cannot load plugin %s", name);
}
}
@@ -660,20 +676,20 @@
Collection<Path> elementsToRemove = new ArrayList<>();
Collection<Path> elementsToAdd = new ArrayList<>();
for (Path loser : Iterables.skip(enabled, 1)) {
- log.warn(
- "Plugin <{}> was disabled, because"
- + " another plugin <{}>"
- + " with the same name <{}> already exists",
- loser,
- winner,
- plugin);
+ logger
+ .atWarning()
+ .log(
+ "Plugin <%s> was disabled, because"
+ + " another plugin <%s>"
+ + " with the same name <%s> already exists",
+ loser, winner, plugin);
Path disabledPlugin = Paths.get(loser + ".disabled");
elementsToAdd.add(disabledPlugin);
elementsToRemove.add(loser);
try {
Files.move(loser, disabledPlugin);
} catch (IOException e) {
- log.warn("Failed to fully disable plugin {}", loser, e);
+ logger.atWarning().withCause(e).log("Failed to fully disable plugin %s", loser);
}
}
Iterables.removeAll(files, elementsToRemove);
@@ -686,7 +702,7 @@
try {
return PluginUtil.listPlugins(pluginsDir);
} catch (IOException e) {
- log.error("Cannot list {}", pluginsDir.toAbsolutePath(), e);
+ logger.atSevere().withCause(e).log("Cannot list %s", pluginsDir.toAbsolutePath());
return ImmutableList.of();
}
}
diff --git a/java/com/google/gerrit/server/plugins/ServerPlugin.java b/java/com/google/gerrit/server/plugins/ServerPlugin.java
index 3e6589c..b87014b 100644
--- a/java/com/google/gerrit/server/plugins/ServerPlugin.java
+++ b/java/com/google/gerrit/server/plugins/ServerPlugin.java
@@ -16,6 +16,7 @@
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.registration.RegistrationHandle;
import com.google.gerrit.extensions.registration.ReloadableRegistrationHandle;
@@ -33,11 +34,9 @@
import java.util.jar.Attributes;
import java.util.jar.Manifest;
import org.eclipse.jgit.internal.storage.file.FileSnapshot;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class ServerPlugin extends Plugin {
- private static final Logger log = LoggerFactory.getLogger(ServerPlugin.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final Manifest manifest;
private final PluginContentScanner scanner;
@@ -160,9 +159,9 @@
} else if ("restart".equalsIgnoreCase(v)) {
return false;
} else {
- log.warn(
- String.format(
- "Plugin %s has invalid Gerrit-ReloadMode %s; assuming restart", getName(), v));
+ logger
+ .atWarning()
+ .log("Plugin %s has invalid Gerrit-ReloadMode %s; assuming restart", getName(), v);
return false;
}
}
diff --git a/java/com/google/gerrit/server/plugins/UniversalServerPluginProvider.java b/java/com/google/gerrit/server/plugins/UniversalServerPluginProvider.java
index 50b8752..b719e71 100644
--- a/java/com/google/gerrit/server/plugins/UniversalServerPluginProvider.java
+++ b/java/com/google/gerrit/server/plugins/UniversalServerPluginProvider.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.plugins;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@@ -21,12 +22,10 @@
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jgit.internal.storage.file.FileSnapshot;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
class UniversalServerPluginProvider implements ServerPluginProvider {
- private static final Logger log = LoggerFactory.getLogger(UniversalServerPluginProvider.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<ServerPluginProvider> serverPluginProviders;
@@ -82,11 +81,11 @@
List<ServerPluginProvider> providers = new ArrayList<>();
for (ServerPluginProvider serverPluginProvider : serverPluginProviders) {
boolean handles = serverPluginProvider.handles(srcPath);
- log.debug(
- "File {} handled by {} ? => {}",
- srcPath,
- serverPluginProvider.getProviderPluginName(),
- handles);
+ logger
+ .atFine()
+ .log(
+ "File %s handled by %s ? => %s",
+ srcPath, serverPluginProvider.getProviderPluginName(), handles);
if (handles) {
providers.add(serverPluginProvider);
}
diff --git a/java/com/google/gerrit/server/project/CommentLinkProvider.java b/java/com/google/gerrit/server/project/CommentLinkProvider.java
index 516965b..56cf51e 100644
--- a/java/com/google/gerrit/server/project/CommentLinkProvider.java
+++ b/java/com/google/gerrit/server/project/CommentLinkProvider.java
@@ -16,6 +16,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.projects.CommentLinkInfo;
import com.google.gerrit.server.config.ConfigUpdatedEvent;
import com.google.gerrit.server.config.GerritConfigListener;
@@ -27,12 +28,10 @@
import java.util.List;
import java.util.Set;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class CommentLinkProvider implements Provider<List<CommentLinkInfo>>, GerritConfigListener {
- private static final Logger log = LoggerFactory.getLogger(CommentLinkProvider.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private volatile List<CommentLinkInfo> commentLinks;
@@ -48,12 +47,12 @@
try {
CommentLinkInfoImpl cl = ProjectConfig.buildCommentLink(cfg, name, true);
if (cl.isOverrideOnly()) {
- log.warn("commentlink " + name + " empty except for \"enabled\"");
+ logger.atWarning().log("commentlink %s empty except for \"enabled\"", name);
continue;
}
cls.add(cl);
} catch (IllegalArgumentException e) {
- log.warn("invalid commentlink: " + e.getMessage());
+ logger.atWarning().log("invalid commentlink: %s", e.getMessage());
}
}
return ImmutableList.copyOf(cls);
diff --git a/java/com/google/gerrit/server/project/ConfiguredMimeTypes.java b/java/com/google/gerrit/server/project/ConfiguredMimeTypes.java
index 9181e80..28d036c 100644
--- a/java/com/google/gerrit/server/project/ConfiguredMimeTypes.java
+++ b/java/com/google/gerrit/server/project/ConfiguredMimeTypes.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.project;
+import com.google.common.flogger.FluentLogger;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -23,11 +24,9 @@
import org.eclipse.jgit.errors.InvalidPatternException;
import org.eclipse.jgit.fnmatch.FileNameMatcher;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class ConfiguredMimeTypes {
- private static final Logger log = LoggerFactory.getLogger(ConfiguredMimeTypes.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String MIMETYPE = "mimetype";
private static final String KEY_PATH = "path";
@@ -45,10 +44,11 @@
try {
add(typeName, path);
} catch (PatternSyntaxException | InvalidPatternException e) {
- log.warn(
- String.format(
+ logger
+ .atWarning()
+ .log(
"Ignoring invalid %s.%s.%s = %s in project %s: %s",
- MIMETYPE, typeName, KEY_PATH, path, projectName, e.getMessage()));
+ MIMETYPE, typeName, KEY_PATH, path, projectName, e.getMessage());
}
}
}
diff --git a/java/com/google/gerrit/server/project/CreateRefControl.java b/java/com/google/gerrit/server/project/CreateRefControl.java
index 90a7455..ddea227 100644
--- a/java/com/google/gerrit/server/project/CreateRefControl.java
+++ b/java/com/google/gerrit/server/project/CreateRefControl.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.project;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.extensions.restapi.ResourceConflictException;
import com.google.gerrit.reviewdb.client.Branch;
@@ -32,13 +33,11 @@
import org.eclipse.jgit.revwalk.RevObject;
import org.eclipse.jgit.revwalk.RevTag;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Manages access control for creating Git references (aka branches, tags). */
@Singleton
public class CreateRefControl {
- private static final Logger log = LoggerFactory.getLogger(CreateRefControl.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final PermissionBackend permissionBackend;
private final ProjectCache projectCache;
@@ -85,7 +84,10 @@
try (RevWalk rw = new RevWalk(repo)) {
rw.parseBody(tag);
} catch (IOException e) {
- log.error(String.format("RevWalk(%s) parsing %s:", branch.getParentKey(), tag.name()), e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log("RevWalk(%s) parsing %s:", branch.getParentKey(), tag.name());
throw e;
}
diff --git a/java/com/google/gerrit/server/project/GroupList.java b/java/com/google/gerrit/server/project/GroupList.java
index f70f2e6..fdb8740 100644
--- a/java/com/google/gerrit/server/project/GroupList.java
+++ b/java/com/google/gerrit/server/project/GroupList.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.project;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.GroupReference;
import com.google.gerrit.reviewdb.client.AccountGroup;
import com.google.gerrit.reviewdb.client.Project;
@@ -26,11 +27,9 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class GroupList extends TabFile {
- private static final Logger log = LoggerFactory.getLogger(GroupList.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static final String FILE_NAME = "groups";
@@ -46,7 +45,7 @@
Map<AccountGroup.UUID, GroupReference> groupsByUUID = new HashMap<>(rows.size());
for (Row row : rows) {
if (row.left == null) {
- log.warn("null field in group list for {}:\n{}", project, text);
+ logger.atWarning().log("null field in group list for %s:\n%s", project, text);
continue;
}
AccountGroup.UUID uuid = new AccountGroup.UUID(row.left);
diff --git a/java/com/google/gerrit/server/project/ProjectCacheImpl.java b/java/com/google/gerrit/server/project/ProjectCacheImpl.java
index 296965a..1f51fda 100644
--- a/java/com/google/gerrit/server/project/ProjectCacheImpl.java
+++ b/java/com/google/gerrit/server/project/ProjectCacheImpl.java
@@ -22,6 +22,7 @@
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSortedSet;
import com.google.common.collect.Sets;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.index.project.ProjectIndexer;
import com.google.gerrit.lifecycle.LifecycleModule;
import com.google.gerrit.reviewdb.client.AccountGroup;
@@ -44,13 +45,11 @@
import java.util.concurrent.locks.ReentrantLock;
import org.eclipse.jgit.errors.RepositoryNotFoundException;
import org.eclipse.jgit.lib.Repository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Cache of project information, including access rights. */
@Singleton
public class ProjectCacheImpl implements ProjectCache {
- private static final Logger log = LoggerFactory.getLogger(ProjectCacheImpl.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static final String CACHE_NAME = "projects";
@@ -132,7 +131,7 @@
try {
return checkedGet(projectName);
} catch (IOException e) {
- log.warn("Cannot read project " + projectName, e);
+ logger.atWarning().withCause(e).log("Cannot read project %s", projectName);
return null;
}
}
@@ -146,11 +145,11 @@
return strictCheckedGet(projectName);
} catch (Exception e) {
if (!(e.getCause() instanceof RepositoryNotFoundException)) {
- log.warn(String.format("Cannot read project %s", projectName.get()), e);
+ logger.atWarning().withCause(e).log("Cannot read project %s", projectName.get());
Throwables.throwIfInstanceOf(e.getCause(), IOException.class);
throw new IOException(e);
}
- log.debug("Cannot find project {}", projectName.get(), e);
+ logger.atFine().withCause(e).log("Cannot find project %s", projectName.get());
return null;
}
}
@@ -195,7 +194,7 @@
ListKey.ALL,
ImmutableSortedSet.copyOf(Sets.difference(list.get(ListKey.ALL), ImmutableSet.of(name))));
} catch (ExecutionException e) {
- log.warn("Cannot list available projects", e);
+ logger.atWarning().withCause(e).log("Cannot list available projects");
} finally {
listLock.unlock();
}
@@ -211,7 +210,7 @@
ImmutableSortedSet.copyOf(
Sets.union(list.get(ListKey.ALL), ImmutableSet.of(newProjectName))));
} catch (ExecutionException e) {
- log.warn("Cannot list available projects", e);
+ logger.atWarning().withCause(e).log("Cannot list available projects");
} finally {
listLock.unlock();
}
@@ -223,7 +222,7 @@
try {
return list.get(ListKey.ALL);
} catch (ExecutionException e) {
- log.warn("Cannot list available projects", e);
+ logger.atWarning().withCause(e).log("Cannot list available projects");
return ImmutableSortedSet.of();
}
}
@@ -249,7 +248,7 @@
// Right endpoint is exclusive, but U+FFFF is a non-character so no project ends with it.
return list.get(ListKey.ALL).subSet(start, end);
} catch (ExecutionException e) {
- log.warn("Cannot look up projects for prefix " + pfx, e);
+ logger.atWarning().withCause(e).log("Cannot look up projects for prefix %s", pfx);
return ImmutableSortedSet.of();
}
}
diff --git a/java/com/google/gerrit/server/project/ProjectCacheWarmer.java b/java/com/google/gerrit/server/project/ProjectCacheWarmer.java
index 10ab746..7ebbc51 100644
--- a/java/com/google/gerrit/server/project/ProjectCacheWarmer.java
+++ b/java/com/google/gerrit/server/project/ProjectCacheWarmer.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.project;
+import com.google.common.flogger.FluentLogger;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.reviewdb.client.Project;
@@ -24,12 +25,10 @@
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class ProjectCacheWarmer implements LifecycleListener {
- private static final Logger log = LoggerFactory.getLogger(ProjectCacheWarmer.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final Config config;
private final ProjectCache cache;
@@ -57,15 +56,15 @@
pool.shutdown();
try {
pool.awaitTermination(Long.MAX_VALUE, TimeUnit.MILLISECONDS);
- log.info("Finished loading project cache");
+ logger.atInfo().log("Finished loading project cache");
} catch (InterruptedException e) {
- log.warn("Interrupted while waiting for project cache to load");
+ logger.atWarning().log("Interrupted while waiting for project cache to load");
}
});
scheduler.setName("ProjectCacheWarmer");
scheduler.setDaemon(true);
- log.info("Loading project cache");
+ logger.atInfo().log("Loading project cache");
scheduler.start();
}
}
diff --git a/java/com/google/gerrit/server/project/ProjectHierarchyIterator.java b/java/com/google/gerrit/server/project/ProjectHierarchyIterator.java
index ac8d536..cc16fa5 100644
--- a/java/com/google/gerrit/server/project/ProjectHierarchyIterator.java
+++ b/java/com/google/gerrit/server/project/ProjectHierarchyIterator.java
@@ -17,14 +17,13 @@
import com.google.common.base.Joiner;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.config.AllProjectsName;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Set;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Iterates from a project up through its parents to All-Projects.
@@ -32,7 +31,7 @@
* <p>If a cycle is detected the cycle is broken and All-Projects is visited.
*/
class ProjectHierarchyIterator implements Iterator<ProjectState> {
- private static final Logger log = LoggerFactory.getLogger(ProjectHierarchyIterator.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final ProjectCache cache;
private final AllProjectsName allProjectsName;
@@ -91,8 +90,11 @@
}
int idx = order.lastIndexOf(parentName.get());
order.add(parentName.get());
- log.warn(
- "Cycle detected in projects: " + Joiner.on(" -> ").join(order.subList(idx, order.size())));
+ logger
+ .atWarning()
+ .log(
+ "Cycle detected in projects: %s",
+ Joiner.on(" -> ").join(order.subList(idx, order.size())));
return false;
}
diff --git a/java/com/google/gerrit/server/project/ProjectState.java b/java/com/google/gerrit/server/project/ProjectState.java
index 28f620b..a490f10 100644
--- a/java/com/google/gerrit/server/project/ProjectState.java
+++ b/java/com/google/gerrit/server/project/ProjectState.java
@@ -21,6 +21,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.AccessSection;
import com.google.gerrit.common.data.GroupReference;
import com.google.gerrit.common.data.LabelType;
@@ -66,12 +67,10 @@
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Cached information on a project. */
public class ProjectState {
- private static final Logger log = LoggerFactory.getLogger(ProjectState.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public interface Factory {
ProjectState create(ProjectConfig config);
@@ -226,7 +225,7 @@
try (Repository git = gitMgr.openRepository(getNameKey())) {
cfg.load(git, config.getRevision());
} catch (IOException | ConfigInvalidException e) {
- log.warn("Failed to load " + fileName + " for " + getName(), e);
+ logger.atWarning().withCause(e).log("Failed to load %s for %s", fileName, getName());
}
configs.put(fileName, cfg);
@@ -517,7 +516,7 @@
if (!Files.exists(dir)) {
return ThemeInfo.INHERIT;
} else if (!Files.isDirectory(dir)) {
- log.warn("Bad theme for {}: not a directory", name);
+ logger.atWarning().log("Bad theme for %s: not a directory", name);
return ThemeInfo.INHERIT;
}
try {
@@ -526,7 +525,7 @@
readFile(dir.resolve(SitePaths.HEADER_FILENAME)),
readFile(dir.resolve(SitePaths.FOOTER_FILENAME)));
} catch (IOException e) {
- log.error("Error reading theme for " + name, e);
+ logger.atSevere().withCause(e).log("Error reading theme for %s", name);
return ThemeInfo.INHERIT;
}
}
diff --git a/java/com/google/gerrit/server/project/Reachable.java b/java/com/google/gerrit/server/project/Reachable.java
index 0196d92..d2ce9dd 100644
--- a/java/com/google/gerrit/server/project/Reachable.java
+++ b/java/com/google/gerrit/server/project/Reachable.java
@@ -16,6 +16,7 @@
import com.google.common.collect.Iterables;
import com.google.common.collect.Maps;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.change.IncludedInResolver;
import com.google.gerrit.server.permissions.PermissionBackend;
@@ -32,8 +33,6 @@
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Report whether a commit is reachable from a set of commits. This is used for checking if a user
@@ -41,7 +40,7 @@
*/
@Singleton
public class Reachable {
- private static final Logger log = LoggerFactory.getLogger(Reachable.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final PermissionBackend permissionBackend;
@@ -61,11 +60,12 @@
.filter(refs, repo, RefFilterOptions.builder().setFilterTagsSeparately(true).build());
return IncludedInResolver.includedInAny(repo, rw, commit, filtered.values());
} catch (IOException | PermissionBackendException e) {
- log.error(
- String.format(
+ logger
+ .atSevere()
+ .withCause(e)
+ .log(
"Cannot verify permissions to commit object %s in repository %s",
- commit.name(), project),
- e);
+ commit.name(), project);
return false;
}
}
@@ -82,11 +82,12 @@
}
return fromRefs(project, repo, commit, refs);
} catch (IOException e) {
- log.error(
- String.format(
+ logger
+ .atSevere()
+ .withCause(e)
+ .log(
"Cannot verify permissions to commit object %s in repository %s",
- commit.name(), project),
- e);
+ commit.name(), project);
return false;
}
}
diff --git a/java/com/google/gerrit/server/project/RefUtil.java b/java/com/google/gerrit/server/project/RefUtil.java
index e42a7df..858e1d4 100644
--- a/java/com/google/gerrit/server/project/RefUtil.java
+++ b/java/com/google/gerrit/server/project/RefUtil.java
@@ -18,6 +18,7 @@
import static org.eclipse.jgit.lib.Constants.R_TAGS;
import com.google.common.collect.Iterables;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.restapi.BadRequestException;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.client.RefNames;
@@ -33,11 +34,9 @@
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.ObjectWalk;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class RefUtil {
- private static final Logger log = LoggerFactory.getLogger(RefUtil.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private RefUtil() {}
@@ -51,11 +50,13 @@
}
return revid;
} catch (IOException err) {
- log.error(
- "Cannot resolve \"" + baseRevision + "\" in project \"" + projectName.get() + "\"", err);
+ logger
+ .atSevere()
+ .withCause(err)
+ .log("Cannot resolve \"%s\" in project \"%s\"", baseRevision, projectName.get());
throw new InvalidRevisionException();
} catch (RevisionSyntaxException err) {
- log.error("Invalid revision syntax \"" + baseRevision + "\"", err);
+ logger.atSevere().withCause(err).log("Invalid revision syntax \"%s\"", baseRevision);
throw new InvalidRevisionException();
}
}
@@ -89,9 +90,10 @@
} catch (IncorrectObjectTypeException | MissingObjectException err) {
throw new InvalidRevisionException();
} catch (IOException err) {
- log.error(
- "Repository \"" + repo.getDirectory() + "\" may be corrupt; suggest running git fsck",
- err);
+ logger
+ .atSevere()
+ .withCause(err)
+ .log("Repository \"%s\" may be corrupt; suggest running git fsck", repo.getDirectory());
throw new InvalidRevisionException();
}
}
diff --git a/java/com/google/gerrit/server/project/SubmitRuleEvaluator.java b/java/com/google/gerrit/server/project/SubmitRuleEvaluator.java
index cb01b81..3fcb3a9 100644
--- a/java/com/google/gerrit/server/project/SubmitRuleEvaluator.java
+++ b/java/com/google/gerrit/server/project/SubmitRuleEvaluator.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.project;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.SubmitRecord;
import com.google.gerrit.common.data.SubmitTypeRecord;
import com.google.gerrit.extensions.registration.DynamicSet;
@@ -29,15 +30,14 @@
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Evaluates a submit-like Prolog rule found in the rules.pl file of the current project and filters
* the results through rules found in the parent projects, all the way up to All-Projects.
*/
public class SubmitRuleEvaluator {
- private static final Logger log = LoggerFactory.getLogger(SubmitRuleEvaluator.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
private static final String DEFAULT_MSG = "Error evaluating project rules, check server log";
private final ProjectCache projectCache;
@@ -119,9 +119,9 @@
private List<SubmitRecord> ruleError(String err, Exception e) {
if (opts.logErrors()) {
if (e == null) {
- log.error(err);
+ logger.atSevere().log(err);
} else {
- log.error(err, e);
+ logger.atSevere().withCause(e).log(err);
}
return defaultRuleError();
}
@@ -150,11 +150,7 @@
private SubmitTypeRecord typeError(String err, Exception e) {
if (opts.logErrors()) {
- if (e == null) {
- log.error(err);
- } else {
- log.error(err, e);
- }
+ logger.atSevere().withCause(e).log(err);
return defaultTypeError();
}
return SubmitTypeRecord.error(err);
diff --git a/java/com/google/gerrit/server/query/account/AccountQueryBuilder.java b/java/com/google/gerrit/server/query/account/AccountQueryBuilder.java
index ce236dc..e7ffd5e 100644
--- a/java/com/google/gerrit/server/query/account/AccountQueryBuilder.java
+++ b/java/com/google/gerrit/server/query/account/AccountQueryBuilder.java
@@ -16,6 +16,7 @@
import com.google.common.base.Splitter;
import com.google.common.collect.Lists;
+import com.google.common.flogger.FluentLogger;
import com.google.common.primitives.Ints;
import com.google.gerrit.common.errors.NotSignedInException;
import com.google.gerrit.index.Index;
@@ -41,12 +42,10 @@
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.ProvisionException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Parses a query string meant to be applied to account objects. */
public class AccountQueryBuilder extends QueryBuilder<AccountState> {
- private static final Logger log = LoggerFactory.getLogger(AccountQueryBuilder.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static final String FIELD_ACCOUNT = "account";
public static final String FIELD_CAN_SEE = "cansee";
@@ -226,7 +225,7 @@
try {
return canSeeSecondaryEmails();
} catch (PermissionBackendException e) {
- log.error("Permission check failed", e);
+ logger.atSevere().withCause(e).log("Permission check failed");
return false;
} catch (QueryParseException e) {
// User is not signed in.
diff --git a/java/com/google/gerrit/server/query/change/ChangeIsVisibleToPredicate.java b/java/com/google/gerrit/server/query/change/ChangeIsVisibleToPredicate.java
index 89f302b..916171b 100644
--- a/java/com/google/gerrit/server/query/change/ChangeIsVisibleToPredicate.java
+++ b/java/com/google/gerrit/server/query/change/ChangeIsVisibleToPredicate.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.query.change;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.index.query.IsVisibleToPredicate;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.server.ReviewDb;
@@ -30,11 +31,9 @@
import com.google.inject.Provider;
import java.io.IOException;
import org.eclipse.jgit.errors.RepositoryNotFoundException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class ChangeIsVisibleToPredicate extends IsVisibleToPredicate<ChangeData> {
- private static final Logger logger = LoggerFactory.getLogger(ChangeIsVisibleToPredicate.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
protected final Provider<ReviewDb> db;
protected final ChangeNotes.Factory notesFactory;
@@ -74,7 +73,7 @@
try {
ProjectState projectState = projectCache.checkedGet(cd.project());
if (projectState == null) {
- logger.info("No such project: {}", cd.project());
+ logger.atInfo().log("No such project: %s", cd.project());
return false;
}
if (!projectState.statePermitsRead()) {
@@ -94,8 +93,12 @@
} catch (PermissionBackendException e) {
Throwable cause = e.getCause();
if (cause instanceof RepositoryNotFoundException) {
- logger.warn(
- "Skipping change {} because the corresponding repository was not found", cd.getId(), e);
+ logger
+ .atWarning()
+ .withCause(e)
+ .log(
+ "Skipping change %s because the corresponding repository was not found",
+ cd.getId());
return false;
}
throw new OrmException("unable to check permissions on change " + cd.getId(), e);
diff --git a/java/com/google/gerrit/server/query/change/OutputStreamQuery.java b/java/com/google/gerrit/server/query/change/OutputStreamQuery.java
index 0806edf..dc57a9b 100644
--- a/java/com/google/gerrit/server/query/change/OutputStreamQuery.java
+++ b/java/com/google/gerrit/server/query/change/OutputStreamQuery.java
@@ -17,6 +17,7 @@
import static com.google.common.base.Preconditions.checkState;
import static java.nio.charset.StandardCharsets.UTF_8;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.TimeUtil;
import com.google.gerrit.common.data.LabelTypes;
import com.google.gerrit.index.query.QueryParseException;
@@ -54,8 +55,6 @@
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.util.io.DisabledOutputStream;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Change query implementation that outputs to a stream in the style of an SSH command.
@@ -64,7 +63,7 @@
* holding on to a single instance.
*/
public class OutputStreamQuery {
- private static final Logger log = LoggerFactory.getLogger(OutputStreamQuery.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final DateTimeFormatter dtf =
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss zzz")
@@ -214,7 +213,7 @@
stats.runTimeMilliseconds = TimeUtil.nowMs() - stats.runTimeMilliseconds;
show(stats);
} catch (OrmException err) {
- log.error("Cannot execute query: " + queryString, err);
+ logger.atSevere().withCause(err).log("Cannot execute query: %s", queryString);
ErrorMessage m = new ErrorMessage();
m.message = "cannot query database";
diff --git a/java/com/google/gerrit/server/query/change/ParentProjectPredicate.java b/java/com/google/gerrit/server/query/change/ParentProjectPredicate.java
index a9de2b1..17d6448 100644
--- a/java/com/google/gerrit/server/query/change/ParentProjectPredicate.java
+++ b/java/com/google/gerrit/server/query/change/ParentProjectPredicate.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.query.change;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.common.ProjectInfo;
import com.google.gerrit.index.query.OrPredicate;
import com.google.gerrit.index.query.Predicate;
@@ -25,11 +26,9 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class ParentProjectPredicate extends OrPredicate<ChangeData> {
- private static final Logger log = LoggerFactory.getLogger(ParentProjectPredicate.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
protected final String value;
@@ -53,7 +52,7 @@
r.add(new ProjectPredicate(p.name));
}
} catch (PermissionBackendException e) {
- log.warn("cannot check permissions to expand child projects", e);
+ logger.atWarning().withCause(e).log("cannot check permissions to expand child projects");
}
return r;
}
diff --git a/java/com/google/gerrit/server/query/change/TrackingIdPredicate.java b/java/com/google/gerrit/server/query/change/TrackingIdPredicate.java
index a3566a5..4f751c5 100644
--- a/java/com/google/gerrit/server/query/change/TrackingIdPredicate.java
+++ b/java/com/google/gerrit/server/query/change/TrackingIdPredicate.java
@@ -14,14 +14,13 @@
package com.google.gerrit.server.query.change;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.server.index.change.ChangeField;
import com.google.gwtorm.server.OrmException;
import java.io.IOException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class TrackingIdPredicate extends ChangeIndexPredicate {
- private static final Logger log = LoggerFactory.getLogger(TrackingIdPredicate.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public TrackingIdPredicate(String trackingId) {
super(ChangeField.TR, trackingId);
@@ -32,7 +31,7 @@
try {
return cd.trackingFooters().containsValue(getValue());
} catch (IOException e) {
- log.warn("Cannot extract footers from " + cd.getId(), e);
+ logger.atWarning().withCause(e).log("Cannot extract footers from %s", cd.getId());
}
return false;
}
diff --git a/java/com/google/gerrit/server/query/group/InternalGroupQuery.java b/java/com/google/gerrit/server/query/group/InternalGroupQuery.java
index 7a3a905..d9808f2 100644
--- a/java/com/google/gerrit/server/query/group/InternalGroupQuery.java
+++ b/java/com/google/gerrit/server/query/group/InternalGroupQuery.java
@@ -18,6 +18,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.index.IndexConfig;
import com.google.gerrit.index.query.InternalQuery;
import com.google.gerrit.index.query.Predicate;
@@ -29,8 +30,6 @@
import com.google.inject.Inject;
import java.util.List;
import java.util.Optional;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Query wrapper for the group index.
@@ -39,7 +38,7 @@
* holding on to a single instance.
*/
public class InternalGroupQuery extends InternalQuery<InternalGroup> {
- private static final Logger log = LoggerFactory.getLogger(InternalGroupQuery.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
@Inject
InternalGroupQuery(
@@ -76,7 +75,7 @@
ImmutableList<AccountGroup.UUID> groupUuids =
groups.stream().map(InternalGroup::getGroupUUID).collect(toImmutableList());
- log.warn(String.format("Ambiguous %s for groups %s.", groupDescription, groupUuids));
+ logger.atWarning().log("Ambiguous %s for groups %s.", groupDescription, groupUuids);
return Optional.empty();
}
}
diff --git a/java/com/google/gerrit/server/rules/DefaultSubmitRule.java b/java/com/google/gerrit/server/rules/DefaultSubmitRule.java
index a9482fe..94931ba 100644
--- a/java/com/google/gerrit/server/rules/DefaultSubmitRule.java
+++ b/java/com/google/gerrit/server/rules/DefaultSubmitRule.java
@@ -16,6 +16,7 @@
import static com.google.common.collect.ImmutableList.toImmutableList;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.LabelFunction;
import com.google.gerrit.common.data.LabelType;
import com.google.gerrit.common.data.SubmitRecord;
@@ -33,8 +34,6 @@
import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Java implementation of Gerrit's default pre-submit rules behavior: check if the labels have the
@@ -45,7 +44,7 @@
*/
@Singleton
public final class DefaultSubmitRule implements SubmitRule {
- private static final Logger log = LoggerFactory.getLogger(DefaultSubmitRule.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static class Module extends FactoryModule {
@Override
@@ -82,7 +81,10 @@
labelTypes = cd.getLabelTypes().getLabelTypes();
approvals = cd.currentApprovals();
} catch (OrmException e) {
- log.error("Unable to fetch labels and approvals for change {}", cd.getId(), e);
+ logger
+ .atSevere()
+ .withCause(e)
+ .log("Unable to fetch labels and approvals for change %s", cd.getId());
submitRecord.errorMessage = "Unable to fetch labels and approvals for the change";
submitRecord.status = SubmitRecord.Status.RULE_ERROR;
@@ -94,8 +96,11 @@
for (LabelType t : labelTypes) {
LabelFunction labelFunction = t.getFunction();
if (labelFunction == null) {
- log.error(
- "Unable to find the LabelFunction for label {}, change {}", t.getName(), cd.getId());
+ logger
+ .atSevere()
+ .log(
+ "Unable to find the LabelFunction for label %s, change %s",
+ t.getName(), cd.getId());
submitRecord.errorMessage = "Unable to find the LabelFunction for label " + t.getName();
submitRecord.status = SubmitRecord.Status.RULE_ERROR;
diff --git a/java/com/google/gerrit/server/rules/PrologEnvironment.java b/java/com/google/gerrit/server/rules/PrologEnvironment.java
index 9dd0b86..083898b 100644
--- a/java/com/google/gerrit/server/rules/PrologEnvironment.java
+++ b/java/com/google/gerrit/server/rules/PrologEnvironment.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.rules;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.server.AnonymousUser;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.PatchSetUtil;
@@ -39,8 +40,6 @@
import java.util.List;
import java.util.Map;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Per-thread Prolog interpreter.
@@ -50,7 +49,7 @@
* <p>A single copy of the Prolog interpreter, for the current thread.
*/
public class PrologEnvironment extends BufferingPrologControl {
- private static final Logger log = LoggerFactory.getLogger(PrologEnvironment.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public interface Factory {
/**
@@ -142,7 +141,7 @@
try {
i.next().run();
} catch (Throwable err) {
- log.error("Failed to execute cleanup for PrologEnvironment", err);
+ logger.atSevere().withCause(err).log("Failed to execute cleanup for PrologEnvironment");
}
i.remove();
}
diff --git a/java/com/google/gerrit/server/rules/PrologRuleEvaluator.java b/java/com/google/gerrit/server/rules/PrologRuleEvaluator.java
index 0cc907d..5e2cfcc 100644
--- a/java/com/google/gerrit/server/rules/PrologRuleEvaluator.java
+++ b/java/com/google/gerrit/server/rules/PrologRuleEvaluator.java
@@ -18,6 +18,7 @@
import static com.google.gerrit.server.project.SubmitRuleEvaluator.defaultRuleError;
import static com.google.gerrit.server.project.SubmitRuleEvaluator.defaultTypeError;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.SubmitRecord;
import com.google.gerrit.common.data.SubmitTypeRecord;
import com.google.gerrit.extensions.client.SubmitType;
@@ -50,15 +51,13 @@
import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Evaluates a submit-like Prolog rule found in the rules.pl file of the current project and filters
* the results through rules found in the parent projects, all the way up to All-Projects.
*/
public class PrologRuleEvaluator {
- private static final Logger log = LoggerFactory.getLogger(PrologRuleEvaluator.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public interface Factory {
/** Returns a new {@link PrologRuleEvaluator} with the specified options */
@@ -302,11 +301,7 @@
private List<SubmitRecord> ruleError(String err, Exception e) {
if (opts.logErrors()) {
- if (e == null) {
- log.error(err);
- } else {
- log.error(err, e);
- }
+ logger.atSevere().withCause(e).log(err);
return defaultRuleError();
}
return createRuleError(err);
@@ -384,11 +379,7 @@
private SubmitTypeRecord typeError(String err, Exception e) {
if (opts.logErrors()) {
- if (e == null) {
- log.error(err);
- } else {
- log.error(err, e);
- }
+ logger.atSevere().withCause(e).log(err);
return defaultTypeError();
}
return SubmitTypeRecord.error(err);
diff --git a/java/com/google/gerrit/server/schema/BUILD b/java/com/google/gerrit/server/schema/BUILD
index 32a14db..44bede9 100644
--- a/java/com/google/gerrit/server/schema/BUILD
+++ b/java/com/google/gerrit/server/schema/BUILD
@@ -18,10 +18,10 @@
"//lib/auto:auto-value",
"//lib/auto:auto-value-annotations",
"//lib/commons:dbcp",
+ "//lib/flogger:api",
"//lib/guice",
"//lib/jgit/org.eclipse.jgit.archive:jgit-archive",
"//lib/jgit/org.eclipse.jgit:jgit",
- "//lib/log:api",
"//lib/log:jsonevent-layout",
"//lib/log:log4j",
],
diff --git a/java/com/google/gerrit/server/schema/GroupBundle.java b/java/com/google/gerrit/server/schema/GroupBundle.java
index e15587b..3988418 100644
--- a/java/com/google/gerrit/server/schema/GroupBundle.java
+++ b/java/com/google/gerrit/server/schema/GroupBundle.java
@@ -30,6 +30,7 @@
import com.google.common.collect.MultimapBuilder;
import com.google.common.collect.Multimaps;
import com.google.common.collect.Streams;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.TimeUtil;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.AccountGroup;
@@ -60,8 +61,6 @@
import java.util.stream.Stream;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.Repository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* A bundle of all entities rooted at a single {@link AccountGroup} entity.
@@ -71,7 +70,7 @@
*/
@AutoValue
abstract class GroupBundle {
- private static final Logger log = LoggerFactory.getLogger(GroupBundle.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
static {
// Initialization-time checks that the column set hasn't changed since the
@@ -414,12 +413,11 @@
// corrupt, and it's not clear if we can programmatically repair it. For migrating to NoteDb,
// we'll try our best to recreate it, but no guarantees it will match the real sequence of
// attempted operations, which is in any case lost in the mists of time.
- log.warn(
- "group {} in {} has duplicate {} entities: {}",
- uuid,
- source,
- clazz.getSimpleName(),
- iterable);
+ logger
+ .atWarning()
+ .log(
+ "group %s in %s has duplicate %s entities: %s",
+ uuid, source, clazz.getSimpleName(), iterable);
}
return set;
}
diff --git a/java/com/google/gerrit/server/schema/JdbcAccountPatchReviewStore.java b/java/com/google/gerrit/server/schema/JdbcAccountPatchReviewStore.java
index 43f39b2..83a0986 100644
--- a/java/com/google/gerrit/server/schema/JdbcAccountPatchReviewStore.java
+++ b/java/com/google/gerrit/server/schema/JdbcAccountPatchReviewStore.java
@@ -18,6 +18,7 @@
import static java.util.concurrent.TimeUnit.SECONDS;
import com.google.common.collect.ImmutableSet;
+import com.google.common.flogger.FluentLogger;
import com.google.common.primitives.Ints;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.extensions.registration.DynamicItem;
@@ -41,18 +42,17 @@
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public abstract class JdbcAccountPatchReviewStore
implements AccountPatchReviewStore, LifecycleListener {
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
private static final String ACCOUNT_PATCH_REVIEW_DB = "accountPatchReviewDb";
private static final String H2_DB = "h2";
private static final String MARIADB = "mariadb";
private static final String MYSQL = "mysql";
private static final String POSTGRESQL = "postgresql";
private static final String URL = "url";
- private static final Logger log = LoggerFactory.getLogger(JdbcAccountPatchReviewStore.class);
public static class Module extends LifecycleModule {
private final Config cfg;
@@ -164,7 +164,7 @@
try {
createTableIfNotExists();
} catch (OrmException e) {
- log.error("Failed to create table to store account patch reviews", e);
+ logger.atSevere().withCause(e).log("Failed to create table to store account patch reviews");
}
}
diff --git a/java/com/google/gerrit/server/schema/Schema_154.java b/java/com/google/gerrit/server/schema/Schema_154.java
index 6447921..8dfd356 100644
--- a/java/com/google/gerrit/server/schema/Schema_154.java
+++ b/java/com/google/gerrit/server/schema/Schema_154.java
@@ -17,6 +17,7 @@
import static java.util.stream.Collectors.toMap;
import com.google.common.collect.ImmutableMap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.GerritPersonIdent;
@@ -44,12 +45,11 @@
import org.eclipse.jgit.lib.ProgressMonitor;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.TextProgressMonitor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Migrate accounts to NoteDb. */
public class Schema_154 extends SchemaVersion {
- private static final Logger log = LoggerFactory.getLogger(Schema_154.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
private static final String TABLE = "accounts";
private static final ImmutableMap<String, AccountSetter> ACCOUNT_FIELDS_MAP =
ImmutableMap.<String, AccountSetter>builder()
@@ -98,7 +98,7 @@
private Set<Account> scanAccounts(ReviewDb db, ProgressMonitor pm) throws SQLException {
Map<String, AccountSetter> fields = getFields(db);
if (fields.isEmpty()) {
- log.warn("Only account_id and registered_on fields are migrated for accounts");
+ logger.atWarning().log("Only account_id and registered_on fields are migrated for accounts");
}
List<String> queryFields = new ArrayList<>();
diff --git a/java/com/google/gerrit/server/schema/Schema_167.java b/java/com/google/gerrit/server/schema/Schema_167.java
index 5e93b2c..ff08c1a 100644
--- a/java/com/google/gerrit/server/schema/Schema_167.java
+++ b/java/com/google/gerrit/server/schema/Schema_167.java
@@ -20,6 +20,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.GroupDescription;
import com.google.gerrit.common.data.GroupReference;
@@ -57,12 +58,10 @@
import org.eclipse.jgit.lib.ObjectInserter;
import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.lib.Repository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Migrate groups from ReviewDb to NoteDb. */
public class Schema_167 extends SchemaVersion {
- private static final Logger log = LoggerFactory.getLogger(Schema_167.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final GitRepositoryManager repoManager;
private final AllUsersName allUsersName;
@@ -196,11 +195,13 @@
AccountConfig accountConfig = new AccountConfig(accountId, allUsersRepo).load();
return accountConfig.getLoadedAccount();
} catch (IOException | ConfigInvalidException ignored) {
- log.warn(
- "Failed to load account {}."
- + " Cannot get account name for group audit log commit messages.",
- accountId.get(),
- ignored);
+ logger
+ .atWarning()
+ .withCause(ignored)
+ .log(
+ "Failed to load account %s."
+ + " Cannot get account name for group audit log commit messages.",
+ accountId.get());
return Optional.empty();
}
}
@@ -248,11 +249,13 @@
}
return groupDescriptions;
} catch (SQLException ignored) {
- log.warn(
- "Failed to load group {}."
- + " Cannot get group name for group audit log commit messages.",
- groupUuid.get(),
- ignored);
+ logger
+ .atWarning()
+ .withCause(ignored)
+ .log(
+ "Failed to load group %s."
+ + " Cannot get group name for group audit log commit messages.",
+ groupUuid.get());
return ImmutableList.of();
}
}
diff --git a/java/com/google/gerrit/server/securestore/SecureStoreProvider.java b/java/com/google/gerrit/server/securestore/SecureStoreProvider.java
index 88c2072..4e43b2e 100644
--- a/java/com/google/gerrit/server/securestore/SecureStoreProvider.java
+++ b/java/com/google/gerrit/server/securestore/SecureStoreProvider.java
@@ -15,6 +15,7 @@
package com.google.gerrit.server.securestore;
import com.google.common.base.Strings;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.SiteLibraryLoaderUtil;
import com.google.gerrit.server.config.SitePaths;
@@ -23,12 +24,10 @@
import com.google.inject.Provider;
import com.google.inject.Singleton;
import java.nio.file.Path;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@Singleton
public class SecureStoreProvider implements Provider<SecureStore> {
- private static final Logger log = LoggerFactory.getLogger(SecureStoreProvider.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final Path libdir;
private final Injector injector;
@@ -58,7 +57,7 @@
return (Class<? extends SecureStore>) Class.forName(className);
} catch (ClassNotFoundException e) {
String msg = String.format("Cannot load secure store class: %s", className);
- log.error(msg, e);
+ logger.atSevere().withCause(e).log(msg);
throw new RuntimeException(msg, e);
}
}
diff --git a/java/com/google/gerrit/server/ssh/SshAddressesModule.java b/java/com/google/gerrit/server/ssh/SshAddressesModule.java
index 0e5b2f8..0a6bcac 100644
--- a/java/com/google/gerrit/server/ssh/SshAddressesModule.java
+++ b/java/com/google/gerrit/server/ssh/SshAddressesModule.java
@@ -15,6 +15,7 @@
package com.google.gerrit.server.ssh;
import com.google.common.collect.Lists;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.util.SocketUtil;
import com.google.inject.AbstractModule;
@@ -26,11 +27,9 @@
import java.util.Arrays;
import java.util.List;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class SshAddressesModule extends AbstractModule {
- private static final Logger log = LoggerFactory.getLogger(SshAddressesModule.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static final int DEFAULT_PORT = 29418;
public static final int IANA_SSH_PORT = 22;
@@ -57,7 +56,7 @@
try {
listen.add(SocketUtil.resolve(desc, DEFAULT_PORT));
} catch (IllegalArgumentException e) {
- log.error("Bad sshd.listenaddress: " + desc + ": " + e.getMessage());
+ logger.atSevere().log("Bad sshd.listenaddress: %s: %s", desc, e.getMessage());
}
}
return listen;
diff --git a/java/com/google/gerrit/server/submit/EmailMerge.java b/java/com/google/gerrit/server/submit/EmailMerge.java
index aceb824..a6b73447 100644
--- a/java/com/google/gerrit/server/submit/EmailMerge.java
+++ b/java/com/google/gerrit/server/submit/EmailMerge.java
@@ -15,6 +15,7 @@
package com.google.gerrit.server.submit;
import com.google.common.collect.ListMultimap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.api.changes.RecipientType;
@@ -37,11 +38,9 @@
import com.google.inject.assistedinject.Assisted;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
class EmailMerge implements Runnable, RequestContext {
- private static final Logger log = LoggerFactory.getLogger(EmailMerge.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
interface Factory {
EmailMerge create(
@@ -107,7 +106,7 @@
cm.setAccountsToNotify(accountsToNotify);
cm.send();
} catch (Exception e) {
- log.error("Cannot email merged notification for " + changeId, e);
+ logger.atSevere().withCause(e).log("Cannot email merged notification for %s", changeId);
} finally {
requestContext.setContext(old);
if (db != null) {
diff --git a/java/com/google/gerrit/server/submit/GitModules.java b/java/com/google/gerrit/server/submit/GitModules.java
index 92e0cb3..b7eb68f 100644
--- a/java/com/google/gerrit/server/submit/GitModules.java
+++ b/java/com/google/gerrit/server/submit/GitModules.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.submit;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.reviewdb.client.Branch;
import com.google.gerrit.reviewdb.client.Project;
@@ -36,15 +37,13 @@
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.treewalk.TreeWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Loads the .gitmodules file of the specified project/branch. It can be queried which submodules
* this branch is subscribed to.
*/
public class GitModules {
- private static final Logger log = LoggerFactory.getLogger(GitModules.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public interface Factory {
GitModules create(Branch.NameKey project, MergeOpRepoManager m);
@@ -105,8 +104,8 @@
}
private void logDebug(String msg, Object... args) {
- if (log.isDebugEnabled()) {
- log.debug(submissionId + msg, args);
+ if (logger.atFine().isEnabled()) {
+ logger.atFine().logVarargs(submissionId + msg, args);
}
}
}
diff --git a/java/com/google/gerrit/server/submit/LocalMergeSuperSetComputation.java b/java/com/google/gerrit/server/submit/LocalMergeSuperSetComputation.java
index fa20ad9..06f57b5 100644
--- a/java/com/google/gerrit/server/submit/LocalMergeSuperSetComputation.java
+++ b/java/com/google/gerrit/server/submit/LocalMergeSuperSetComputation.java
@@ -21,6 +21,7 @@
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.SubmitTypeRecord;
import com.google.gerrit.extensions.client.SubmitType;
import com.google.gerrit.extensions.registration.DynamicItem;
@@ -55,15 +56,13 @@
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevSort;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Default implementation of MergeSuperSet that does the computation of the merge super set
* sequentially on the local Gerrit instance.
*/
public class LocalMergeSuperSetComputation implements MergeSuperSetComputation {
- private static final Logger log = LoggerFactory.getLogger(LocalMergeSuperSetComputation.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static class Module extends AbstractModule {
@Override
@@ -261,9 +260,7 @@
}
private void logErrorAndThrow(String msg) throws OrmException {
- if (log.isErrorEnabled()) {
- log.error(msg);
- }
+ logger.atSevere().log(msg);
throw new OrmException(msg);
}
}
diff --git a/java/com/google/gerrit/server/submit/MergeOp.java b/java/com/google/gerrit/server/submit/MergeOp.java
index 7dd1ac9..b5b11f2 100644
--- a/java/com/google/gerrit/server/submit/MergeOp.java
+++ b/java/com/google/gerrit/server/submit/MergeOp.java
@@ -31,6 +31,7 @@
import com.google.common.collect.ListMultimap;
import com.google.common.collect.MultimapBuilder;
import com.google.common.collect.SetMultimap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.TimeUtil;
import com.google.gerrit.common.data.SubmitRecord;
@@ -96,8 +97,6 @@
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.revwalk.RevCommit;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Merges changes in submission order into a single branch.
@@ -111,7 +110,7 @@
* conflicting, even if an earlier commit along that same line can be merged cleanly.
*/
public class MergeOp implements AutoCloseable {
- private static final Logger log = LoggerFactory.getLogger(MergeOp.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final SubmitRuleOptions SUBMIT_RULE_OPTIONS = SubmitRuleOptions.builder().build();
private static final SubmitRuleOptions SUBMIT_RULE_OPTIONS_ALLOW_CLOSED =
@@ -160,12 +159,12 @@
public void logProblem(Change.Id id, Throwable t) {
String msg = "Error reading change";
- log.error(msg + " " + id, t);
+ logger.atSevere().withCause(t).log("%s %s", msg, id);
problems.put(id, msg);
}
public void logProblem(Change.Id id, String msg) {
- log.error(msg + " " + id);
+ logger.atSevere().log("%s %s", msg, id);
problems.put(id, msg);
}
@@ -390,7 +389,7 @@
commitStatus.problem(cd.getId(), e.getMessage());
} catch (OrmException e) {
String msg = "Error checking submit rules for change";
- log.warn(msg + " " + cd.getId(), e);
+ logger.atWarning().withCause(e).log("%s %s", msg, cd.getId());
commitStatus.problem(cd.getId(), msg);
}
}
@@ -938,31 +937,21 @@
}
private void logDebug(String msg, Object... args) {
- if (log.isDebugEnabled()) {
- log.debug(submissionId + msg, args);
+ if (logger.atFine().isEnabled()) {
+ logger.atFine().logVarargs(submissionId + msg, args);
}
}
private void logWarn(String msg, Throwable t) {
- if (log.isWarnEnabled()) {
- log.warn(submissionId + msg, t);
- }
+ logger.atWarning().withCause(t).log("%s%s", submissionId, msg);
}
private void logWarn(String msg) {
- if (log.isWarnEnabled()) {
- log.warn(submissionId + msg);
- }
+ logger.atWarning().log("%s%s", submissionId, msg);
}
private void logError(String msg, Throwable t) {
- if (log.isErrorEnabled()) {
- if (t != null) {
- log.error(submissionId + msg, t);
- } else {
- log.error(submissionId + msg);
- }
- }
+ logger.atSevere().withCause(t).log("%s%s", submissionId, msg);
}
private void logError(String msg) {
diff --git a/java/com/google/gerrit/server/submit/RebaseSorter.java b/java/com/google/gerrit/server/submit/RebaseSorter.java
index c11ce4f..7fb17431 100644
--- a/java/com/google/gerrit/server/submit/RebaseSorter.java
+++ b/java/com/google/gerrit/server/submit/RebaseSorter.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.submit;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Branch;
import com.google.gerrit.reviewdb.client.Change.Status;
import com.google.gerrit.server.git.CodeReviewCommit;
@@ -32,11 +33,9 @@
import java.util.Set;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevFlag;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class RebaseSorter {
- private static final Logger log = LoggerFactory.getLogger(RebaseSorter.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final CodeReviewRevWalk rw;
private final RevFlag canMergeFlag;
@@ -110,8 +109,11 @@
// check if the commit is merged in other branches
for (RevCommit accepted : alreadyAccepted) {
if (mirw.isMergedInto(mirw.parseCommit(commit), mirw.parseCommit(accepted))) {
- log.debug(
- "Dependency {} merged into branch head {}.", commit.getName(), accepted.getName());
+ logger
+ .atFine()
+ .log(
+ "Dependency %s merged into branch head %s.",
+ commit.getName(), accepted.getName());
return true;
}
}
@@ -121,8 +123,11 @@
for (ChangeData change : changes) {
if (change.change().getStatus() == Status.MERGED
&& change.change().getDest().equals(dest)) {
- log.debug(
- "Dependency {} associated with merged change {}.", commit.getName(), change.getId());
+ logger
+ .atFine()
+ .log(
+ "Dependency %s associated with merged change %s.",
+ commit.getName(), change.getId());
return true;
}
}
diff --git a/java/com/google/gerrit/server/submit/SubmitDryRun.java b/java/com/google/gerrit/server/submit/SubmitDryRun.java
index a0b927a..055e3cc 100644
--- a/java/com/google/gerrit/server/submit/SubmitDryRun.java
+++ b/java/com/google/gerrit/server/submit/SubmitDryRun.java
@@ -18,6 +18,7 @@
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Streams;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.client.SubmitType;
import com.google.gerrit.reviewdb.client.Branch;
import com.google.gerrit.server.git.CodeReviewCommit;
@@ -41,12 +42,10 @@
import org.eclipse.jgit.revwalk.RevObject;
import org.eclipse.jgit.revwalk.RevTag;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Dry run of a submit strategy. */
public class SubmitDryRun {
- private static final Logger log = LoggerFactory.getLogger(SubmitDryRun.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
static class Arguments {
final Repository repo;
@@ -135,7 +134,7 @@
case INHERIT:
default:
String errorMsg = "No submit strategy for: " + submitType;
- log.error(errorMsg);
+ logger.atSevere().log(errorMsg);
throw new IntegrationException(errorMsg);
}
}
diff --git a/java/com/google/gerrit/server/submit/SubmitStrategyFactory.java b/java/com/google/gerrit/server/submit/SubmitStrategyFactory.java
index a2ddb16..2cb0744 100644
--- a/java/com/google/gerrit/server/submit/SubmitStrategyFactory.java
+++ b/java/com/google/gerrit/server/submit/SubmitStrategyFactory.java
@@ -15,6 +15,7 @@
package com.google.gerrit.server.submit;
import com.google.common.collect.ListMultimap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.api.changes.RecipientType;
import com.google.gerrit.extensions.api.changes.SubmitInput;
import com.google.gerrit.extensions.client.SubmitType;
@@ -32,13 +33,11 @@
import java.util.Set;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevFlag;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/** Factory to create a {@link SubmitStrategy} for a {@link SubmitType}. */
@Singleton
public class SubmitStrategyFactory {
- private static final Logger log = LoggerFactory.getLogger(SubmitStrategyFactory.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final SubmitStrategy.Arguments.Factory argsFactory;
@@ -97,7 +96,7 @@
case INHERIT:
default:
String errorMsg = "No submit strategy for: " + submitType;
- log.error(errorMsg);
+ logger.atSevere().log(errorMsg);
throw new IntegrationException(errorMsg);
}
}
diff --git a/java/com/google/gerrit/server/submit/SubmitStrategyOp.java b/java/com/google/gerrit/server/submit/SubmitStrategyOp.java
index 0c6c10e..48d8a63 100644
--- a/java/com/google/gerrit/server/submit/SubmitStrategyOp.java
+++ b/java/com/google/gerrit/server/submit/SubmitStrategyOp.java
@@ -21,6 +21,7 @@
import com.google.common.base.Function;
import com.google.common.collect.Iterables;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.SubmitRecord;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.Branch;
@@ -63,11 +64,9 @@
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.transport.ReceiveCommand;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
abstract class SubmitStrategyOp implements BatchUpdateOp {
- private static final Logger log = LoggerFactory.getLogger(SubmitStrategyOp.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
protected final SubmitStrategy.Arguments args;
protected final CodeReviewCommit toMerge;
@@ -290,7 +289,7 @@
setMerged(ctx, message(ctx, commit, s));
} catch (OrmException err) {
String msg = "Error updating change status for " + id;
- log.error(msg, err);
+ logger.atSevere().withCause(err).log(msg);
args.commitStatus.logProblem(id, msg);
// It's possible this happened before updating anything in the db, but
// it's hard to know for sure, so just return true below to be safe.
@@ -532,7 +531,7 @@
try (Repository git = args.repoManager.openRepository(getProject())) {
git.setGitwebDescription(p.getProject().getDescription());
} catch (IOException e) {
- log.error("cannot update description of " + p.getName(), e);
+ logger.atSevere().withCause(e).log("cannot update description of %s", p.getName());
}
}
}
@@ -549,7 +548,7 @@
args.accountsToNotify)
.sendAsync();
} catch (Exception e) {
- log.error("Cannot email merged notification for " + getId(), e);
+ logger.atSevere().withCause(e).log("Cannot email merged notification for %s", getId());
}
if (mergeResultRev != null && !args.dryrun) {
args.changeMerged.fire(
@@ -602,25 +601,17 @@
}
protected final void logDebug(String msg, Object... args) {
- if (log.isDebugEnabled()) {
- log.debug(this.args.submissionId + msg, args);
+ if (logger.atFine().isEnabled()) {
+ logger.atFine().logVarargs(this.args.submissionId + msg, args);
}
}
protected final void logWarn(String msg, Throwable t) {
- if (log.isWarnEnabled()) {
- log.warn(args.submissionId + msg, t);
- }
+ logger.atWarning().withCause(t).log("%s%s", args.submissionId, msg);
}
protected void logError(String msg, Throwable t) {
- if (log.isErrorEnabled()) {
- if (t != null) {
- log.error(args.submissionId + msg, t);
- } else {
- log.error(args.submissionId + msg);
- }
- }
+ logger.atSevere().withCause(t).log("%s%s", args.submissionId, msg);
}
protected void logError(String msg) {
diff --git a/java/com/google/gerrit/server/submit/SubmoduleOp.java b/java/com/google/gerrit/server/submit/SubmoduleOp.java
index 4b24275..e33aa95 100644
--- a/java/com/google/gerrit/server/submit/SubmoduleOp.java
+++ b/java/com/google/gerrit/server/submit/SubmoduleOp.java
@@ -19,6 +19,7 @@
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.MultimapBuilder;
import com.google.common.collect.SetMultimap;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.SubscribeSection;
import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.gerrit.reviewdb.client.Branch;
@@ -70,10 +71,9 @@
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.transport.RefSpec;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class SubmoduleOp {
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
/** Only used for branches without code review changes */
public class GitlinkOp implements RepoOnlyOp {
@@ -128,8 +128,6 @@
}
}
- private static final Logger log = LoggerFactory.getLogger(SubmoduleOp.class);
-
private final GitModules.Factory gitmodulesFactory;
private final PersonIdent myIdent;
private final ProjectCache projectCache;
@@ -679,8 +677,8 @@
}
private void logDebug(String msg, Object... args) {
- if (log.isDebugEnabled()) {
- log.debug(orm.getSubmissionId() + msg, args);
+ if (logger.atFine().isEnabled()) {
+ logger.atFine().logVarargs(orm.getSubmissionId() + " " + msg, args);
}
}
}
diff --git a/java/com/google/gerrit/server/submit/TestHelperOp.java b/java/com/google/gerrit/server/submit/TestHelperOp.java
index b3a82de..d9304a0 100644
--- a/java/com/google/gerrit/server/submit/TestHelperOp.java
+++ b/java/com/google/gerrit/server/submit/TestHelperOp.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.submit;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.server.change.TestSubmitInput;
import com.google.gerrit.server.update.BatchUpdateOp;
@@ -22,11 +23,9 @@
import java.io.IOException;
import java.util.Queue;
import org.eclipse.jgit.lib.ObjectId;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
class TestHelperOp implements BatchUpdateOp {
- private static final Logger log = LoggerFactory.getLogger(TestHelperOp.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final Change.Id changeId;
private final TestSubmitInput input;
@@ -51,8 +50,8 @@
}
private void logDebug(String msg, Object... args) {
- if (log.isDebugEnabled()) {
- log.debug(submissionId + msg, args);
+ if (logger.atFine().isEnabled()) {
+ logger.atFine().logVarargs(submissionId + msg, args);
}
}
}
diff --git a/java/com/google/gerrit/server/tools/ToolsCatalog.java b/java/com/google/gerrit/server/tools/ToolsCatalog.java
index b616791..aaa366c 100644
--- a/java/com/google/gerrit/server/tools/ToolsCatalog.java
+++ b/java/com/google/gerrit/server/tools/ToolsCatalog.java
@@ -17,6 +17,7 @@
import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.common.base.Strings;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.Version;
import com.google.inject.Inject;
@@ -34,8 +35,6 @@
import java.util.TreeMap;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.util.RawParseUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Listing of all client side tools stored on this server.
@@ -45,7 +44,7 @@
*/
@Singleton
public class ToolsCatalog {
- private static final Logger log = LoggerFactory.getLogger(ToolsCatalog.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final SortedMap<String, Entry> toc;
@@ -127,7 +126,7 @@
}
return out.toByteArray();
} catch (Exception e) {
- log.debug("Cannot read " + path, e);
+ logger.atFine().withCause(e).log("Cannot read %s", path);
return null;
}
}
diff --git a/java/com/google/gerrit/server/update/BatchUpdate.java b/java/com/google/gerrit/server/update/BatchUpdate.java
index 549b134..e665b7a 100644
--- a/java/com/google/gerrit/server/update/BatchUpdate.java
+++ b/java/com/google/gerrit/server/update/BatchUpdate.java
@@ -25,6 +25,7 @@
import com.google.common.collect.ListMultimap;
import com.google.common.collect.MultimapBuilder;
import com.google.common.collect.Multiset;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.config.FactoryModule;
import com.google.gerrit.extensions.restapi.ResourceConflictException;
@@ -62,8 +63,6 @@
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.transport.PushCertificate;
import org.eclipse.jgit.transport.ReceiveCommand;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Helper for a set of updates that should be applied for a site.
@@ -88,7 +87,7 @@
* successfully before proceeding to the next phase.
*/
public abstract class BatchUpdate implements AutoCloseable {
- private static final Logger log = LoggerFactory.getLogger(BatchUpdate.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static Module module() {
return new FactoryModule() {
@@ -386,8 +385,8 @@
}
protected void logDebug(String msg, Throwable t) {
- if (requestId != null && log.isDebugEnabled()) {
- log.debug(requestId + msg, t);
+ if (requestId != null && logger.atFine().isEnabled()) {
+ logger.atFine().withCause(t).log(requestId + "%s", msg);
}
}
@@ -395,8 +394,8 @@
// Only log if there is a requestId assigned, since those are the
// expensive/complicated requests like MergeOp. Doing it every time would be
// noisy.
- if (requestId != null && log.isDebugEnabled()) {
- log.debug(requestId + msg, args);
+ if (requestId != null && logger.atFine().isEnabled()) {
+ logger.atFine().logVarargs(requestId + msg, args);
}
}
}
diff --git a/java/com/google/gerrit/server/update/ReviewDbBatchUpdate.java b/java/com/google/gerrit/server/update/ReviewDbBatchUpdate.java
index 9cdb006..97db475 100644
--- a/java/com/google/gerrit/server/update/ReviewDbBatchUpdate.java
+++ b/java/com/google/gerrit/server/update/ReviewDbBatchUpdate.java
@@ -23,6 +23,7 @@
import com.google.common.base.Stopwatch;
import com.google.common.base.Throwables;
import com.google.common.collect.ImmutableList;
+import com.google.common.flogger.FluentLogger;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
@@ -82,8 +83,6 @@
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.transport.ReceiveCommand;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* {@link BatchUpdate} implementation that supports mixed ReviewDb/NoteDb operations, depending on
@@ -102,7 +101,7 @@
* attempt to reimplement this logic. Use {@code BatchUpdate} if at all possible.
*/
public class ReviewDbBatchUpdate extends BatchUpdate {
- private static final Logger log = LoggerFactory.getLogger(ReviewDbBatchUpdate.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public interface AssistedFactory {
ReviewDbBatchUpdate create(
@@ -579,7 +578,7 @@
// rebuilt the next time it is needed.
//
// Always log even without RequestId.
- log.debug("Ignoring NoteDb update error after ReviewDb write", e);
+ logger.atFine().withCause(e).log("Ignoring NoteDb update error after ReviewDb write");
// Otherwise, we can't prove it's safe to ignore the error, either because some change had
// NOTE_DB primary, or a task failed before determining the primary storage.
@@ -732,7 +731,7 @@
// already written the NoteDbChangeState to ReviewDb, which means
// if the state is out of date it will be rebuilt the next time it
// is needed.
- log.debug("Ignoring NoteDb update error after ReviewDb write", ex);
+ logger.atFine().withCause(ex).log("Ignoring NoteDb update error after ReviewDb write");
}
}
} catch (Exception e) {
@@ -827,14 +826,14 @@
}
private void logDebug(String msg, Throwable t) {
- if (log.isDebugEnabled()) {
- ReviewDbBatchUpdate.this.logDebug("[" + taskId + "]" + msg, t);
+ if (logger.atFine().isEnabled()) {
+ ReviewDbBatchUpdate.this.logDebug("[" + taskId + "] " + msg, t);
}
}
private void logDebug(String msg, Object... args) {
- if (log.isDebugEnabled()) {
- ReviewDbBatchUpdate.this.logDebug("[" + taskId + "]" + msg, args);
+ if (logger.atFine().isEnabled()) {
+ ReviewDbBatchUpdate.this.logDebug("[" + taskId + "] " + msg, args);
}
}
}
diff --git a/java/com/google/gerrit/server/util/MagicBranch.java b/java/com/google/gerrit/server/util/MagicBranch.java
index e757d77..3ce87a4 100644
--- a/java/com/google/gerrit/server/util/MagicBranch.java
+++ b/java/com/google/gerrit/server/util/MagicBranch.java
@@ -14,17 +14,16 @@
package com.google.gerrit.server.util;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.Capable;
import com.google.gerrit.reviewdb.client.Project;
import java.io.IOException;
import java.util.Map;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public final class MagicBranch {
- private static final Logger log = LoggerFactory.getLogger(MagicBranch.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static final String NEW_CHANGE = "refs/for/";
// TODO(xchangcheng): remove after 'repo' supports private/wip changes.
@@ -95,16 +94,16 @@
blockingFors = repo.getRefDatabase().getRefs(branchName);
} catch (IOException err) {
String projName = project.getName();
- log.warn("Cannot scan refs in '" + projName + "'", err);
+ logger.atWarning().withCause(err).log("Cannot scan refs in '%s'", projName);
return new Capable("Server process cannot read '" + projName + "'");
}
if (!blockingFors.isEmpty()) {
String projName = project.getName();
- log.error(
- "Repository '"
- + projName
- + "' needs the following refs removed to receive changes: "
- + blockingFors.keySet());
+ logger
+ .atSevere()
+ .log(
+ "Repository '%s' needs the following refs removed to receive changes: %s",
+ projName, blockingFors.keySet());
return new Capable("One or more " + branchName + " names blocks change upload");
}
diff --git a/java/com/google/gerrit/server/util/SystemLog.java b/java/com/google/gerrit/server/util/SystemLog.java
index e1a0317..938cc25 100644
--- a/java/com/google/gerrit/server/util/SystemLog.java
+++ b/java/com/google/gerrit/server/util/SystemLog.java
@@ -17,6 +17,7 @@
import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.common.base.Strings;
+import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Die;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.config.SitePaths;
@@ -35,11 +36,10 @@
import org.apache.log4j.spi.ErrorHandler;
import org.apache.log4j.spi.LoggingEvent;
import org.eclipse.jgit.lib.Config;
-import org.slf4j.LoggerFactory;
@Singleton
public class SystemLog {
- private static final org.slf4j.Logger log = LoggerFactory.getLogger(SystemLog.class);
+ private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public static final String LOG4J_CONFIGURATION = "log4j.configuration";
@@ -90,8 +90,9 @@
if (appender != null) {
async.addAppender(appender);
} else {
- log.warn(
- "No appender with the name: " + name + " was found. " + name + " logging is disabled");
+ logger
+ .atWarning()
+ .log("No appender with the name: %s was found. %s logging is disabled", name, name);
}
}
async.activateOptions();