JTrologLogger.java

  1. /*-
  2.  * #%L
  3.  * prolobjectlink-jpi-jtrolog
  4.  * %%
  5.  * Copyright (C) 2012 - 2019 Prolobjectlink Project
  6.  * %%
  7.  * This program is free software: you can redistribute it and/or modify
  8.  * it under the terms of the GNU Lesser General Public License as
  9.  * published by the Free Software Foundation, either version 2.1 of the
  10.  * License, or (at your option) any later version.
  11.  *
  12.  * This program is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.  * GNU General Lesser Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU General Lesser Public
  18.  * License along with this program.  If not, see
  19.  * <http://www.gnu.org/licenses/lgpl-2.1.html>.
  20.  * #L%
  21.  */
  22. package io.github.prolobjectlink.prolog.jtrolog;

  23. import java.io.IOException;
  24. import java.text.SimpleDateFormat;
  25. import java.util.Date;
  26. import java.util.logging.FileHandler;
  27. import java.util.logging.Formatter;
  28. import java.util.logging.Handler;
  29. import java.util.logging.Level;
  30. import java.util.logging.Logger;

  31. import io.github.prolobjectlink.prolog.AbstractLogger;
  32. import io.github.prolobjectlink.prolog.PrologLogger;

  33. /**
  34.  *
  35.  * @author Jose Zalacain
  36.  * @since 1.0
  37.  */
  38. final class JTrologLogger extends AbstractLogger implements PrologLogger {

  39.     private static final String MESSAGE = "Logger File Handler can't be created";
  40.     private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);

  41.     JTrologLogger() {
  42.         this(Level.INFO);
  43.     }

  44.     private JTrologLogger(Level level) {
  45.         LOGGER.setLevel(level);
  46.         Logger rootlogger = LOGGER.getParent();
  47.         SimpleDateFormat f = new SimpleDateFormat("yyyy.MM.dd");
  48.         String date = f.format(new Date());
  49.         Formatter formatter = new JTrologFormatter();
  50.         for (Handler h : rootlogger.getHandlers()) {
  51.             h.setFormatter(formatter);
  52.             h.setLevel(level);
  53.         }
  54.         FileHandler file = null;
  55.         try {
  56.             file = new FileHandler("%t/prolobjectlink-" + date + ".log", true);
  57.         } catch (SecurityException e) {
  58.             rootlogger.log(Level.SEVERE, MESSAGE, e);
  59.         } catch (IOException e) {
  60.             rootlogger.log(Level.SEVERE, MESSAGE, e);
  61.         }
  62.         assert file != null;
  63.         file.setFormatter(formatter);
  64.         LOGGER.addHandler(file);
  65.     }

  66.     public void log(Object sender, Level level, Object message, Throwable throwable) {
  67.         LOGGER.log(level, sender + "\n" + message, throwable);
  68.     }

  69. }