Parece que esto ha sido promovido a un elemento de configuración: <datePattern value = "dd.MM.yyyy'.log '" /> ¡Salud!
Longda
3
@mstaessen <preserveLogFileNameExtension value="true" />es la sintaxis correcta y esta es una gran respuesta. ¿Cómo ocurrió la pérdida, puedo preguntar?
Larry B
1
Si mal no recuerdo, fue así. Al inicio, log4net generaría el primer nombre de archivo en la secuencia continua. Detectaría que ese archivo ya existe y luego decidiría pasar al segundo archivo, pero cuando ese también ya existe, no decide hacerlo, sino que lo borra y sobrescribe todo en ese segundo archivo de registro. Se conoce por completo desapercibida hasta que necesite los registros de los plazos aclarado ...
Creo que debería resaltar el punto principal de qué parámetro para resolver el problema como lo hizo @Mun. Sin embargo, también voté a favor de su respuesta.
RDeveloper
1
Fue el elemento datePattern, junto con el elemento staticLogFileName (y tenga en cuenta el atributo de valor para el elemento de archivo) lo que funcionó para mí
Michhes
¡La respuesta completa!
Nagesh
32
Para un RollingLogFileAppender también necesita estos elementos y valores:
Esto funciona, pero agrega la fecha después de la extensión del archivo. Por ejemplo, obtengo archivos de registro como Error.log20111104: ¿Alguien conoce una forma de formatear el nombre del archivo un poco mejor?
¿Para qué se utiliza staticLogFileName? Solo quiero que el archivo de registro se transfiera a un nuevo nombre después de que termine el día. Quiero usar un monitor de registro que mire un específico cada vez.
Sun
22
Usando Log4Net 1.2.13 usamos los siguientes ajustes de configuración para permitir la fecha y hora en el nombre del archivo.
Si el tamaño del archivo es una preocupación, lo siguiente permite 500 archivos de 5 MB de tamaño hasta que aparezca un nuevo día. CountDirection permite la numeración ascendente o descendente de archivos que ya no son actuales.
El problema con otras combinaciones de parámetros era que el último archivo no tenía el patrón de tiempo, o que el patrón de tiempo se adjuntaba como lo .log20171215que creaba un nuevo tiempo de archivo (¡y un nuevo tipo de archivo! ) Cada día, o aparecían ambos problemas.
Ahora, con esta configuración, obtienes archivos como este:
LOG4NET_Sample_Activity-20171215.log
que es lo que quería.
Para resumir:
No ponga el patrón de fecha en el <file value=...atributo, simplemente defínalo en el datePattern.
Asegúrese de tener el atributo de preserveLogFileNameExtensionvalor establecido en true.
Asegúrese de tener el staticLogFileNamevalor configurado en false.
Establezca el valor del rollingStyleatributo en .Date
¿Por qué hay %date{yyyyMM}y value="ddMMyyyy" ? ¿Cuál es el patrón de fecha de vigencia?
Allan Ruin
Creo que datePattern es para el nombre del archivo pero% date {yyyyMM} es para el directorio principal (lo quería de esa manera)
Fourat
El atributo datePattern establece el período continuo para Date rollingStyle. Consulte logging.apache.org/log4net/release/config-examples.html en RollingFileAppender. "Por ejemplo, un patrón de fecha de" aaaaMMdd "aparecerá todos los días. Consulte System.Globalization.DateTimeFormatInfo para obtener una lista de patrones disponibles".
Ryan Buddicom
@rbuddicom sí, pero la pregunta es cómo conservar la extensión del archivo.
Fourat
Lo sé, Allan cuestionó el propósito de 'value = "ddMMyyyy"'. Su comentario "Creo que datePattern es para el nombre del archivo" es incorrecto en ese sentido.
Ryan Buddicom
0
La sección de configuración extendida en una respuesta anterior con
......<rollingStyle value="Composite"/>......
trabajos enumerados pero no tuve que usar
<staticLogFileName value="false"/>
. Creo que RollingAppender debe (lógicamente) ignorar esa configuración ya que, por definición, el archivo se reconstruye cada día cuando la aplicación se reinicia / reutiliza. Quizás sea importante para la renovación inmediata CADA vez que se inicie la aplicación.
Para mí, no funcionaría sin el <staticLogFileName value = "false" />
nurettin
yo también, tuve que establecer staticLogFileName en falso, de lo contrario no se registraría
oonyalo
0
Moví la configuración al código para permitir una fácil modificación desde CI usando la variable del sistema. Usé este código para el nombre del archivo y el resultado es 'Log_03-23-2020.log'
Respuestas:
En su archivo de configuración de Log4net, use el siguiente parámetro con RollingFileAppender:
fuente
<preserveLogFileNameExtension value="true" />
es la sintaxis correcta y esta es una gran respuesta. ¿Cómo ocurrió la pérdida, puedo preguntar?fuente
Para un RollingLogFileAppender también necesita estos elementos y valores:
fuente
Usando Log4Net 1.2.13 usamos los siguientes ajustes de configuración para permitir la fecha y hora en el nombre del archivo.
<file type="log4net.Util.PatternString" value="E:/logname-%utcdate{yyyy-MM-dd}.txt" />
Que proporcionará archivos en la siguiente convención:
logname-2015-04-17.txt
Con esto, generalmente es mejor tener lo siguiente para asegurarse de tener 1 registro por día.
Si el tamaño del archivo es una preocupación, lo siguiente permite 500 archivos de 5 MB de tamaño hasta que aparezca un nuevo día. CountDirection permite la numeración ascendente o descendente de archivos que ya no son actuales.
fuente
Terminé usando (tenga en cuenta el nombre de archivo '.log' y las comillas simples alrededor de 'myfilename_'):
Esto me da:
fuente
preserveLogFileNameExtension
no funciona para versiones anteriores de log4net (por ejemplo, v1.2.10) como se describe aquíProbé todas las respuestas, pero siempre faltaba algo y no funcionaba como esperaba.
Luego experimenté un poco con las sugerencias dadas en cada respuesta y tuve éxito con la siguiente configuración:
El problema con otras combinaciones de parámetros era que el último archivo no tenía el patrón de tiempo, o que el patrón de tiempo se adjuntaba como lo
.log20171215
que creaba un nuevo tiempo de archivo (¡y un nuevo tipo de archivo! ) Cada día, o aparecían ambos problemas.Ahora, con esta configuración, obtienes archivos como este:
LOG4NET_Sample_Activity-20171215.log
que es lo que quería.
Para resumir:
No ponga el patrón de fecha en el
<file value=...
atributo, simplemente defínalo en eldatePattern
.Asegúrese de tener el atributo de
preserveLogFileNameExtension
valor establecido entrue
.Asegúrese de tener el
staticLogFileName
valor configurado enfalse
.Establezca el valor del
rollingStyle
atributo en .Date
fuente
Para conservar la extensión del archivo:
fuente
%date{yyyyMM}
yvalue="ddMMyyyy"
? ¿Cuál es el patrón de fecha de vigencia?La sección de configuración extendida en una respuesta anterior con
trabajos enumerados pero no tuve que usar
. Creo que RollingAppender debe (lógicamente) ignorar esa configuración ya que, por definición, el archivo se reconstruye cada día cuando la aplicación se reinicia / reutiliza. Quizás sea importante para la renovación inmediata CADA vez que se inicie la aplicación.
fuente
Moví la configuración al código para permitir una fácil modificación desde CI usando la variable del sistema. Usé este código para el nombre del archivo y el resultado es 'Log_03-23-2020.log'
fuente