Apparemment, ceci a été promu à un élément de configuration: <datePattern value = "dd.MM.yyyy'.log '" /> Cheers!
longda
3
@mstaessen <preserveLogFileNameExtension value="true" />est la syntaxe correcte et c'est une excellente réponse. Comment la perte s'est-elle produite, puis-je demander?
Larry B
1
Si je me souviens bien, ça s'est passé comme ça. Au démarrage, log4net génère le premier nom de fichier de la séquence de roulement. Il détecterait que ce fichier existe déjà et déciderait alors de passer au deuxième fichier, mais lorsque celui-ci existe déjà, il ne décide pas de le lancer, mais l'efface et écrase tout dans ce deuxième fichier journal. Cela passe totalement inaperçu jusqu'à ce que vous ayez besoin des journaux de la période effacée ...
Je pense que vous devriez souligner le point principal de quel paramètre pour résoudre le problème comme l'a fait @Mun. Cependant, j'ai également voté pour votre réponse.
RDeveloper
1
C'est l'élément datePattern, en conjonction avec l'élément staticLogFileName (et notez l'attribut value pour l'élément file) qui a fonctionné pour moi
Michhes
La réponse complète!
Nagesh le
32
Pour un RollingLogFileAppender, vous avez également besoin de ces éléments et valeurs:
Cela fonctionne, mais ajoute la date après l'extension de fichier. Par exemple, j'obtiens des fichiers journaux comme Error.log20111104 - Est-ce que quelqu'un connaît un moyen de formater un peu mieux le nom de fichier?
à quoi sert staticLogFileName? Je veux seulement que le fichier journal soit transformé en un nouveau nom après la fin de la journée. Je veux utiliser un moniteur de journal qui regarde un spécifique à chaque fois.
dim
22
En utilisant Log4Net 1.2.13, nous utilisons les paramètres de configuration suivants pour autoriser la date et l'heure dans le nom de fichier.
Si la taille du fichier est un problème, ce qui suit autorise 500 fichiers de 5 Mo jusqu'à ce qu'un nouveau jour apparaisse. CountDirection permet la numérotation croissante ou décroissante des fichiers qui ne sont plus en cours.
Le problème avec d'autres combinaisons de paramètres était que le dernier fichier n'avait pas le modèle de temps, ou que le modèle de temps était ajouté comme .log20171215 ce qui créait une nouvelle heure de fichier (et un nouveau type de fichier! ) Chaque jour - ou les deux problèmes apparaissaient.
Maintenant, avec ce paramètre, vous obtenez des fichiers comme celui-ci:
LOG4NET_Sample_Activity-20171215.log
c'est ce que je voulais.
Résumer:
Ne mettez pas le modèle de date dans le <file value=... attribut, définissez-le simplement dans le fichier datePattern.
Assurez-vous que l' attribut preserveLogFileNameExtensionvalue est défini surtrue .
Assurez-vous que la staticLogFileNamevaleur est définie surfalse .
Définissez la valeur d'rollingStyle attribut sur .Date
pourquoi il y a %date{yyyyMM}et value="ddMMyyyy" ? quel est le modèle de date effective?
Allan Ruin
Je pense que datePattern est pour le nom du fichier mais% date {aaaaMM} est pour le répertoire parent (je le voulais ainsi)
Fourat
L'attribut datePattern définit la période glissante pour Date rollingStyle. Voir logging.apache.org/log4net/release/config-examples.html sous RollingFileAppender. "Par exemple, un modèle de date de" aaaaMMjj "sera lancé tous les jours. Voir System.Globalization.DateTimeFormatInfo pour une liste des modèles disponibles."
Ryan Buddicom
@rbuddicom ouais mais la question est de savoir comment conserver l'extension de fichier.
Fourat
Je sais, Allan a remis en question le but de 'value = "ddMMyyyy"'. Votre commentaire "Je pense que datePattern est pour le nom de fichier" est incorrect à cet égard.
Ryan Buddicom le
0
La section de configuration étendue dans une réponse précédente avec
......<rollingStyle value="Composite"/>......
travaux répertoriés mais je n'ai pas eu à utiliser
<staticLogFileName value="false"/>
. Je pense que RollingAppender doit (logiquement) ignorer ce paramètre puisque, par définition, le fichier est reconstruit chaque jour lorsque l'application redémarre / réutilisée. Peut-être est-ce important pour un rollover immédiat CHAQUE fois que l'application démarre.
Pour moi, cela ne fonctionnerait pas sans <staticLogFileName value = "false" />
nurettin
moi aussi, j'ai dû définir staticLogFileName sur false sinon il ne serait pas journalisé
oonyalo
0
J'ai déplacé la configuration vers le code pour permettre une modification facile de CI à l'aide de la variable système. J'ai utilisé ce code pour le nom de fichier et le résultat est 'Log_03-23-2020.log'
Réponses:
Dans votre fichier de configuration Log4net, utilisez le paramètre suivant avec RollingFileAppender:
la source
<preserveLogFileNameExtension value="true" />
est la syntaxe correcte et c'est une excellente réponse. Comment la perte s'est-elle produite, puis-je demander?la source
Pour un RollingLogFileAppender, vous avez également besoin de ces éléments et valeurs:
la source
En utilisant Log4Net 1.2.13, nous utilisons les paramètres de configuration suivants pour autoriser la date et l'heure dans le nom de fichier.
<file type="log4net.Util.PatternString" value="E:/logname-%utcdate{yyyy-MM-dd}.txt" />
Qui fournira des fichiers dans la convention suivante:
logname-2015-04-17.txt
Avec cela, il est généralement préférable d'avoir les éléments suivants pour vous assurer de conserver 1 journal par jour.
Si la taille du fichier est un problème, ce qui suit autorise 500 fichiers de 5 Mo jusqu'à ce qu'un nouveau jour apparaisse. CountDirection permet la numérotation croissante ou décroissante des fichiers qui ne sont plus en cours.
la source
J'ai fini par utiliser (notez le nom de fichier '.log' et les guillemets simples autour de 'myfilename_'):
Cela me donne:
la source
preserveLogFileNameExtension
ne fonctionne pas pour les versions antérieures de log4net (par exemple v1.2.10) comme il est décrit iciJ'ai essayé toutes les réponses, mais il y avait toujours quelque chose qui manquait et qui ne fonctionnait pas comme prévu pour moi.
Ensuite, j'ai expérimenté un peu les indices donnés dans chaque réponse et j'ai réussi avec le paramètre suivant:
Le problème avec d'autres combinaisons de paramètres était que le dernier fichier n'avait pas le modèle de temps, ou que le modèle de temps était ajouté comme
.log20171215
ce qui créait une nouvelle heure de fichier (et un nouveau type de fichier! ) Chaque jour - ou les deux problèmes apparaissaient.Maintenant, avec ce paramètre, vous obtenez des fichiers comme celui-ci:
LOG4NET_Sample_Activity-20171215.log
c'est ce que je voulais.
Résumer:
Ne mettez pas le modèle de date dans le
<file value=...
attribut, définissez-le simplement dans le fichierdatePattern
.Assurez-vous que l' attribut
preserveLogFileNameExtension
value est défini surtrue
.Assurez-vous que la
staticLogFileName
valeur est définie surfalse
.Définissez la valeur d'
rollingStyle
attribut sur .Date
la source
Pour conserver l'extension de fichier:
la source
%date{yyyyMM}
etvalue="ddMMyyyy"
? quel est le modèle de date effective?La section de configuration étendue dans une réponse précédente avec
travaux répertoriés mais je n'ai pas eu à utiliser
. Je pense que RollingAppender doit (logiquement) ignorer ce paramètre puisque, par définition, le fichier est reconstruit chaque jour lorsque l'application redémarre / réutilisée. Peut-être est-ce important pour un rollover immédiat CHAQUE fois que l'application démarre.
la source
J'ai déplacé la configuration vers le code pour permettre une modification facile de CI à l'aide de la variable système. J'ai utilisé ce code pour le nom de fichier et le résultat est 'Log_03-23-2020.log'
la source