Cette méthode de sortie de journal consiste à sortir le journal au moment de l'exécution par lots, et elle n'est pas recommandée car il y a log rote, etc. dans l'application WEB, etc. Il vaut mieux utiliser Log4j docilement.
Cependant, dans un système où Log4j ne peut pas être utilisé pour une raison quelconque (je ne sais pas s'il est inclus en premier lieu), on m'a dit "Les journaux peuvent être System.out.println ()" et j'ai pensé "Attendez une minute", donc je vais le résumer. .. Les gens ordinaires ne l'utilisent pas.
public class BatchLogFomatter extends SimpleFormatter {
public String format(LogRecord logRecord) {
final StringBuffer stringBuffer = new StringBuffer();
//Format de date
//Ce lot n'était pas censé être un lot sensible au thread,
//Je crains de le mettre dans une variable de classe, alors écrivez-le au format
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
stringBuffer.append(dateFormat.format(new Date(logRecord.getMillis())));
stringBuffer.append(" ");
Level level = logRecord.getLevel();
//Pour une raison quelconque, FINE et ci-dessous ne sont pas affichés, il suffit donc de régler FINE et ci-dessous pour le moment.
//Les noms ont été modifiés en CONF, INFO, WARN et ERROR.
//Paramètres d'affichage (DEBUG)=Disons CONF.
if (level == Level.FINEST) {
stringBuffer.append("FINEST");
} else if (level == Level.FINER) {
stringBuffer.append("FINER ");
} else if (level == Level.FINE) {
stringBuffer.append("FINE ");
} else if (level == Level.CONFIG) {
stringBuffer.append("CONF");
} else if (level == Level.INFO) {
stringBuffer.append("INFO ");
} else if (level == Level.WARNING) {
stringBuffer.append("WARN ");
} else if (level == Level.SEVERE) {
stringBuffer.append("ERROR ");
}
stringBuffer.append(" ");
//Le nom de la classe sera entré (je ne sais pas ce que c'est ici)
stringBuffer.append(logRecord.getLoggerName());
stringBuffer.append(" - ");
//Le message est affiché
stringBuffer.append(logRecord.getMessage());
//N'oubliez pas les sauts de ligne.
stringBuffer.append("\n");
// 2017-10-05 18:52:57.592 INFO hoge.FugaBatch -Lancer l'exécution par lots
//Je reçois un journal comme
return stringBuffer.toString();
}
}
public class LogTest {
static final Logger logger = Logger.getLogger(LogTest.class.getName());
static {
ConsoleHandler handler = new ConsoleHandler();
//Modifier le niveau de journal
//Même si c'est TOUT, le FINE suivant ne sort pas ...
handler.setLevel(Level.ALL);
handler.setFormatter(new BatchLogFomatter());
logger.addHandler(handler);
//Si cela n'est pas inclus, le journal sera dupliqué
logger.setUseParentHandlers(false);
}
public static void main (String[] args) {
logger.info("Sortez avec INFO");
}
}
Puisqu'il s'agit d'une exécution par lots, le fichier journal est toujours séparé, alors ne vous inquiétez pas des détails J'essaie de ne sortir que le journal. Existe-t-il une meilleure façon d'obtenir un journal?
Recommended Posts