I am working on Cucumber TestNg Gradle automation project. As I am new to Gradle and not able to figure the issue though I have put in appropriate log4j dependencies in build.gradle file. Can somebody look into this issue and provide the solutions or advise me on what went wrong due to which logs are not written to log file called "ApplicationLogs.log"
Below is my project structure
Below is my Log4j.properties file contents
log4j.rootLogger=INFO, RFILE,STDOUT
# Console Appender
log4j.appender.name=STDOUT
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.Target=System.out
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p] [%c{1}] - [%M] %m%n
# Rolling File Appender
log4j.appender.name=RFILE
log4j.appender.RFILE=org.apache.log4j.RollingFileAppender
log4j.appender.RFILE.File=./Automation_Report/logs/ApplicationLogs.log
log4j.appender.RFILE.threshold=INFO
log4j.appender.RFILE.maxFileSize=25MB
log4j.appender.RFILE.maxBackupIndex=100
log4j.appender.RFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.RFILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p] [%c{1}] - [%M] %m%n
Below is my build.gradle File Contents
plugins {
id 'java'
id 'maven-publish'
id 'java-library'
id 'java-gradle-plugin'
id 'application'
}
apply plugin: 'java'
repositories {
mavenCentral()
jcenter()
}
task deleteGraphicsAssets(type: Delete) {
delete "build"
}
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
dependencies {
// This dependency is exported to consumers, that is to say found on their compile classpath.
api 'org.apache.commons:commons-math3:3.6.1'
// This dependency is used internally, and not exposed to consumers on their own compile classpath.
implementation 'com.google.guava:guava:28.2-jre'
implementation gradleApi()
//Cucumber
testImplementation 'io.cucumber:cucumber-java:4.8.0'
//compile group: 'io.cucumber', name: 'cucumber-jvm', version: '4.8.0', ext: 'pom'
testImplementation 'io.cucumber:cucumber-jvm:4.8.0'
compile group: 'io.cucumber', name: 'cucumber-core', version: '4.8.0'
// testImplementation 'io.cucumber:cucumber-core:4.8.0'
compile group: 'io.cucumber', name: 'cucumber-testng', version: '4.8.0'
//testImplementation 'io.cucumber:cucumber-testng:4.8.0'
implementation 'io.cucumber:cucumber-picocontainer:4.7.4'
testImplementation 'io.cucumber:cucumber-gherkin:5.1.0'
//TestNg
// testImplementation 'org.testng:testng:6.14.3'
testCompile group: 'org.testng', name: 'testng', version: '6.14.3'
//Reports
testImplementation 'com.aventstack:extentreports:4.1.7'
testImplementation 'com.aventstack:extentreports-cucumber4-adapter:1.0.12'
//Maven Compiler , Surefire Plugin ,Poi
testImplementation 'org.apache.maven.plugins:maven-surefire-plugin:2.22.2'
testImplementation 'org.apache.maven.plugins:maven-compiler-plugin:3.8.1'
testImplementation 'org.apache.poi:poi-ooxml:4.1.2'
//Log4j & SLF4J
compile group: 'log4j', name: 'log4j', version: '1.2.17'
// #Rest Assured Apis
testImplementation 'io.rest-assured:rest-assured:3.3.0'
testImplementation 'org.json:json:20180813'
testImplementation 'com.googlecode.json-simple:json-simple:1.1.1'
//#Selenium Apis
compile group: 'org.seleniumhq.selenium', name: 'selenium-server', version: '3.141.59'
implementation 'com.paulhammant:ngwebdriver:1.1.4'
compile group: 'org.seleniumhq.selenium', name: 'selenium-htmlunit-driver', version: '2.52.0'
implementation 'org.seleniumhq.selenium:selenium-java:4.0.0-alpha-4'
//testImplementation 'org.hamcrest:hamcrest-all:2.2'
}
test {
testLogging.showStandardStreams = true
systemProperties System.getProperties()
}
configurations {
cucumberRuntime.extendsFrom testImplementation
}
task cucumber() {
dependsOn assemble,testClasses
doLast {
javaexec {
main = "io.cucumber.core.cli.Main"
classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
args = ['--plugin', 'pretty',
'--plugin', 'json:target/AppleBrands.json',
'--plugin', 'com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter:Report',
'--glue','com.apple.brands.test.stepdefinition',
'src/test/resources','src/main/java',
'--tags', '@Api'
]
}
}
}
tasks.test {
finalizedBy cucumber
}
I found the issue.
The problem was that you didn't use the LoggerHelper.
This is my project structure :
Updated LoggerHelper class :
To test whether LoggerHelper is working or not. I added one Test class with main method :
Console :
The log generated file.