Skip to content
Advertisement

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 Log4j.properties file contents

Root logger option

    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
    }

Advertisement

Answer

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

Advertisement