diff --git a/config/dev/log4j2.xml b/config/dev/log4j2.xml
index becdc35200..7edcbb5aaa 100644
--- a/config/dev/log4j2.xml
+++ b/config/dev/log4j2.xml
@@ -70,5 +70,9 @@
+
+
+
+
diff --git a/docs/source/node-database.rst b/docs/source/node-database.rst
index 92f0a8fadd..314212fe05 100644
--- a/docs/source/node-database.rst
+++ b/docs/source/node-database.rst
@@ -20,7 +20,7 @@ stored states, transactions and attachments as follows:
``Database connection URL is : jdbc:h2:tcp://10.18.0.150:56736/node``
-* Paste this string into the JDBC URL field and click ``Connect``, using the default username and password.
+* Paste this string into the JDBC URL field and click ``Connect``, using the default username (``sa``) and no password.
You will be presented with a web interface that shows the contents of your node's storage and vault, and provides an
interface for you to query them using SQL.
diff --git a/node/build.gradle b/node/build.gradle
index dd11bc270a..c37012442e 100644
--- a/node/build.gradle
+++ b/node/build.gradle
@@ -223,8 +223,8 @@ dependencies {
throw new GradleException('Unsupported DB provider: ' + DB_PROVIDER)
}
- // Jolokia JVM monitoring agent
- runtime "org.jolokia:jolokia-jvm:${jolokia_version}:agent"
+ // Jolokia JVM monitoring agent, required to push logs through slf4j
+ compile "org.jolokia:jolokia-jvm:${jolokia_version}:agent"
}
task integrationTest(type: Test) {
diff --git a/node/src/main/kotlin/net/corda/node/ArgsParser.kt b/node/src/main/kotlin/net/corda/node/ArgsParser.kt
index 623208385c..1c3a2b8857 100644
--- a/node/src/main/kotlin/net/corda/node/ArgsParser.kt
+++ b/node/src/main/kotlin/net/corda/node/ArgsParser.kt
@@ -78,7 +78,7 @@ class ArgsParser {
val networkRootTrustStorePassword = optionSet.valueOf(networkRootTrustStorePasswordArg)
val registrationConfig = if (isRegistration) {
- requireNotNull(networkRootTrustStorePassword) { "Network root trust store password must be provided in registration mode." }
+ requireNotNull(networkRootTrustStorePassword) { "Network root trust store password must be provided in registration mode using --network-root-truststore-password." }
require(networkRootTrustStorePath.exists()) { "Network root trust store path: '$networkRootTrustStorePath' doesn't exist" }
NodeRegistrationOption(networkRootTrustStorePath, networkRootTrustStorePassword)
} else {
@@ -119,7 +119,7 @@ data class CmdLineOptions(val baseDirectory: Path,
mapOf("noLocalShell" to this.noLocalShell)
)).parseAsNodeConfiguration()
if (nodeRegistrationConfig != null) {
- requireNotNull(config.compatibilityZoneURL) { "Compatibility Zone Url must be provided in registration mode." }
+ requireNotNull(config.compatibilityZoneURL) { "Compatibility Zone URL (compatibilityZoneURL) must be present in node configuration file in registration mode." }
}
return config
}
diff --git a/node/src/main/kotlin/net/corda/node/JolokiaSlf4jAdapter.kt b/node/src/main/kotlin/net/corda/node/JolokiaSlf4jAdapter.kt
new file mode 100644
index 0000000000..8803a9f9f7
--- /dev/null
+++ b/node/src/main/kotlin/net/corda/node/JolokiaSlf4jAdapter.kt
@@ -0,0 +1,35 @@
+package net.corda.node
+
+import org.jolokia.util.LogHandler
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
+
+class JolokiaSlf4jAdapter : LogHandler {
+ companion object {
+ val log: Logger = LoggerFactory.getLogger("org.jolokia")
+ }
+
+ override fun error(message: String?, t: Throwable?) {
+ if (message != null) {
+ if (t != null) {
+ log.error(message, t)
+ } else {
+ log.error(message)
+ }
+ } else if (t != null) {
+ log.error("Exception without a comment", t)
+ }
+ }
+
+ override fun debug(message: String?) {
+ if (message != null) {
+ log.debug(message)
+ }
+ }
+
+ override fun info(message: String?) {
+ if (message != null) {
+ log.info(message)
+ }
+ }
+}
diff --git a/testing/test-common/src/main/resources/log4j2-test.xml b/testing/test-common/src/main/resources/log4j2-test.xml
index f928fd690f..6e8070e750 100644
--- a/testing/test-common/src/main/resources/log4j2-test.xml
+++ b/testing/test-common/src/main/resources/log4j2-test.xml
@@ -35,5 +35,8 @@
+
+
+