diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/Main.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/Main.kt
index 1adf2da6931726ea72caa6a3efe5fbf4d4387c90..7435413515bbe7ad25a7e9b8ef055126abb0d895 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/Main.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/Main.kt
@@ -35,6 +35,7 @@ import org.briarproject.briar.desktop.utils.FileUtils
 import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n
 import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18nF
 import org.briarproject.briar.desktop.utils.KLoggerUtils.i
+import org.briarproject.briar.desktop.utils.KLoggerUtils.w
 import org.briarproject.briar.desktop.utils.LogUtils
 import org.jetbrains.annotations.NonNls
 import java.io.File.separator
@@ -119,6 +120,10 @@ private class Main : CliktCommand(
         BrambleCoreEagerSingletons.Helper.injectEagerSingletons(app)
         BriarCoreEagerSingletons.Helper.injectEagerSingletons(app)
 
+        Thread.setDefaultUncaughtExceptionHandler { t, e ->
+            LOG.w(e) { "Uncaught exception in thread ${t.name}" }
+        }
+
         application {
             app.getBriarUi().start {
                 app.getBriarUi().stop()
diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/KLoggerUtils.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/KLoggerUtils.kt
index 6fab94de0ff8d7fec5a1e15af2314abd43934fca..070c64bc0bb06b2eb16af0c01eae42055cd36050 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/KLoggerUtils.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/KLoggerUtils.kt
@@ -55,18 +55,18 @@ object KLoggerUtils {
     }
 
     fun KLogger.d(t: Throwable?, @NonNls msg: () -> Any?) {
-        trace(t, msg)
+        debug(t, msg)
     }
 
     fun KLogger.i(t: Throwable?, @NonNls msg: () -> Any?) {
-        trace(t, msg)
+        info(t, msg)
     }
 
     fun KLogger.w(t: Throwable?, @NonNls msg: () -> Any?) {
-        trace(t, msg)
+        warn(t, msg)
     }
 
     fun KLogger.e(t: Throwable?, @NonNls msg: () -> Any?) {
-        trace(t, msg)
+        error(t, msg)
     }
 }
diff --git a/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/RunWithMultipleTemporaryAccounts.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/RunWithMultipleTemporaryAccounts.kt
index 7f79c397bbcfbddbce199dfdd2801ccdf41f03a4..bd3e2c4f2c0761010e5fd2ace4f46238669c59b1 100644
--- a/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/RunWithMultipleTemporaryAccounts.kt
+++ b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/RunWithMultipleTemporaryAccounts.kt
@@ -30,6 +30,7 @@ import org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_SOCKS_PORT
 import org.briarproject.briar.BriarCoreEagerSingletons
 import org.briarproject.briar.desktop.TestUtils.getDataDir
 import org.briarproject.briar.desktop.utils.KLoggerUtils.i
+import org.briarproject.briar.desktop.utils.KLoggerUtils.w
 import org.briarproject.briar.desktop.utils.LogUtils
 import org.jetbrains.annotations.NonNls
 import java.util.logging.Level.ALL
@@ -94,6 +95,10 @@ internal class RunWithMultipleTemporaryAccounts(
         BrambleCoreEagerSingletons.Helper.injectEagerSingletons(app)
         BriarCoreEagerSingletons.Helper.injectEagerSingletons(app)
 
+        Thread.setDefaultUncaughtExceptionHandler { t, e ->
+            LOG.w(e) { "Uncaught exception in thread ${t.name}" }
+        }
+
         val accountManager = app.getAccountManager()
 
         @NonNls
diff --git a/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/RunWithTemporaryAccount.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/RunWithTemporaryAccount.kt
index 7ed82ca1b0bc41ee3dd30d0cd706bc6f8a7b246a..e857db65d0052715628904ec8ee22913c3a9894b 100644
--- a/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/RunWithTemporaryAccount.kt
+++ b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/RunWithTemporaryAccount.kt
@@ -27,6 +27,7 @@ import org.briarproject.bramble.BrambleCoreEagerSingletons
 import org.briarproject.briar.BriarCoreEagerSingletons
 import org.briarproject.briar.desktop.TestUtils.getDataDir
 import org.briarproject.briar.desktop.utils.KLoggerUtils.i
+import org.briarproject.briar.desktop.utils.KLoggerUtils.w
 import org.briarproject.briar.desktop.utils.LogUtils
 import org.jetbrains.annotations.NonNls
 import java.nio.file.Files
@@ -72,6 +73,10 @@ internal class RunWithTemporaryAccount(
         BrambleCoreEagerSingletons.Helper.injectEagerSingletons(app)
         BriarCoreEagerSingletons.Helper.injectEagerSingletons(app)
 
+        Thread.setDefaultUncaughtExceptionHandler { t, e ->
+            LOG.w(e) { "Uncaught exception in thread ${t.name}" }
+        }
+
         val lifecycleManager = app.getLifecycleManager()
         val accountManager = app.getAccountManager()