[JAVA] Je veux accrocher la génération / ouverture d'un fichier journal avec log4j # FileAppender

Je me demande s'il y a une demande (´ ・ ω ・ `) Si vous voulez accrocher le minutage lorsqu'un fichier journal est généré ou ouvert dans FileAppender, la classe qui hérite de FileAppender et remplace setFile est changée en log4j.Appender. Spécifier.

Par exemple, si vous souhaitez changer le fichier journal pour chaque date, plus spécifiquement, sample.log.20180211 pour le journal du 11 février 2018 et sample. Pour le journal du 12 février 2018. Si vous souhaitez enregistrer dans log.20180212, préparez le fichier original suivant et log4j.properties.

log4j.properties


log4j.logger.sample=DEBUG, SAMPLE
log4j.appender.SAMPLE=sample.logger.SampleFileAppender
log4j.appender.SAMPLE.File=C:\\logging\\sample.log
log4j.appender.SAMPLE.Append=true
log4j.appender.SAMPLE.layout=org.apache.log4j.PatternLayout
log4j.appender.SAMPLE.layout.ConversionPattern=%d %p %m %n

SampleFileAppender.java


package sample.logger;

import org.apache.log4j.FileAppender;

import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class SampleFileAppender extends FileAppender {

    @Override
    synchronized public void setFile(String fileName, boolean append, boolean bufferedIO, int bufferSize) throws IOException {
        Path path = Paths.get(fileName);
        String baseName = path.getFileName() + "." + DateTimeFormatter.ofPattern("yyyyMMdd").format(LocalDate.now());
        super.setFile(Paths.get(path.getParent().toString(), baseName).toString(), append, bufferedIO, bufferSize);
    }

}

Si vous y réfléchissez bien, DailyRollingFileAppender suffit à cet effet (´ ・ ω ・ `) Je suis désolé, ce n'est pas un bon échantillon (´ ・ ω ・ `)

Recommended Posts

Je veux accrocher la génération / ouverture d'un fichier journal avec log4j # FileAppender
Je souhaite surveiller un fichier spécifique avec WatchService
[Eclipse] Je souhaite ouvrir le même fichier deux fois [Éditeur fractionné]
Je souhaite utiliser DBViewer avec Eclipse 2018-12! !!
Je veux utiliser java8 forEach avec index
Je veux jouer avec Firestore de Rails
Je souhaite effectuer un traitement d'agrégation avec spring-batch
[Rails] Je veux charger du CSS avec webpacker
Je souhaite pouvoir lire des fichiers en utilisant refile avec administrate [rails6]
J'ai essayé d'implémenter le téléchargement de fichiers avec Spring MVC
Je veux intégrer n'importe quel TraceId dans le journal
Journal de sortie vers un fichier externe avec slf4j + logback avec Maven
Je souhaite utiliser le mode sombre avec l'application SWT
Je souhaite authentifier les utilisateurs auprès de Rails avec Devise + OmniAuth
Je veux faire des transitions d'écran avec kotlin et java!
Je souhaite simplifier la sortie du journal sur Android
Je veux pousser une application créée avec Rails 6 vers GitHub
Je souhaite modifier le paramètre de sortie du journal de UtilLoggingJdbcLogger
Je veux faire une liste avec kotlin et java!
Je veux créer une fonction avec kotlin et java!
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3
Je veux créer un fichier Parquet même en Ruby
Je souhaite envoyer manuellement un e-mail d'autorisation avec Devise
Je veux implémenter diverses fonctions avec kotlin et java!
Je veux passer la commande de démarrage à postgres avec docker-compose.
[Java] Je souhaite tester l'entrée standard et la sortie standard avec JUnit
Je veux convertir des caractères ...
[Spring Boot] Je veux ajouter mon propre fichier de propriétés et obtenir la valeur avec env.getProperty ().
Je veux créer un bouton avec un saut de ligne avec link_to [Note]
Je veux connecter un casque SONY WH-1000XM4 avec LDAC avec ubuntu 20.04! !!
Je souhaite ajouter une fonction de navigation avec ruby on rails
Je veux revenir à l'écran précédent avec kotlin et java!
Je veux INSÉRER l'heure locale du printemps avec l'heure MySQL (également en millisecondes)
Je veux éviter OutOfMemory lors de la sortie de gros fichiers avec POI
Faisons une application multiplateforme avec JRuby (génération de fichier jar)
Comment ouvrir un fichier de script à partir d'Ubuntu avec du code VS
[Java] Je veux effectuer distinctement avec la clé dans l'objet
[Journal de développement ⑮] Je souhaite ajouter un lien externe ou un lien PDF
[Rails] Je souhaite ajouter des données aux paramètres lors de la transition avec link_to
Je souhaite effectuer un traitement asynchrone et une exécution périodique avec Rail !!!
Je veux extraire entre des chaînes de caractères avec une expression régulière
Je veux créer un fichier de guerre Servlet avec OpenJDK sur CentOS7. Sans mvn. Sans connexion Internet.
Je souhaite télécharger un fichier sur Internet en utilisant Ruby et l'enregistrer localement (avec prudence)
J'ai essayé d'interagir avec Java
Enregistrer la sortie dans un fichier en Java
Activez la sortie du journal vers les fichiers et la console à l'aide de log4j dans Eclipse.
Je veux afficher des images avec REST Controller de Java et Spring!
Je souhaite sélectionner plusieurs éléments avec une disposition personnalisée dans la boîte de dialogue
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3 (édition PowerMockito)