c# - net - nlog levels
Agregando el nombre del método en NLog (1)
Hay un procesador de diseño integrado llamado ${callsite}
que puede usar para incluir la información del sitio de la llamada (nombre de la clase, nombre del método e información de la fuente) en sus entradas de registro:
<targets>
<target
name="task1File"
xsi:type="File"
layout="${callsite} - ${message}"
fileName="${basedir}../Data/debugLog1.txt"
archiveAboveSize ="5000000"
maxArchiveFiles="2"/>
<target
name="task2File"
xsi:type="File"
layout="${callsite} - ${message}"
fileName="${basedir}../Data/debugLog2.txt"
archiveAboveSize ="5000000"
maxArchiveFiles="2"/>
</targets>
Estoy usando NLog y siguiendo el patrón recomendado de tener una declaración de registro en cada clase, con el fin de poder rastrear qué clase / método ha escrito en el registro. Encuentro esto muy útil para tener un poco de un ''seguimiento de pila'' de nivel superior con cada escritura de registro.
Mi código solía verse así:
class SomeClass {
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
void DoStuff() {
logger.Debug("stuff"); }
}
Hace poco tuve el requisito de que mi único proyecto escribiera en 3 archivos de registro separados, y para hacer esto, agregué múltiples registradores y objetivos como se especifica aquí: https://stackoverflow.com/a/21711838/191206
Sin embargo, ahora en mis archivos de registro, he perdido el nombre de nivel de clase. Ahora solo escribe el nombre de registro que especifiqué en NLog.config. He considerado simplemente agregar el nombre del método yo mismo con una llamada a
System.Reflection.MethodBase.GetCurrentMethod(); // use Name property
o usando otra cosa en la reflexión como this
Sin embargo, me pregunto si NLog tiene algo incorporado en esto que me estoy perdiendo. El método Debug () solo veo la capacidad de escribir una cadena, con parámetros y formato opcional.
¿Está esto integrado en NLog?