Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Class 向Jenkins管道共享库类添加记录器_Class_Logging_Groovy_Jenkins Pipeline_Shared - Fatal编程技术网

Class 向Jenkins管道共享库类添加记录器

Class 向Jenkins管道共享库类添加记录器,class,logging,groovy,jenkins-pipeline,shared,Class,Logging,Groovy,Jenkins Pipeline,Shared,正在尝试将记录器添加到myClass。我希望在Jenkins控制台中看到它,而不使用“script.echo” 通过Jenkins控制台中的代码,我看到: Initializing myClass... <<<<<<<<<<<<<<<<< [Pipeline] sh [test-job] Running shell script [Pipeline] } [Pipe

正在尝试将记录器添加到myClass。我希望在Jenkins控制台中看到它,而不使用“script.echo”

通过Jenkins控制台中的代码,我看到:

Initializing myClass...                <<<<<<<<<<<<<<<<<
[Pipeline] sh
[test-job] Running shell script
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
an exception which occurred:
    in field com.macys.devops.utils.myClass._logger
    in object com.macys.devops.utils.myClass@54e9341c
    in field com.cloudbees.groovy.cps.impl.BlockScopeEnv.locals
    ....
    in field com.cloudbees.groovy.cps.Continuable.e
    in object org.jenkinsci.plugins.workflow.cps.SandboxContinuable@4c564ac6
    in field org.jenkinsci.plugins.workflow.cps.CpsThread.program
    ...
    in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@6b58d460
Caused: java.io.NotSerializableException: java.io.PrintStream

正在初始化myClass 尝试移动记录器创建:

要记录方法,请执行以下操作:

@NonCPS
专用作废日志(消息){
script.getContext(TaskListener.class).getLogger().println(消息)

}

好的,我知道这是可行的,但是既然记录器只是一个打印流,为什么不使用没有非cps块的
script.println(message)
?在较简单的场景中,这种方法提供了什么?@PeterKahn有时您需要从较长的
@NonCPS
方法打印调试信息,并从
@NonCPS
方法调用
echo
等CPS步骤。哦,我错过了您需要的NonCPS-我试图避免这些设计,以确保并行etc更简单。
Initializing myClass...                <<<<<<<<<<<<<<<<<
[Pipeline] sh
[test-job] Running shell script
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
an exception which occurred:
    in field com.macys.devops.utils.myClass._logger
    in object com.macys.devops.utils.myClass@54e9341c
    in field com.cloudbees.groovy.cps.impl.BlockScopeEnv.locals
    ....
    in field com.cloudbees.groovy.cps.Continuable.e
    in object org.jenkinsci.plugins.workflow.cps.SandboxContinuable@4c564ac6
    in field org.jenkinsci.plugins.workflow.cps.CpsThread.program
    ...
    in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@6b58d460
Caused: java.io.NotSerializableException: java.io.PrintStream
   _logger = script.getContext(TaskListener.class).getLogger()