Skip to content

unable to write the logs to log file using log4j through Gradle

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

enter image description here

Below is my file contents

Root logger option

    log4j.rootLogger=INFO, RFILE,STDOUT
    # Console Appender
    log4j.appender.STDOUT.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p] [%c{1}] - [%M] %m%n
    # Rolling File Appender
    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 {
    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 ''
        implementation gradleApi()
        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'
       // testImplementation 'org.testng:testng:6.14.3'
        testCompile group: 'org.testng', name: 'testng', version: '6.14.3'
       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 ''
         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',
                        '--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 :

enter image description here

Updated LoggerHelper class :

enter image description here

To test whether LoggerHelper is working or not. I added one Test class with main method :

enter image description here

Console :

enter image description here

The log generated file.

enter image description here