2009-03-05 15 views
62

Je veux que mon fichier journal à ressembler à quelque chose comme ceci: 2009-02-13.logLog4Net: Rouler appender Fichier, définir l'extension

mais le problème est que je ne peux pas sembler trouver un moyen d'ajouter la extension .log. J'ai essayé beaucoup de choses mais rien n'aide. C'est ce que j'ai jusqu'ici:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="Logs/Log4Net/.log"/> 
    <appendToFile value="true"/> 
    <rollingStyle value="Date"/> 
    <datePattern value="yyyy-MM-dd" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/> 
    </layout> 
</appender> 

Répondre

53

Essayez d'ajouter l'extension .log à votre modèle de date comme si et le retirer de l'attribut de fichier.

<datePattern value="yyyy-MM-dd.lo\g"/> 
... 
<staticLogFileName value="false" /> 
+7

Rappelez-vous aussi pour ajouter

8

ajouter ".lo \ g" à la fin de votre datepattern

105

Les autres réponses échapper à la "g" dans "log" depuis "g" est un caractère spécial dans datePattern. Ce n'est pas mal, mais je préfère envelopper l'ensemble des caractères non de date entre guillemets simples, comme ceci:

<datePattern value="yyyy-MM-dd'.log'" /> 

Cela donne les mêmes résultats, mais me est plus facile à gérer. De cette façon, je n'ai pas besoin de rappeler quels caractères spécifiques sont spéciaux pour datePattern (la liste est longue et variée). Si j'oublie un personnage, je ne coure pas le risque de fermer mes noms de fichiers; ils sont tous bien échappés en masse.

+3

Je préfère aussi cette approche. –

+1

Alors quelle est la valeur que vous avez pour avec ça? – ssmith

+2

@ssmith: Laisser le '.log' de' '. Log4Net ajoute le motif de date à la valeur du fichier, donc vous voulez l'extension du fichier sur le premier. –

4

Ceci est mon fichier journal config xml. Le chemin d'accès au fichier journal se trouve dans la balise "fichier"

Cela créera un fichier journal "2012-11-22.log" sous le dossier "LogFiles" dans le dossier route de mon site Web.

REMARQUE: Assurez-vous que le dossier existe en premier!

<?xml version="1.0"?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,  log4net"/> 
    </configSections> 
    <log4net> 
    <root> 
     <level value="INFO"/> 
     <appender-ref ref="RollingFileAppender"/> 
    </root> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="LogFiles/"/> 
     <appendToFile value="true"/> 
     <rollingStyle value="Date"/> 
     <maxSizeRollBackups value="5"/> 
     <maximumFileSize value="10MB"/> 
     <datePattern value="yyyy-MM-dd'.log'" /> 
     <staticLogFileName value="false"/> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %level %logger - %message%newline%exception"/> 
     </layout> 
    </appender> 
    </log4net> 
</configuration> 
15

log4net maintenant fournit également une PreserveLogFileNameExtension propriété qui peut forcer votre extension .log à la fin du nom de fichier composé (y compris modèle de date et/ou le numéro de séquence de taille):

<file value="LogFiles/.log"/> 
<preserveLogFileNameExtension value="true" /> 
<datePattern value="yyyy-MM-dd" /> 
+0

Doit-il être disponible uniquement sur des versions plus récentes? Je ne pouvais pas obtenir ce paramètre pour fonctionner sur mon système. J'ai fini d'avoir à utiliser .log deux fois, une fois dans la valeur du fichier, et une autre fois dans datePattern :( – Sun

+1

Je crois qu'il a été ajouté en 1.2.12 –