// // This is a full example showing the two lines you need to add to your Gradle file to enable New Relic Logs in Context. // Most of this file is stock - the only changes needed shown below, flagged with comments. // description = 'Ad Service' buildscript { repositories { mavenCentral() mavenLocal() maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.3' classpath "gradle.plugin.com.github.sherter.google-java-format:google-java-format-gradle-plugin:0.7.1" } } apply plugin: 'idea' apply plugin: 'java' apply plugin: 'com.google.protobuf' apply plugin: 'com.github.sherter.google-java-format' repositories { mavenCentral() mavenLocal() } configurations { newrelic } group = "adservice" version = "0.1.0-SNAPSHOT" def opencensusVersion = "0.18.0" def grpcVersion = "1.17.0" def jacksonVersion = "2.9.6" tasks.withType(JavaCompile) { sourceCompatibility = '1.8' targetCompatibility = '1.8' } ext { speed = project.hasProperty('speed') ? project.getProperty('speed') : false offlineCompile = new File("$buildDir/output/lib") newrelicVersion = '5.8.0' } dependencies { newrelic "com.newrelic.agent.java:newrelic-agent:${newrelicVersion}" //New Relic Logs in Context - Add this line for Log4J support. compile("com.newrelic.logging:log4j2:1.0-rc2") if (speed) { compile fileTree(dir: offlineCompile, include: '*.jar') } else { compile "com.google.api.grpc:proto-google-common-protos:1.12.0", "io.opencensus:opencensus-api:${opencensusVersion}", "io.opencensus:opencensus-contrib-grpc-util:${opencensusVersion}", "io.opencensus:opencensus-exporter-trace-jaeger:${opencensusVersion}", "io.opencensus:opencensus-exporter-stats-stackdriver:${opencensusVersion}", "io.opencensus:opencensus-exporter-trace-stackdriver:${opencensusVersion}", "io.opencensus:opencensus-exporter-trace-logging:${opencensusVersion}", "io.grpc:grpc-protobuf:${grpcVersion}", "io.grpc:grpc-stub:${grpcVersion}", "io.grpc:grpc-netty:${grpcVersion}", "io.grpc:grpc-services:${grpcVersion}", "org.apache.logging.log4j:log4j-core:2.11.1" runtime "com.fasterxml.jackson.core:jackson-core:${jacksonVersion}", "com.fasterxml.jackson.core:jackson-databind:${jacksonVersion}", "io.opencensus:opencensus-contrib-log-correlation-log4j2:${opencensusVersion}", "io.opencensus:opencensus-impl:${opencensusVersion}", "io.netty:netty-tcnative-boringssl-static:2.0.8.Final" } } protobuf { protoc { artifact = 'com.google.protobuf:protoc:3.5.1-1' } plugins { grpc { artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}" } } generateProtoTasks { all()*.plugins { grpc {} } ofSourceSet('main') } } googleJavaFormat { toolVersion '1.7' } // Inform IDEs like IntelliJ IDEA, Eclipse or NetBeans about the generated code. sourceSets { main { java { srcDirs 'hipstershop' srcDirs 'build/generated/source/proto/main/java/hipstershop' srcDirs 'build/generated/source/proto/main/grpc/hipstershop' } } } // Provide convenience executables for trying out the examples. apply plugin: 'application' startScripts.enabled = false // This to cache dependencies during Docker image building. First build will take time. // Subsequent build will be incremental. task downloadRepos(type: Copy) { from configurations.compile into offlineCompile from configurations.runtime into offlineCompile } task adService(type: CreateStartScripts) { mainClassName = 'hipstershop.AdService' applicationName = 'AdService' outputDir = new File(project.buildDir, 'tmp') classpath = jar.outputs.files + project.configurations.runtime // New Relic Logs in Context - set log4j2.messageFactory. defaultJvmOpts = ["-javaagent:/app/build/libs/newrelic.jar","-Dnewrelic.config.file=/app/newrelic/newrelic.yml","-Dnewrelic.config.app_name=adservice-server","-Dlog4j2.messageFactory=com.newrelic.logging.log4j2.NewRelicMessageFactory"] } task adServiceClient(type: CreateStartScripts) { mainClassName = 'hipstershop.AdServiceClient' applicationName = 'AdServiceClient' outputDir = new File(project.buildDir, 'tmp') classpath = jar.outputs.files + project.configurations.runtime // New Relic Logs in Context - set log4j2.messageFactory. defaultJvmOpts = ["-javaagent:/app/build/libs/newrelic.jar","-Dnewrelic.config.file=/app/newrelic/newrelic.yml","-Dnewrelic.config.app_name=adservice-client","-Dlog4j2.messageFactory=com.newrelic.logging.log4j2.NewRelicMessageFactory"] } task copyAgent(type: Copy) { from { configurations.newrelic } into "$buildDir/libs" from { "newrelic/newrelic.yml "} into "$buildDir/libs" rename ("newrelic-agent-${newrelicVersion}.jar", 'newrelic.jar') } applicationDistribution.into('bin') { from(adService) from(adServiceClient) fileMode = 0755 } adService.dependsOn copyAgent adServiceClient.dependsOn copyAgent