无法通过Gradle使用log4j将日志写入日志文件 [英] unable to write the logs to log file using log4j through Gradle
问题描述
我正在从事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屋!