2009-01-06 11 views
4

Selon le Log4Net documentation, RollingFileAppender ne lance le fichier journal que lorsqu'un message est consigné. Je dois me connecter à ce fichier, mais l'importer tous les jours dans une autre base de données. Je ne peux pas utiliser un appender de base de données car j'ai besoin des fichiers et je dois traduire les données du fichier journal vers la base de données (ce n'est pas une copie directe). Le problème est que s'il n'y a pas d'activité de journal après minuit, le journal ne roule pas. L'importateur recherche le fichier des jours précédents (et je ne peux pas modifier ce code), donc s'il n'y a pas d'activité et que le journal n'a pas été lancé, l'importateur ne trouve pas le fichier. Est-il possible de forcer la bille à rouler à minuit sans avoir un autre fil qui se réveille et l'oblige à rouler? Un appender personnalisé peut-il le faire? Je voudrais éviter cela si possible.Forcer le RollingFileAppender à rouler

Répondre

5

Écrivez un service Windows qui déclenche un événement juste après minuit qui écrit une entrée de journal factice en utilisant la même configuration.

+0

Je dirais un autre processus, est fondamentalement un autre thread. – kenny

0

Selon le RollingFileAppender documentation vous pouvez le mettre à rouler sur une base quotidienne, voir cette configuration:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="logfile" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Date" /> 
    <datePattern value="yyyyMMdd" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
    </layout> 
</appender> 
+0

... mais après le passage de l'intervalle de date suivant (c'est-à-dire après minuit dans le cas de l'OP), le fichier n'est pas réellement déroulé jusqu'à ce qu'un message de journal soit reçu par l'appender. Ensuite, il lance le fichier et en lance un nouveau. –

3

Vous devez penser à cela du point de la question « quels chemins le code conduisent au renversement routine?". Une fois que vous savez comment cette routine est atteinte, vous pouvez décider comment la déclencher.

Un intégrateur personnalisé peut-il le faire? Bien sûr, mais aucun code dans l'appender ne fonctionnera jusqu'à ce que vous vous connectiez via celui-ci afin que vous soyez de retour à la case départ. En ce qui concerne la question «Y a-t-il moyen de forcer la bille à rouler à minuit sans avoir un autre fil qui se réveille et l'oblige à rouler?», Je dirais que cette question équivaut à «Est-il possible de forcer? le journal à rouler à minuit sans qu'aucun code ne soit exécuté? ". Je n'essaie pas d'être drôle à propos de ça, ou de vous insulter, j'essaie simplement de reformuler la question d'une manière qui, je l'espère, répondra pour vous. :-)

Le moyen le plus simple de résoudre ce problème est d'avoir quelque chose qui se réveille et de se connecter pour forcer le fichier à tourner.