View Javadoc

1   package org.lcsim.util.log;
2   
3   import java.util.logging.Formatter;
4   import java.util.logging.Handler;
5   import java.util.logging.Level;
6   import java.util.logging.LogRecord;
7   import java.util.logging.Logger;
8   import java.util.logging.StreamHandler;
9   
10  /**
11   * A simple set of utility methods for creating <code>Logger</code> objects.
12   *
13   * @author Jeremy McCormick <jeremym@slac.stanford.edu>
14   */
15  public class LogUtil {
16  
17      private LogUtil() {
18      }
19  
20      public static Logger create(final String name, Formatter formatter, final Level level) {
21          final Logger logger = Logger.getLogger(name);
22          logger.setUseParentHandlers(false);
23          logger.setLevel(level);
24          if (formatter == null) {
25              formatter = new DefaultLogFormatter();
26          }
27          final Handler handler = new StreamHandler(System.out, formatter) {
28              @Override
29              public void publish(final LogRecord record) {
30                  super.publish(record);
31                  flush();
32              }
33          };
34          handler.setLevel(Level.ALL); // Handler level is always ALL.
35          logger.addHandler(handler);
36          return logger;
37      }
38  
39      public static Logger create(final Class<?> klass, final Formatter formatter) {
40          return create(klass.getName(), formatter, Level.INFO);
41      }
42  
43      public static Logger create(final Class<?> klass) {
44          return create(klass, null);
45      }
46  
47      public static Logger create(final Class<?> klass, final Formatter formatter, final Level level) {
48          return create(klass.getName(), formatter, level);
49      }
50  
51      public static void setLevel(final Logger logger, final Level level) {
52          logger.setLevel(level);
53          for (final Handler handler : logger.getHandlers()) {
54              handler.setLevel(level);
55          }
56      }
57  }