La respuesta de @skiphoppy funciona muy bien para Log4j1.x, pero pensé que podría actualizarse para mostrar cómo funciona en el nuevo Log4j2.
(NOTA: Intenté enviar esto como una edición de la publicación anterior, ya que es solo una revisión menor del código de respuesta, pero la publico como una respuesta separada ya que mi revisión fue rechazada).
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import org.apache.logging.log4j.ThreadContext;
private String getPID() {
RuntimeMXBean rt = ManagementFactory.getRuntimeMXBean();
return rt.getName();
}
private void configLog4j() {
// Here is the Log4j2 way
ThreadContext.put("PID", rtmx.getName());
}
Como la respuesta de los estados skiphoppy, se da salida a un poco más que sólo el ID del proceso. Por ejemplo, en mi máquina (Fedora 20):
[email protected]
Puede extraer sólo el identificador de proceso con el siguiente código, colocado en el archivo de configuración XML: %replace{%X{PID}}{[[email protected]\.]*}{}
Dada la salida anterior para el ID de proceso:
[email protected]
la expresión regular producirá
Gracias trabajaron un campeón. – rogerdpack
@rogerdpack, ¡me alegra que mi respuesta haya sido útil para usted! – skiphoppy
Bummer que esto no funciona de la caja sin escribir código para log4j –