Bonjour, je suis en train de mettre en œuvre le journal Java dans mon application. Je veux utiliser deux gestionnaires. Un gestionnaire de fichiers et mon propre gestionnaire de console. Les deux gestionnaires fonctionnent bien. Mes journaux sont envoyés à un fichier et à la console. Mes journaux sont également envoyés au gestionnaire de console par défaut, ce que je ne veux pas. Si vous exécutez mon code, vous verrez deux lignes supplémentaires envoyées à la console. Je ne veux pas utiliser le gestionnaire de console par défaut. Est-ce que quelqu'un sait comment désactiver le gestionnaire de console par défaut. Je veux seulement utiliser les deux gestionnaires que j'ai créés.
Handler fh = new FileHandler("test.txt");
fh.setFormatter(formatter);
logger.addHandler(fh);
Handler ch = new ConsoleHandler();
ch.setFormatter(formatter);
logger.addHandler(ch);
import java.util.Date;
import java.util.logging.ConsoleHandler;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
public class LoggingExample {
private static Logger logger = Logger.getLogger("test");
static {
try {
logger.setLevel(Level.INFO);
Formatter formatter = new Formatter() {
@Override
public String format(LogRecord arg0) {
StringBuilder b = new StringBuilder();
b.append(new Date());
b.append(" ");
b.append(arg0.getSourceClassName());
b.append(" ");
b.append(arg0.getSourceMethodName());
b.append(" ");
b.append(arg0.getLevel());
b.append(" ");
b.append(arg0.getMessage());
b.append(System.getProperty("line.separator"));
return b.toString();
}
};
Handler fh = new FileHandler("test.txt");
fh.setFormatter(formatter);
logger.addHandler(fh);
Handler ch = new ConsoleHandler();
ch.setFormatter(formatter);
logger.addHandler(ch);
LogManager lm = LogManager.getLogManager();
lm.addLogger(logger);
} catch (Throwable e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
logger.info("pourquoi mon application de test utilise-t-elle le journal standard de la console ?\n" + "Je veux seulement mon gestionnaire de console (Handler ch)\n" + "comment puis-je désactiver le journal standard de la console. ??");
}
}
1 votes
Puis-je suggérer gentiment d'utiliser
b.append(formatMessage(arg0))
au lieu deb.append(arg0.getMessage())
. Avec la méthodeformatMessage
, vous rendez votre formateur compatible avec l'utilisation depublic void log(Level level, String msg, Object param1)
et des méthodes similaires.