mirror of
https://github.com/corda/corda.git
synced 2025-02-21 09:51:57 +00:00
CORDA-3845: Update BC, log4j, slf4j (#6699)
* CORDA-3845: Update BC to 1.64 * CORDA-3845: Upgraded log4j to 2.12.1 * We can remove the use of Manifests from the logging package so that when _it_ logs it doesn't error on the fact the stream was already closed by the default Java logger. * Remove the logging package as a plugin * latest BC version * Remove old test * Fix some rebased changes to log file handling * Update slf4j too Co-authored-by: Ryan Fowler <fowlerrr@users.noreply.github.com> Co-authored-by: Adel El-Beik <adel.el-beik@r3.com>
This commit is contained in:
parent
b3d9d1291f
commit
c0d354e97a
@ -67,8 +67,8 @@ buildscript {
|
|||||||
ext.jersey_version = '2.25'
|
ext.jersey_version = '2.25'
|
||||||
ext.servlet_version = '4.0.1'
|
ext.servlet_version = '4.0.1'
|
||||||
ext.assertj_version = '3.12.2'
|
ext.assertj_version = '3.12.2'
|
||||||
ext.slf4j_version = '1.7.26'
|
ext.slf4j_version = '1.7.30'
|
||||||
ext.log4j_version = '2.11.2'
|
ext.log4j_version = '2.12.1'
|
||||||
ext.bouncycastle_version = constants.getProperty("bouncycastleVersion")
|
ext.bouncycastle_version = constants.getProperty("bouncycastleVersion")
|
||||||
ext.guava_version = constants.getProperty("guavaVersion")
|
ext.guava_version = constants.getProperty("guavaVersion")
|
||||||
ext.caffeine_version = constants.getProperty("caffeineVersion")
|
ext.caffeine_version = constants.getProperty("caffeineVersion")
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
package net.corda.common.logging
|
|
||||||
|
|
||||||
import org.apache.logging.log4j.core.Core
|
|
||||||
import org.apache.logging.log4j.core.LogEvent
|
|
||||||
import org.apache.logging.log4j.core.appender.rewrite.RewritePolicy
|
|
||||||
import org.apache.logging.log4j.core.config.plugins.Plugin
|
|
||||||
import org.apache.logging.log4j.core.config.plugins.PluginFactory
|
|
||||||
import org.apache.logging.log4j.core.impl.Log4jLogEvent
|
|
||||||
|
|
||||||
@Plugin(name = "ErrorCodeRewritePolicy", category = Core.CATEGORY_NAME, elementType = "rewritePolicy", printObject = false)
|
|
||||||
class ErrorCodeRewritePolicy : RewritePolicy {
|
|
||||||
override fun rewrite(source: LogEvent): LogEvent? {
|
|
||||||
val newMessage = source.message?.withErrorCodeFor(source.thrown, source.level)
|
|
||||||
return if (newMessage == source.message) {
|
|
||||||
source
|
|
||||||
} else {
|
|
||||||
Log4jLogEvent.Builder(source).setMessage(newMessage).build()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
@JvmStatic
|
|
||||||
@PluginFactory
|
|
||||||
fun createPolicy(): ErrorCodeRewritePolicy {
|
|
||||||
return ErrorCodeRewritePolicy()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Configuration status="info" packages="net.corda.common.logging" shutdownHook="disable">
|
<Configuration status="info" shutdownHook="disable">
|
||||||
|
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="log-path">${sys:log-path:-logs}</Property>
|
<Property name="log-path">${sys:log-path:-logs}</Property>
|
||||||
@ -172,21 +172,17 @@
|
|||||||
|
|
||||||
<Rewrite name="Console-ErrorCode-Selector">
|
<Rewrite name="Console-ErrorCode-Selector">
|
||||||
<AppenderRef ref="Console-Selector"/>
|
<AppenderRef ref="Console-Selector"/>
|
||||||
<ErrorCodeRewritePolicy/>
|
|
||||||
</Rewrite>
|
</Rewrite>
|
||||||
|
|
||||||
<Rewrite name="Console-ErrorCode-Appender-Println">
|
<Rewrite name="Console-ErrorCode-Appender-Println">
|
||||||
<AppenderRef ref="Console-Appender-Println"/>
|
<AppenderRef ref="Console-Appender-Println"/>
|
||||||
<ErrorCodeRewritePolicy/>
|
|
||||||
</Rewrite>
|
</Rewrite>
|
||||||
|
|
||||||
<Rewrite name="RollingFile-ErrorCode-Appender">
|
<Rewrite name="RollingFile-ErrorCode-Appender">
|
||||||
<AppenderRef ref="RollingFile-Appender"/>
|
<AppenderRef ref="RollingFile-Appender"/>
|
||||||
<ErrorCodeRewritePolicy/>
|
|
||||||
</Rewrite>
|
</Rewrite>
|
||||||
<Rewrite name="Diagnostic-RollingFile-ErrorCode-Appender">
|
<Rewrite name="Diagnostic-RollingFile-ErrorCode-Appender">
|
||||||
<AppenderRef ref="Diagnostic-RollingFile-Appender"/>
|
<AppenderRef ref="Diagnostic-RollingFile-Appender"/>
|
||||||
<ErrorCodeRewritePolicy/>
|
|
||||||
</Rewrite>
|
</Rewrite>
|
||||||
</Appenders>
|
</Appenders>
|
||||||
|
|
||||||
|
@ -22,8 +22,8 @@ quasarVersion11=0.8.0
|
|||||||
# Specify a classifier for Java 11 built artifacts
|
# Specify a classifier for Java 11 built artifacts
|
||||||
jdkClassifier11=jdk11
|
jdkClassifier11=jdk11
|
||||||
proguardVersion=6.1.1
|
proguardVersion=6.1.1
|
||||||
bouncycastleVersion=1.61
|
bouncycastleVersion=1.66
|
||||||
classgraphVersion=4.8.41
|
classgraphVersion=4.8.78
|
||||||
disruptorVersion=3.4.2
|
disruptorVersion=3.4.2
|
||||||
typesafeConfigVersion=1.3.4
|
typesafeConfigVersion=1.3.4
|
||||||
jsr305Version=3.0.2
|
jsr305Version=3.0.2
|
||||||
|
@ -1,62 +0,0 @@
|
|||||||
package net.corda.node.logging
|
|
||||||
|
|
||||||
import net.corda.core.flows.FlowException
|
|
||||||
import net.corda.core.flows.FlowLogic
|
|
||||||
import net.corda.core.flows.InitiatingFlow
|
|
||||||
import net.corda.core.flows.StartableByRPC
|
|
||||||
import net.corda.core.internal.div
|
|
||||||
import net.corda.core.messaging.FlowHandle
|
|
||||||
import net.corda.core.messaging.startFlow
|
|
||||||
import net.corda.core.utilities.getOrThrow
|
|
||||||
import net.corda.testing.driver.DriverParameters
|
|
||||||
import net.corda.testing.driver.NodeHandle
|
|
||||||
import net.corda.testing.driver.driver
|
|
||||||
import org.assertj.core.api.Assertions.assertThat
|
|
||||||
import org.junit.Test
|
|
||||||
import java.io.File
|
|
||||||
|
|
||||||
class ErrorCodeLoggingTests {
|
|
||||||
@Test
|
|
||||||
fun `log entries with a throwable and ERROR or WARN get an error code appended`() {
|
|
||||||
driver(DriverParameters(notarySpecs = emptyList())) {
|
|
||||||
val node = startNode(startInSameProcess = false).getOrThrow()
|
|
||||||
node.rpc.startFlow(::MyFlow).waitForCompletion()
|
|
||||||
val logFile = node.logFile()
|
|
||||||
|
|
||||||
val linesWithErrorCode = logFile.useLines { lines -> lines.filter { line -> line.contains("[errorCode=") }.filter { line -> line.contains("moreInformationAt=https://errors.corda.net/") }.toList() }
|
|
||||||
|
|
||||||
assertThat(linesWithErrorCode).isNotEmpty
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is used to detect broken logging which can be caused by loggers being initialized
|
|
||||||
// before the initLogging() call is made
|
|
||||||
@Test
|
|
||||||
fun `When logging is set to error level, there are no other levels logged after node startup`() {
|
|
||||||
driver(DriverParameters(notarySpecs = emptyList())) {
|
|
||||||
val node = startNode(startInSameProcess = false, logLevelOverride = "ERROR").getOrThrow()
|
|
||||||
node.rpc.startFlow(::MyFlow).waitForCompletion()
|
|
||||||
val logFile = node.logFile()
|
|
||||||
// An exception thrown in a flow will log at the "INFO" level.
|
|
||||||
assertThat(logFile.length()).isEqualTo(0)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@StartableByRPC
|
|
||||||
@InitiatingFlow
|
|
||||||
class MyFlow : FlowLogic<String>() {
|
|
||||||
override fun call(): String {
|
|
||||||
throw IllegalArgumentException("Mwahahahah")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun FlowHandle<*>.waitForCompletion() {
|
|
||||||
try {
|
|
||||||
returnValue.getOrThrow()
|
|
||||||
} catch (e: Exception) {
|
|
||||||
// This is expected to throw an exception, using getOrThrow() just to wait until done.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun NodeHandle.logFile(): File = (baseDirectory / "logs").toFile().walk().filter { it.name.startsWith("node-") && it.extension == "log" }.single()
|
|
@ -26,6 +26,7 @@ import net.corda.testing.node.internal.genericDriver
|
|||||||
import net.corda.testing.node.internal.getTimestampAsDirectoryName
|
import net.corda.testing.node.internal.getTimestampAsDirectoryName
|
||||||
import net.corda.testing.node.internal.newContext
|
import net.corda.testing.node.internal.newContext
|
||||||
import rx.Observable
|
import rx.Observable
|
||||||
|
import java.io.File
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
import java.nio.file.Paths
|
import java.nio.file.Paths
|
||||||
import java.util.concurrent.atomic.AtomicInteger
|
import java.util.concurrent.atomic.AtomicInteger
|
||||||
@ -66,6 +67,8 @@ interface NodeHandle : AutoCloseable {
|
|||||||
fun stop()
|
fun stop()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun NodeHandle.logFile(): File = (baseDirectory / "logs").toFile().walk().filter { it.name.startsWith("node-") && it.extension == "log" }.single()
|
||||||
|
|
||||||
/** Interface which represents an out of process node and exposes its process handle. **/
|
/** Interface which represents an out of process node and exposes its process handle. **/
|
||||||
@DoNotImplement
|
@DoNotImplement
|
||||||
interface OutOfProcess : NodeHandle {
|
interface OutOfProcess : NodeHandle {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Configuration status="info" packages="net.corda.common.logging">
|
<Configuration status="info">
|
||||||
|
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="log-path">${sys:log-path:-logs}</Property>
|
<Property name="log-path">${sys:log-path:-logs}</Property>
|
||||||
@ -63,17 +63,14 @@
|
|||||||
|
|
||||||
<Rewrite name="Console-ErrorCode-Appender">
|
<Rewrite name="Console-ErrorCode-Appender">
|
||||||
<AppenderRef ref="Console-Appender"/>
|
<AppenderRef ref="Console-Appender"/>
|
||||||
<ErrorCodeRewritePolicy/>
|
|
||||||
</Rewrite>
|
</Rewrite>
|
||||||
|
|
||||||
<Rewrite name="Console-ErrorCode-Appender-Println">
|
<Rewrite name="Console-ErrorCode-Appender-Println">
|
||||||
<AppenderRef ref="Console-Appender-Println"/>
|
<AppenderRef ref="Console-Appender-Println"/>
|
||||||
<ErrorCodeRewritePolicy/>
|
|
||||||
</Rewrite>
|
</Rewrite>
|
||||||
|
|
||||||
<Rewrite name="RollingFile-ErrorCode-Appender">
|
<Rewrite name="RollingFile-ErrorCode-Appender">
|
||||||
<AppenderRef ref="RollingFile-Appender"/>
|
<AppenderRef ref="RollingFile-Appender"/>
|
||||||
<ErrorCodeRewritePolicy/>
|
|
||||||
</Rewrite>
|
</Rewrite>
|
||||||
</Appenders>
|
</Appenders>
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Configuration status="info" packages="net.corda.common.logging">
|
<Configuration status="info">
|
||||||
|
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="log-path">${sys:log-path:-logs}</Property>
|
<Property name="log-path">${sys:log-path:-logs}</Property>
|
||||||
@ -65,17 +65,14 @@
|
|||||||
|
|
||||||
<Rewrite name="Console-ErrorCode-Appender">
|
<Rewrite name="Console-ErrorCode-Appender">
|
||||||
<AppenderRef ref="Console-Appender"/>
|
<AppenderRef ref="Console-Appender"/>
|
||||||
<ErrorCodeRewritePolicy/>
|
|
||||||
</Rewrite>
|
</Rewrite>
|
||||||
|
|
||||||
<Rewrite name="Console-ErrorCode-Appender-Println">
|
<Rewrite name="Console-ErrorCode-Appender-Println">
|
||||||
<AppenderRef ref="Console-Appender-Println"/>
|
<AppenderRef ref="Console-Appender-Println"/>
|
||||||
<ErrorCodeRewritePolicy/>
|
|
||||||
</Rewrite>
|
</Rewrite>
|
||||||
|
|
||||||
<Rewrite name="RollingFile-ErrorCode-Appender">
|
<Rewrite name="RollingFile-ErrorCode-Appender">
|
||||||
<AppenderRef ref="RollingFile-Appender"/>
|
<AppenderRef ref="RollingFile-Appender"/>
|
||||||
<ErrorCodeRewritePolicy/>
|
|
||||||
</Rewrite>
|
</Rewrite>
|
||||||
</Appenders>
|
</Appenders>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user