web-dev-qa-db-fra.com

Besoin d'un exemple concret de configuration de log4j RollingFileAppender via les propriétés

J'utilise log4j pour la journalisation et un fichier de propriétés pour la configuration. Actuellement, mes fichiers journaux sont trop volumineux (3,5 Go est trop volumineux pour un fichier journal). Donc think Je dois utiliser RollingFileAppender - mais, ce faisant, le fichier journal continue de grossir excessivement. Je crois que je viens de mal le configurer; quelqu'un a-t-il un working exemple de configuration de RollingFileAppender?

Pour mémoire, ma configuration actuelle ressemble à ceci:

log4j.appender.MAIN_LOG.File=${catalina.base}/logs/webtop.log
log4j.appender.MAIN_LOG=org.Apache.log4j.RollingFileAppender
log4j.appender.MAIN_LOG.layout=com.mycompany.util.log.Log4JSimpleLayout
log4j.appender.MAIN_LOG.DatePattern='.'yyyy-MM-dd
log4j.appender.MAIN_LOG.MaxFileSize=10MB
log4j.appender.MAIN_LOG.MaxBackupIndex=99
log4j.appender.MAIN_LOG.append=true
log4j.rootCategory=ALL, MAIN_LOG

Une alternative à RollingFileAppender serait également une bonne solution.

11
mcherm

Je crois que je viens de mal le configurer; quelqu'un a-t-il un exemple de travail de configuration de RollingFileAppender?

Cela semble bien fonctionner pour moi @mcherm. Voir ci-dessous.

Êtes-vous sûr que vous utilisez le fichier log4j.properties que vous pensez être? Essayez de changer le .File en un autre chemin pour voir si la sortie du journal va dans le nouveau fichier. Quelle version de log4j utilisez-vous? Je cours 1.2.15.

J'espère que cela t'aides.


J'ai créé le programme de test suivant:

package com.j256.ormlite;
import org.Apache.log4j.Logger;
public class Foo {
    private static Logger logger = Logger.getLogger(Foo.class);
    public static void main(String[] args) {
        for (int x = 0; x < 10000000; x++) {
            logger.error("goodness this shouldn't be happening to us right here!!!!");
        }
    }
}

Mon fichier log4j.properties contient:

log4j.appender.MAIN_LOG=org.Apache.log4j.RollingFileAppender
log4j.appender.MAIN_LOG.File=${catalina.base}/logs/webtop.log
log4j.appender.MAIN_LOG.layout=com.j256.ormlite.Log4JSimpleLayout
log4j.appender.MAIN_LOG.MaxFileSize=10MB
log4j.appender.MAIN_LOG.MaxBackupIndex=5
log4j.appender.MAIN_LOG.append=true
log4j.rootCategory=ALL, MAIN_LOG

Notez que j'ai supprimé le DatePattern qui n'était pas valide pour mon RollingFileAppender. Ma mise en page est:

package com.j256.ormlite;
import org.Apache.log4j.spi.LoggingEvent;
public class Log4JSimpleLayout extends org.Apache.log4j.Layout {
    @Override
    public String format(LoggingEvent event) {
        return "log message = " + event.getMessage().toString() + "\n";
    }
    @Override
    public boolean ignoresThrowable() {
        return true;
    }
    public void activateOptions() {
    }
}

Sous -Dcatalina.base=/tmp/, je reçois des fichiers dans /tmp/logs/ qui vont jusqu'à l'index n ° 5 et qui ont une taille de 10 Mo. Si j'accorde la MaxFileSize ou la MaxBackupIndex, elle s'ajuste de manière appropriée.

16
Gray

Votre problème peut être lié au fait que vous spécifiez un DatePattern. Le DatePattern est destiné à être utilisé avec DailyRollingFileAppender pour spécifier la date à laquelle le fichier journal doit être lancé. Je ne crois pas il peut être utilisé avec les attributs MaxFileSize et MaxBackupIndex. Log4j vous permet de créer des fichiers en fonction de leur taille ou de leur date, mais pas des deux.

5
Hunter.C

Lorsque nous avons besoin de rouler quotidiennement les fichiers journaux, nous devrions utiliser DailyRollingFileAppender au lieu de RollingFileAppender. Vous n'avez pas besoin de spécifier la limite MaxFileSize. ____.] J'ai essayé la configuration ci-dessous dans le fichier log4j.properties pour faire défiler les fichiers journaux toutes les minutes.

log4j.appender.infoAppender = org.Apache.log4j.DailyRollingFileAppender

log4j.appender.infoAppender.Threshold = INFO

log4j.appender.infoAppender.DatePattern = '.' aaaa-MM-jj HH-mm

log4j.appender.infoAppender.File = C: /logs/info.log

2
Priyanka

Commencez par définir le paramètre JVM -Dlog4j.debug. Cela affiche quelques lignes utiles d’informations de débogage indiquant le fichier de configuration qu’il a trouvé et qu’il utilise, etc. Cela devrait vous donner des indices sur ce qui ne va pas.

Voir http://logging.Apache.org/log4j/1.2/manual.html

0
Martin Dow