无法通过Gradle使用log4j将日志写入日志文件 [英] unable to write the logs to log file using log4j through Gradle

查看:216
本文介绍了无法通过Gradle使用log4j将日志写入日志文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在从事Cucumber TestNg Gradle自动化项目。由于我是Gradle的新手,尽管我在build.gradle文件中放入了适当的log4j依赖项,却无法解决问题。有人可以调查此问题并提供解决方案,或就由于未将哪些日志写入名为 ApplicationLogs.log的日志文件而出了错的建议。


下面是我的项目结构



下面是我的Log4j。属性文件内容


根记录程序选项


  log4j.rootLogger = INFO,RFILE,STDOUT 

#控制台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


#滚动文件添加器
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

以下是我的build.gradle文件内容

 插件{
id'java'
id'maven-publish'
id'java-library'
id'java- gradle-plugin'
id'application'
}

apply插件:'java'

仓库{

mavenCentral ()
jcenter()
}

任务deleteGraphicsAssets(type:Delete){
delet e构建
}

版本'1.0-SNAPSHOT'
sourceCompatibility = 1.8

依赖项{
//此依赖项已导出给消费者,即就是说在他们的编译类路径中找到的。
api‘org.apache.commons:commons-math3:3.6.1’

//此依赖关系在内部使用,不会在自己的编译类路径中公开给消费者。
实现'com.google.guava:guava:28.2-jre'


实现gradleApi()

//黄瓜
testImplementation 'io.cucumber:cucumber-java:4.8.0'

//编译组:'io.cucumber',名称:'cucumber-jvm',版本:'4.8.0',ext: 'pom'
test实现'io.cucumber:cucumber-jvm:4.8.0'

编译组:'io.cucumber',名称:'cucumber-core',版本:'4.8 .0'
// testImplementation'io.cucumber:cucumber-core:4.8.0'

编译组:'io.cucumber',名称:'cucumber-testng',版本: '4.8.0'
// testImplementation'io.cucumber:cucumber-testng:4.8.0'

实现'io.cucumber:cucumber-picocontainer:4.7.4'
testImplementation'io.cucumber:黄瓜-小黄瓜:5.1.0'


// TestNg
// testImplementation'org.testng:testng:6.14。 3'
test编译组:'org.testng',名称:'testng',版本:'6.14.3'

//报告
testImplementation'com.aventstack:extentreports :4.1.7'
testImplementation'com.aventstack:extentreports-cucumber4-adapter:1.0.12'

// Maven编译器,Surefire插件,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
编译组:'log4j',名称:'log4j',版本:'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
编译组:'org.seleniumhq.selenium',名称:'selenium-server',版本:'3.141.59'
实现'com.paulhammant:ngwebdriver:1.1.4'

编译组:'org.seleniumhq.selenium',名称:'selenium-htmlunit-driver',版本:'2.52.0'
实现'org.seleniumhq.selenium:selenium-java:4.0.0-alpha-4'

// testImplementation'org.hamcrest:hamcrest-all:2.2'

}

test {
testLogging.showStandardStreams = true
systemProperties System.g etProperties()
}

配置{
黄瓜Runtime.extendsFrom testImplementation
}


任务Cucumber(){
取决于组装,测试类
doLast {
javaexec {
main = io.cucumber.core.cli.Main
classpath = configuration.cucumberRuntime + sourceSets.main.output + sourceSets.test.output


args = ['--plugin','pretty',

'--plugin','json:target / InspireBrands.json',

'--plugin','com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter:Report',


'--glue','com.inspire.brands.test.stepdefinition',

'src / test / resources','src / main / java',

'--tags','@ Api'
]

}

}
}



tasks.test {
finalized通过黄瓜
}


解决方案

我发现了问题。


问题是您没有使用LoggerHelper。


这是我的项目结构:



更新的LoggerHelper类:



控制台:



日志生成的文件。



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

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/InspireBrands.json', 
                        
                        '--plugin',  'com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter:Report',
                        
                     
                          '--glue','com.inspire.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.

这篇关于无法通过Gradle使用log4j将日志写入日志文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆