Class 向Jenkins管道共享库类添加记录器
正在尝试将记录器添加到myClass。我希望在Jenkins控制台中看到它,而不使用“script.echo” 通过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
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()