You can get the entire output stream mediante el uso de .text:¿Un error equivalente para process.text?
def process = "ls -l".execute()
println "Found text ${process.text}"
¿Existe un equivalente concisa para obtener el flujo de error?
You can get the entire output stream mediante el uso de .text:¿Un error equivalente para process.text?
def process = "ls -l".execute()
println "Found text ${process.text}"
¿Existe un equivalente concisa para obtener el flujo de error?
Usted puede utilizar waitForProcessOutput
que tiene dos Appendables (docs here)
def process = "ls -l".execute()
def (output, error) = new StringWriter().with { o -> // For the output
new StringWriter().with { e -> // For the error stream
process.waitForProcessOutput(o, e)
[ o, e ]*.toString() // Return them both
}
}
// And print them out...
println "OUT: $output"
println "ERR: $error"
Basado en tim_yates responder, lo probé en Jenkins y encontré este tema con múltiples misiones: https://issues.jenkins-ci.org/browse/JENKINS-45575
Así que esto funciona y se también es conciso:
def process = "ls -l".execute()
def output = new StringWriter(), error = new StringWriter()
process.waitForProcessOutput(output, error)
println "exit value=${process.exitValue()}"
println "OUT: $output"
println "ERR: $error"
Acepto su respuesta porque es la más concisa hasta ahora. Me pregunto por qué no hay un 'process.error'. – ripper234
principalmente porque usar el miembro .text es peligroso. Si la salida de texto a las secuencias de salida o de error excede el tamaño de la memoria intermedia, el proceso se detendrá hasta que se lea parte de la secuencia. En realidad, es una buena idea cuando no se sabe cuánto tiempo durará la salida (que suele ser el caso de los errores) para usar un hilo separado para capturar la transmisión. – billjamesdev
+1 para el comentario de @BillJames. Como un lado, esto es lo que hace ['waitForProcessOutput'] (https://github.com/groovy/groovy-core/blob/master/src/main/org/codehaus/groovy/runtime/ProcessGroovyMethods.java#L206) (crea dos hilos para escuchar el resultado) –