diff --git a/build.sbt b/build.sbt index 92b2ebe5..8eec3099 100644 --- a/build.sbt +++ b/build.sbt @@ -75,7 +75,8 @@ lazy val commonSettings = Seq( "com.beachape" %% "enumeratum" % "1.6.1", "joda-time" % "joda-time" % "2.10.6", "commons-io" % "commons-io" % "2.6", - "com.github.scopt" %% "scopt" % "4.0.0-RC2" + "com.github.scopt" %% "scopt" % "4.0.0-RC2", + "io.sentry" % "sentry-logback" % "1.7.30" ) ) @@ -88,6 +89,7 @@ lazy val pscryptoSettings = Seq( lazy val psloginPackSettings = Seq( packMain := Map("ps-login" -> "net.psforever.pslogin.PsLogin"), packArchivePrefix := "pslogin", + packJvmOpts := Map("ps-login" -> Seq("-Dstacktrace.app.packages=net.psforever")), packExtraClasspath := Map("ps-login" -> Seq("${PROG_HOME}/pscrypto-lib", "${PROG_HOME}/config")), packResourceDir += (baseDirectory.value / "pscrypto-lib" -> "pscrypto-lib"), packResourceDir += (baseDirectory.value / "config" -> "config") diff --git a/common/src/main/scala/net/psforever/util/Config.scala b/common/src/main/scala/net/psforever/util/Config.scala index d66007dc..b910f8d0 100644 --- a/common/src/main/scala/net/psforever/util/Config.scala +++ b/common/src/main/scala/net/psforever/util/Config.scala @@ -61,7 +61,8 @@ case class AppConfig( antiCheat: AntiCheatConfig, network: NetworkConfig, developer: DeveloperConfig, - kamon: KamonConfig + kamon: KamonConfig, + sentry: SentryConfig ) case class LoginConfig( @@ -123,3 +124,8 @@ case class NetSimConfig( case class KamonConfig( enable: Boolean ) + +case class SentryConfig( + enable: Boolean, + dsn: String +) diff --git a/config/logback.xml b/config/logback.xml index 4e81de88..cbf2e458 100644 --- a/config/logback.xml +++ b/config/logback.xml @@ -31,10 +31,17 @@ + + + WARN + + + - - - + + + + diff --git a/pslogin/src/main/scala/PsLogin.scala b/pslogin/src/main/scala/PsLogin.scala index 435004ce..1b47c991 100644 --- a/pslogin/src/main/scala/PsLogin.scala +++ b/pslogin/src/main/scala/PsLogin.scala @@ -2,7 +2,6 @@ package net.psforever.pslogin import java.net.InetAddress import java.util.Locale - import akka.{actor => classic} import akka.actor.typed.scaladsl.adapter._ import akka.routing.RandomPool @@ -26,6 +25,7 @@ import services.properties.PropertyOverrideManager import org.flywaydb.core.Flyway import java.nio.file.Paths import scopt.OParser +import io.sentry.Sentry import net.psforever.actors.session.SessionActor import net.psforever.login.psadmin.PsAdminActor @@ -89,6 +89,11 @@ object PsLogin { Kamon.init() } + if (Config.app.sentry.enable) { + logger.info(s"Enabling Sentry") + Sentry.init(Config.app.sentry.dsn) + } + /** Start up the main actor system. This "system" is the home for all actors running on this server */ implicit val system = classic.ActorSystem("PsLogin") Default(system)