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 @@ + + +