当前位置: 首页 > 面试题库 >

Jenkins管道中未使用自定义记录器

淳于乐池
2023-03-14
问题内容

下面一些Groovy类中的方法由其他我不知道的其他管道脚本类调用。 所有的println语句已被logger.info取代。

class ConfigurationPluginInitBase implements Plugin<Project> {
private static final Logger logger = LoggerFactory.getLogger(ConfigurationPluginInitBase.class)
.
.
.
protected void configureDependenciesResolution(Project project) {
.
.
.
logger.info("Configuring Dependencies Resolution")
logger.info('Does the buildInfo.json exist? {}' , file.exists())
logger.info('The list of dependencies should be rewritten: {}' ,rewriteDependency)

/*Added this as there was no other way to see what happened to the logger instance*/
println 'Is the logger instance created at all???' + logger
.
.
.
logger.info('List: {}' , listToUpdate)
}

}

log4j2-test.properties

status = error
name = PropertiesConfig

filters = threshold

filter.threshold.type = ThresholdFilter
filter.threshold.level = debug

appenders = console

appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c:- %m%n

loggers = console

logger.console.name = ConsoleLog
logger.console.level = debug
logger.console.additivity = false
logger.console.appenderRef.console.ref = STDOUT

rootLogger.level = info
rootLogger.appenderRef.stdout.ref = STDOUT

Jenkins作业控制台上的输出(下面仅显示相关部分):

.
.
.
.
Download http://artifactory.net:8081/artifactory/Migration_R148_VR/tools.gradle.plugin/BuildPublishReleasePlugin/v4.0.0.37af2ff/ivy-v4.0.0.37af2ff.xml
Download http://artifactory.net:8081/artifactory/Migration_R148_VR/tools.gradle.plugin/BuildPublishReleasePlugin/v4.0.0.37af2ff/BuildPublishReleasePlugin-v4.0.0.37af2ff.jar
//Printed way before the actual logger statements, when the above artifact is //downloaded from Artifactory for further testing in the pipeline
Is the logger instance created at all???org.gradle.internal.logging.slf4j.OutputEventListenerBackedLogger@efbec93c
apache-commons:commons-collections:null
apache-commons:commons-lang:null
DAP_Framework:DAP_FrameworkExt:null
esapi:esapi:null
opensaml:opensaml:null
openws:openws:null
slf4j:slf4j:null
spring-framework:spring-framework:null
TDE_Ark_Framework:TDE_Ark_Framework:null
TDE_Ark_Infrastructure:TDE_Ark_Infrastructure_CLI:null
velocity:velocity:null
wurfl:wurfl:null
xmlsec:xmlsec:null
xmltooling:xmltooling:null.
.
.
.
[Ripple AlfaClient] Configuring Dependencies Resolution
[Ripple AlfaClient] Does the buildInfo.json exist? true
[Ripple AlfaClient] The list of dependencies should be rewritten: DAP_Framework:DAP_Framework_CLI:1.2.2-integration.adcb14d
[Ripple AlfaClient] List: [DAP_Framework:DAP_Framework_CLI:1.2.2-integration.adcb14d]
.
.
.
  • 我配置的记录器可能未调用
  • 运行时实例为OutputEventListenerBackedLogger
  • 即使我更改了logger语句,它们也不会反映在输出中,但是我添加的新println会反映出来。 这令人困惑,即某些更改会反映出来,而有些则不会!

我所指的摇篮登录页面和线程像和这个
,但我不清楚的根本原因。

注意:我是Jenkins管道,Gradle和Groovy的新手:)


问题答案:

我假设您想将Gradle的日志记录系统用于Gradle插件的日志输出?

在那种情况下,我建议以不同的方式创建/获取记录器实例。使用project.logger.info(…)或创建一个新的Logger像这样:

private static final Logger logger = Logging.getLogger(ConfigurationPluginInitBase.class)

话虽如此,您的日志消息当前可能不显示的原因可能是Gradle的默认日志级别为LIFECYCLE–但您似乎仅登录到INFO。您可以尝试运行带有该--info选项的Gradle
来查看您的消息。



 类似资料:
  • 使装饰器包含具有name属性的管道元数据。 此值将用于在模板表达式中调用此管道。 它必须是有效的JavaScript标识符。 实现PipeTransform接口的transform方法。 此方法接受管道的值和任何类型的可变数量的参数,并返回一个变换的(“管道”)值。 import { Component } from '@angular/core'; selector: 'app-root',

  • 即。在货币管道上完成一些额外的格式化。为此,我想在自定义管道的组件代码中使用现有管道。

  • 我正在使用一个自定义管道,过滤数组的第一个字母表在字符串的基础上数组(电话簿样式)。每当我更改字母表参数时,管道就会返回经过过滤的数组,并使用*ngfor显示它。如果没有找到匹配项,则返回空数组,并且我的diplay are为空。 我希望,如果管道返回空数组,我的显示区域应该显示一个div'没有记录找到‘。我怎么能那么做。

  • 问题内容: 我想实现一个自定义记录器,该记录器将所有日志条目记录到数据库中。目前,我的应用以这种方式记录日志(slf4j和log4j绑定): 我不确定如何进行。我的想法是通过实现org.slf4j.Logger接口来实现自定义日志记录绑定 下一步将是什么?我的目标是不更改当前代码 我考虑过的链接: http://www.slf4j.org/manual.html 问题答案: 它应该相当容易。您需要

  • Angular 2还具有创建自定义管道的功能。 定义自定义管道的一般方法如下。 import { Pipe, PipeTransform } from '@angular/core'; @Pipe({name: 'Pipename'}) export class Pipeclass implements PipeTransform { transform(parameters): r