From b86acb97730b51ed24f56d1e90fa3c1be7449576 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Fri, 25 Jun 2021 16:55:15 -0400 Subject: [PATCH] Increase log size for internal users. --- .../securesms/ApplicationContext.java | 3 ++- .../core/util/logging/PersistentLogger.java | 16 +++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java index 1cef1f118..b22f42de9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java +++ b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java @@ -71,6 +71,7 @@ import org.thoughtcrime.securesms.service.UpdateApkRefreshListener; import org.thoughtcrime.securesms.storage.StorageSyncHelper; import org.thoughtcrime.securesms.util.AppForegroundObserver; import org.thoughtcrime.securesms.util.AppStartup; +import org.thoughtcrime.securesms.util.ByteUnit; import org.thoughtcrime.securesms.util.DynamicTheme; import org.thoughtcrime.securesms.util.FeatureFlags; import org.thoughtcrime.securesms.util.SignalUncaughtExceptionHandler; @@ -237,7 +238,7 @@ public class ApplicationContext extends MultiDexApplication implements AppForegr } private void initializeLogging() { - persistentLogger = new PersistentLogger(this, LogSecretProvider.getOrCreateAttachmentSecret(this), BuildConfig.VERSION_NAME); + persistentLogger = new PersistentLogger(this, LogSecretProvider.getOrCreateAttachmentSecret(this), BuildConfig.VERSION_NAME, FeatureFlags.internalUser() ? 15 : 7, ByteUnit.KILOBYTES.toBytes(300)); org.signal.core.util.logging.Log.initialize(FeatureFlags::internalUser, new AndroidLogger(), persistentLogger); SignalProtocolLoggerProvider.setProvider(new CustomSignalProtocolLogger()); diff --git a/core-util/src/main/java/org/signal/core/util/logging/PersistentLogger.java b/core-util/src/main/java/org/signal/core/util/logging/PersistentLogger.java index fc25f9793..e7d042a9f 100644 --- a/core-util/src/main/java/org/signal/core/util/logging/PersistentLogger.java +++ b/core-util/src/main/java/org/signal/core/util/logging/PersistentLogger.java @@ -38,23 +38,25 @@ public final class PersistentLogger extends Log.Logger { private static final String LOG_DIRECTORY = "log"; private static final String FILENAME_PREFIX = "log-"; - private static final int MAX_LOG_FILES = 7; - private static final int MAX_LOG_SIZE = 300 * 1024; private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS zzz", Locale.US); private final Context context; private final Executor executor; private final byte[] secret; private final String logTag; + private final int maxLogFiles; + private final long maxLogFileSize; private LogFile.Writer writer; - private ThreadLocal cachedThreadString; + private final ThreadLocal cachedThreadString; - public PersistentLogger(@NonNull Context context, @NonNull byte[] secret, @NonNull String logTag) { + public PersistentLogger(@NonNull Context context, @NonNull byte[] secret, @NonNull String logTag, int maxLogFiles, long maxLogFileSize) { this.context = context.getApplicationContext(); this.secret = secret; this.logTag = logTag; + this.maxLogFiles = maxLogFiles; + this.maxLogFileSize = maxLogFileSize; this.cachedThreadString = new ThreadLocal<>(); this.executor = Executors.newSingleThreadExecutor(r -> { Thread thread = new Thread(r, "signal-PersistentLogger"); @@ -176,7 +178,7 @@ public final class PersistentLogger extends Log.Logger { return; } - if (writer.getLogSize() >= MAX_LOG_SIZE) { + if (writer.getLogSize() >= maxLogFileSize) { writer.close(); writer = new LogFile.Writer(secret, createNewLogFile()); trimLogFilesOverMax(); @@ -196,8 +198,8 @@ public final class PersistentLogger extends Log.Logger { private void trimLogFilesOverMax() throws IOException { File[] logs = getSortedLogFiles(); - if (logs.length > MAX_LOG_FILES) { - for (int i = MAX_LOG_FILES; i < logs.length; i++) { + if (logs.length > maxLogFiles) { + for (int i = maxLogFiles; i < logs.length; i++) { logs[i].delete(); } }