J'ai un projet maven où j'ai écrit un filtre java.util.logging comme ci-dessous.java util logging configurer le filtre dans le fichier de propriétés
package com.xyz.filters;
import java.util.logging.Filter;
import java.util.logging.LogRecord;
class CustomFilter implements Filter {
public boolean isLoggable(LogRecord record) {
return record.getLoggerName().indexOf("com.package.name") != -1;
}
}
J'ai un fichier de propriétés dans lequel j'ai configuré la console et les gestionnaires de fichiers et ont besoin d'ajouter un filtre, en plus de se débarrasser des journaux indésirables dans le fichier. Je ajouté le filtre comme suit:
java.util.logging.FileHandler.filter = com.xyz.filters.CustomFilter
Cependant, le filtre n'est pas appliquée. Qu'est-ce que je fais mal ici.
MISE À JOUR: Ajout du fichier de configuration
############################################################
# Default Logging Configuration File
#
# You can use a different file by specifying a filename
# with the java.util.logging.config.file system property.
# For example java -Djava.util.logging.config.file=myfile
############################################################
############################################################
# Global properties
# NOTE: this configuration file use to get the handler list,
# Properties(except level property) define for each handler
# may be not available because LogRecords handover to log4j
# appenders in runtime.
############################################################
# "handlers" specifies a comma separated list of log Handler
# classes. These handlers will be installed during VM startup.
# Note that these classes must be on the system classpath.
# By default we only configure a ConsoleHandler, which will only
# show messages at the INFO and above levels.
#handlers= java.util.logging.ConsoleHandler
# To also add the FileHandler, use the following line instead.
#handlers= java.util.logging.FileHandler
# Add org.wso2.carbon.bootstrap.logging.handlers.LogEventHandler to handlers if you need to push java logs to LOGEVENT appender
handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler
# Default global logging level.
# This specifies which kinds of events are logged across
# all loggers. For any given facility this global level
# can be overriden by a facility specific level
# Note that the ConsoleHandler also has a separate level
# setting to limit messages printed to the console.
.level= INFO
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
#
java.util.logging.FileHandler.level = FINE
java.util.logging.FileHandler.pattern = /path/to/custom.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format = [%1$tY-%1$tm-%1$td %1$tk:%1$tM:%1$tS,%1$tL] %4$s {%2$s} - %5$s %6$s %n
java.util.logging.FileHandler.filter = om.xyz.filters.CustomFilter
java.util.logging.ConsoleHandler.level = INFO
############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################
# For example, set the com.xyz.foo logger to only log SEVERE
# messages:
#com.xyz.foo.level = SEVERE
com.package.name.level = FINE
Si la méthode 'isLoggable()' renvoie false, le paramètre LogRecord n'est pas consigné. Si la méthode 'renvoie true', le' LogRecord' est transmis aux gestionnaires du Logger donné. Qu'est-ce qui vous appartient? – soorapadman
C'est le même vieux fichier que je reçois avec tous les enregistrements. J'ai essayé de mettre un point de débogage dans la méthode isLoggable(), mais il ne fonctionne pas. –
Vous pouvez essayer 'return true' à la place' record.getLoggerName(). IndexOf ("com.package.name")! = -1' quand il fonctionne? Si ça marche, ça pourrait être un problème avec 'record'. – soorapadman