Estoy tratando de crear una solución de registro que implique múltiples procesos en varias máquinas. Planeé usar UDPAppender para enviar todos los mensajes de registro a una sola máquina que los administraría. Tengo algunas preguntas sobre patternstrings vs patternlayouts.log4net información de identificación de proceso
Como necesito saber qué máquina y de qué proceso proviene ese mensaje de registro, también quiero incluirlo en el registro. Encontré% property {log4net: HostName} para nombre de host, y eso funciona muy bien. Sin embargo, no veo nada para la identificación del proceso en PatternLayouts. Sí, claro, veo algo así en PatternString. Desde el FAQ:
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<file type="log4net.Util.PatternString" value="log-file-[%processid].txt" />
<layout type="log4net.Layout.PatternLayout" value="%date [%thread] %-5level %logger - %message%newline" />
</appender>
Pero no estoy seguro de si o cómo mezclar y combinar los dos (o incluso si esta es la forma canónica para hacerlo).
Por lo tanto, mis preguntas son:
¿Cuál es la diferencia entre PatternString y PatternLayout? ¿Por qué ambos?
Veo el% processid en PatternString, ¿cómo obtengo lo mismo en PatternLayout? Aquí está mi diseño de la prueba:
<layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] [%property{log4net:HostName}] %-5level %logger - %message%newline" /> </layout>
Por último, tiene sentido utilizar el diseño XML para el appender UDP. Parece que XmlLayoutSchemaLog4j ya agrega HostNameProperty al mensaje XML. Si deseo agregar este nuevo ID de proceso (y tal vez el Nombre del proceso) al mensaje XML, ¿cuál es la mejor manera de hacerlo? ¿Debo simplemente copiar src \ Layouts \ XmlLayoutSchemaLog4j.cs, modificarlo y dejar que log4net sepa que creé este nuevo Layout (como el SampleLayoutsApp)?
Gracias por su ayuda
Probado% pid todo, id_de_proceso% y muchos más, nada funcionó. Tu solución funciona Gracias. – Nemo