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