bitcoin-s/project/Deps.scala
Torkel Rogstad 31642aff44 Add configurable logging to data directory (#640)
* Add logging to data directory

In this commit we add the ability for the node, chain
and wallet projects (+ the server) to log to the users
data directory instead of whatever directory the
binaries was launched from. This is inherently a bit
more complicated than our previous setup, because
we need to read the user directory before we can create
loggers. As a result of this, some files/methods were
moved around, so the relevant app config could be
found in scope.

We also  introduce several logging categories that can be
tuned individually through user configuration. These logggers
are exposed both as traits that give a field `logger`, or
as methods that return the required logger.

* Add datadir configuration to AppConfig

In this commit we add support for AppConfig to pick up
the data directory configuration file. We also add
a section to the contributing guide on how to tune
logging levels.

* Pass data directories explicitly for configuration
2019-08-01 06:01:56 -05:00

232 lines
6.1 KiB
Scala

import sbt._
object Deps {
object V {
val bouncyCastle = "1.55"
val logback = "1.2.3"
val scalacheck = "1.14.0"
val scalaTest = "3.0.8"
val slf4j = "1.7.26"
val spray = "1.3.4"
val zeromq = "0.5.1"
val akkav = "10.1.9"
val akkaStreamv = "2.5.23"
val playv = "2.7.4"
val scodecV = "1.1.12"
val junitV = "0.11"
val nativeLoaderV = "2.3.4"
val typesafeConfigV = "1.3.4"
val ammoniteV = "1.6.7"
val asyncV = "0.9.7"
val postgresV = "9.4.1210"
val akkaActorV = akkaStreamv
val slickV = "3.3.2"
val sqliteV = "3.28.0"
val scalameterV = "0.17"
// Wallet/node/chain server deps
val uPickleV = "0.7.4"
val akkaHttpUpickleV = "1.27.0"
val uJsonV = uPickleV // Li Haoyi ecosystem does common versioning
val sourcecodeV = "0.1.7"
// CLI deps
val scoptV = "4.0.0-RC2"
val sttpV = "1.6.0"
}
object Compile {
val bouncycastle = "org.bouncycastle" % "bcprov-jdk15on" % V.bouncyCastle withSources () withJavadoc ()
val scodec = "org.scodec" %% "scodec-bits" % V.scodecV withSources () withJavadoc ()
val slf4j = "org.slf4j" % "slf4j-api" % V.slf4j % "provided" withSources () withJavadoc ()
val zeromq = "org.zeromq" % "jeromq" % V.zeromq withSources () withJavadoc ()
val akkaHttp = "com.typesafe.akka" %% "akka-http" % V.akkav withSources () withJavadoc ()
val akkaStream = "com.typesafe.akka" %% "akka-stream" % V.akkaStreamv withSources () withJavadoc ()
val akkaActor = "com.typesafe.akka" %% "akka-actor" % V.akkaStreamv withSources () withJavadoc ()
val playJson = "com.typesafe.play" %% "play-json" % V.playv withSources () withJavadoc ()
val typesafeConfig = "com.typesafe" % "config" % V.typesafeConfigV withSources () withJavadoc ()
val logback = "ch.qos.logback" % "logback-classic" % V.logback withSources () withJavadoc ()
//for loading secp256k1 natively
val nativeLoader = "org.scijava" % "native-lib-loader" % V.nativeLoaderV withSources () withJavadoc ()
val ammonite = "com.lihaoyi" %% "ammonite" % V.ammoniteV cross CrossVersion.full
//node deps
val slick = "com.typesafe.slick" %% "slick" % V.slickV withSources () withJavadoc ()
val slickHikari = "com.typesafe.slick" %% "slick-hikaricp" % V.slickV
val sqlite = "org.xerial" % "sqlite-jdbc" % V.sqliteV
val postgres = "org.postgresql" % "postgresql" % V.postgresV
val uJson = "com.lihaoyi" %% "ujson" % V.uJsonV
// serializing to and from JSON
val uPickle = "com.lihaoyi" %% "upickle" % V.uPickleV
// get access to reflection data at compile-time
val sourcecode = "com.lihaoyi" %% "sourcecode" % V.sourcecodeV
// make akka-http play nice with upickle
val akkaHttpUpickle = "de.heikoseeberger" %% "akka-http-upickle" % V.akkaHttpUpickleV
// parsing of CLI opts and args
val scopt = "com.github.scopt" %% "scopt" % V.scoptV
// HTTP client lib
val sttp = "com.softwaremill.sttp" %% "core" % V.sttpV
val scalacheck = "org.scalacheck" %% "scalacheck" % V.scalacheck withSources () withJavadoc ()
val scalaTest = "org.scalatest" %% "scalatest" % V.scalaTest withSources () withJavadoc ()
}
object Test {
val async = "org.scala-lang.modules" %% "scala-async" % V.asyncV % "test" withSources () withJavadoc ()
val junitInterface = "com.novocode" % "junit-interface" % V.junitV % "test" withSources () withJavadoc ()
val logback = Compile.logback % "test"
val scalacheck = Compile.scalacheck % "test"
val scalaTest = Compile.scalaTest % "test"
val spray = "io.spray" %% "spray-json" % V.spray % "test" withSources () withJavadoc ()
val akkaHttp = "com.typesafe.akka" %% "akka-http-testkit" % V.akkav % "test" withSources () withJavadoc ()
val akkaStream = "com.typesafe.akka" %% "akka-stream-testkit" % V.akkaStreamv % "test" withSources () withJavadoc ()
val playJson = Compile.playJson % "test"
val akkaTestkit = "com.typesafe.akka" %% "akka-testkit" % V.akkaActorV withSources () withJavadoc ()
val scalameter = "com.storm-enroute" %% "scalameter" % V.scalameterV % "test" withSources () withJavadoc ()
}
val chain = List(
Compile.logback
)
val chainTest = List()
val core = List(
Compile.bouncycastle,
Compile.scodec,
Compile.slf4j
)
val secp256k1jni = List(
Compile.nativeLoader,
Test.junitInterface
)
val coreTest = List(
Test.junitInterface,
Test.logback,
Test.scalaTest,
Test.spray,
Test.playJson
)
val bitcoindZmq = List(
Compile.zeromq,
Compile.slf4j,
Test.logback,
Test.scalacheck,
Test.scalaTest
)
val bitcoindRpc = List(
Compile.akkaHttp,
Compile.akkaStream,
Compile.playJson,
Compile.slf4j,
Compile.typesafeConfig
)
val bitcoindRpcTest = List(
Test.akkaHttp,
Test.akkaStream,
Test.logback,
Test.scalaTest,
Test.scalacheck,
Test.async
)
val bench = List(
"org.slf4j" % "slf4j-api" % V.slf4j withSources () withJavadoc (),
Compile.logback
)
val dbCommons = List(
Compile.slick,
Compile.sourcecode,
Compile.logback,
Compile.sqlite,
Compile.slickHikari
)
val cli = List(
Compile.sttp,
Compile.uPickle,
Compile.scopt
)
val picklers = List(
Compile.uPickle
)
val server = List(
Compile.akkaHttpUpickle,
Compile.uPickle,
Compile.logback,
Compile.akkaHttp
)
val eclairRpc = List(
Compile.akkaHttp,
Compile.akkaStream,
Compile.playJson,
Compile.slf4j
)
val eclairRpcTest = List(
Test.akkaHttp,
Test.akkaStream,
Test.logback,
Test.scalaTest,
Test.scalacheck
)
val node = List(
Compile.akkaActor,
Compile.logback,
Compile.slick,
Compile.slickHikari,
Compile.sqlite
)
val nodeTest = List(
Test.akkaTestkit,
Test.scalaTest
)
val testkit = List(
Compile.slf4j,
Compile.scalacheck,
Compile.scalaTest,
Test.akkaTestkit
)
val scripts = List(
Compile.ammonite,
Compile.logback
)
val wallet = List(
Compile.uJson,
Compile.logback
)
val walletTest = List(
Test.akkaTestkit
)
val docs = List(
Compile.logback,
Test.scalaTest,
Test.logback
)
}