Usar la salida estándar es una mala práctica. Sin embargo, si tiene una biblioteca o código que usa System.out y System.err, puede escribir su propio PrintStream que registra el nombre del hilo y la información() y el error() en su lugar. Una vez que haya hecho esto, puede estar más relajado sobre el uso de System.out, ya que se escribirá en los registros, p. log4j.
Lo ideal sería utilizar los registros adecuados directamente esp para el registro de nivel de depuración. En mi humilde opinión no tiene que importar mucho, siempre que no uses el System.out/err integrado. (Una gran suposición)
Tanto si usa System.out que se redirige a un archivo como si usa log4j o Java Logger para escribir en un archivo, el rendimiento es casi exactamente el mismo.
Creo que la pregunta (o el razonamiento detrás de esto) es mucho más interesante de lo que podría ser la respuesta. – Rekin