2008-10-21 4 views
5

Log4Net configuré dans notre application pour utiliser un nom estampillé et une limite de taille de fichier 10Meg.
Cela provoque automatiquement un basculement vers un nouveau fichier à minuit et chaque fois que la limite de 10 Mo est atteinte. Je voudrais également passer la journalisation à un nouveau fichier chaque fois que l'application est démarrée (ou fermée). Puis-je avoir les trois comportements de renversement?Comment forcer un rollover au démarrage de l'application avec Log4net RolloverFileAppender?

Répondre

4

Définissez appendToFile sur false dans votre fichier de configuration.

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
.... 
    <appendToFile value="false" /> 
.... 
</appender> 

EDIT: Pour répondre à un commentaire de Craig:

Si vous correctement configuré et StaticLogFileName CountDirection (voir http://logging.apache.org/log4net/release/sdk/log4net.Appender.RollingFileAppender.html pour plus), alors les choses roulent comme on le souhaite. Nous configurons par programme l'enregistreur dans notre application où nous l'utilisons, mais voici à quoi ressemble le code:

Dim Layout As New PatternLayout("%date{yyyy-MM-dd HH:mm:ss,fff} [%-6thread] %-5level %type{2}.%method(%line) - %message%newline") 
Dim Appender As New log4net.Appender.RollingFileAppender() 
Appender.File = Path.Combine(FileSystemHelper.LogDirectory, LogFileName) 
Appender.Layout = Layout 
Appender.AppendToFile = False ' we will start a new one when the program starts' 
Appender.Name = "RollingLogFileAppender" 
Appender.Threshold = LogLevel() 'May want to set this by configuration' 
Appender.RollingStyle = log4net.Appender.RollingFileAppender.RollingMode.Size 'This means it will start a new log file each time the log grows to 10Mb' 
Appender.MaximumFileSize = "10MB" 
Appender.MaxSizeRollBackups = -1 'keep an infinite number of logs' 
Appender.StaticLogFileName = True 
Appender.CountDirection = 1 ' to reduce rollover costs' 
log4net.Config.BasicConfigurator.Configure(Appender) 
Appender.ActivateOptions() 
+1

Notez que ceci * remplace * le fichier préexistant. Que vous considériez cela ou non comme un «roulement» est une question d'interprétation. (Pour moi, rollover implique de laisser l'ancien journal autour.) –

+0

@Bob King - une idée de ce que les bons paramètres pour CountDirection et StaticLogFileName sont de l'obtenir pour rouler (ie copiez ancien journal ailleurs) au démarrage de l'application? J'ai mis RollingStyle = Une fois, CountDirection = 1, StaticLogFileName = true, AppendToFile = false mais je ne peux pas l'obtenir comme souhaité. J'ai également expérimenté avec une variété d'autres paramètres sans la chance – fostandy

+0

@fostandy - essayez de définir le style roulant à autre chose qu'une seule fois. La taille fonctionne pour nous. Désolé, juste remarqué que le commentaire a plus d'un an :-( –

Questions connexes