mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-20 02:58:45 +00:00
Make our loggers singletons.
This commit is contained in:
committed by
Cody Henthorne
parent
ec7a2f734a
commit
26df14124b
@@ -26,7 +26,7 @@ class SignalInstrumentationApplicationContext : ApplicationContext() {
|
||||
}
|
||||
|
||||
override fun initializeLogging() {
|
||||
Log.initialize({ true }, AndroidLogger(), PersistentLogger(this), inMemoryLogger)
|
||||
Log.initialize({ true }, AndroidLogger, PersistentLogger.getInstance(this), inMemoryLogger)
|
||||
|
||||
SignalProtocolLoggerProvider.setProvider(CustomSignalProtocolLogger())
|
||||
|
||||
|
||||
@@ -334,7 +334,7 @@ public class ApplicationContext extends Application implements AppForegroundObse
|
||||
|
||||
@VisibleForTesting
|
||||
protected void initializeLogging() {
|
||||
Log.initialize(RemoteConfig::internalUser, new AndroidLogger(), new PersistentLogger(this));
|
||||
Log.initialize(RemoteConfig::internalUser, AndroidLogger.INSTANCE, PersistentLogger.getInstance(this));
|
||||
|
||||
SignalProtocolLoggerProvider.setProvider(new CustomSignalProtocolLogger());
|
||||
SignalProtocolLoggerProvider.initializeLogging(BuildConfig.LIBSIGNAL_LOG_LEVEL);
|
||||
|
||||
@@ -25,9 +25,7 @@ import java.util.Locale
|
||||
* - Main thread creates a [LogRequest] object and puts it in a queue
|
||||
* - The [WriteThread] constantly pulls from that queue, formats the logs, and writes them to the database.
|
||||
*/
|
||||
class PersistentLogger(
|
||||
application: Application
|
||||
) : Log.Logger() {
|
||||
class PersistentLogger private constructor(application: Application) : Log.Logger() {
|
||||
|
||||
companion object {
|
||||
private const val LOG_V = "V"
|
||||
@@ -35,6 +33,22 @@ class PersistentLogger(
|
||||
private const val LOG_I = "I"
|
||||
private const val LOG_W = "W"
|
||||
private const val LOG_E = "E"
|
||||
|
||||
@Volatile
|
||||
private var instance: PersistentLogger? = null
|
||||
|
||||
@JvmStatic
|
||||
fun getInstance(application: Application): PersistentLogger {
|
||||
if (instance == null) {
|
||||
synchronized(PersistentLogger::class.java) {
|
||||
if (instance == null) {
|
||||
instance = PersistentLogger(application)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return requireNotNull(instance)
|
||||
}
|
||||
}
|
||||
|
||||
private val logEntries = LogRequests()
|
||||
|
||||
@@ -78,7 +78,7 @@ class AvatarProvider : BaseContentProvider() {
|
||||
|
||||
SignalStore.init(application)
|
||||
|
||||
Log.initialize(RemoteConfig::internalUser, AndroidLogger(), PersistentLogger(application))
|
||||
Log.initialize(RemoteConfig::internalUser, AndroidLogger, PersistentLogger.getInstance(application))
|
||||
|
||||
if (!AppDependencies.isInitialized) {
|
||||
Log.i(TAG, "Initializing AppDependencies.")
|
||||
|
||||
@@ -87,7 +87,7 @@ class SpinnerApplicationContext : ApplicationContext() {
|
||||
)
|
||||
)
|
||||
|
||||
Log.initialize({ RemoteConfig.internalUser }, AndroidLogger(), PersistentLogger(this), SpinnerLogger())
|
||||
Log.initialize({ RemoteConfig.internalUser }, AndroidLogger, PersistentLogger.getInstance(this), SpinnerLogger)
|
||||
|
||||
DatabaseMonitor.initialize(object : QueryMonitor {
|
||||
override fun onSql(sql: String, args: Array<Any>?) {
|
||||
|
||||
@@ -6,7 +6,7 @@ import java.util.concurrent.Executor
|
||||
import java.util.concurrent.Executors
|
||||
|
||||
@SuppressLint("LogNotSignal")
|
||||
class AndroidLogger : Log.Logger() {
|
||||
object AndroidLogger : Log.Logger() {
|
||||
|
||||
private val serialExecutor: Executor = Executors.newSingleThreadExecutor { Thread(it, "signal-logcat") }
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ class QrMainActivity : AppCompatActivity() {
|
||||
@SuppressLint("NewApi", "SetTextI18n")
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
Log.initialize(
|
||||
AndroidLogger(),
|
||||
AndroidLogger,
|
||||
object : Log.Logger() {
|
||||
override fun v(tag: String, message: String?, t: Throwable?, keepLonger: Boolean) {
|
||||
printlnFormatted('v', tag, message, t)
|
||||
|
||||
@@ -33,7 +33,7 @@ class MainActivity : AppCompatActivity() {
|
||||
emptyMap()
|
||||
)
|
||||
|
||||
Log.initialize(AndroidLogger(), SpinnerLogger())
|
||||
Log.initialize(AndroidLogger, SpinnerLogger)
|
||||
|
||||
object : Thread() {
|
||||
override fun run() {
|
||||
|
||||
@@ -9,7 +9,7 @@ import android.os.Looper
|
||||
import android.util.Log
|
||||
import org.signal.core.util.logging.Log.Logger
|
||||
|
||||
class SpinnerLogger : Logger() {
|
||||
object SpinnerLogger : Logger() {
|
||||
|
||||
private val cachedThreadString: ThreadLocal<String> = ThreadLocal()
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ class MainActivity : AppCompatActivity() {
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
Log.initialize(AndroidLogger())
|
||||
Log.initialize(AndroidLogger)
|
||||
|
||||
val startPlaybackScreen = { saveChoice: Boolean -> proceed(Screen.TEST_PLAYBACK, saveChoice) }
|
||||
val startTranscodeScreen = { saveChoice: Boolean -> proceed(Screen.TEST_TRANSCODE, saveChoice) }
|
||||
|
||||
Reference in New Issue
Block a user