001package com.box.sdk;
002
003import static java.util.logging.Level.ALL;
004import static java.util.logging.Level.FINE;
005import static java.util.logging.Level.INFO;
006import static java.util.logging.Level.OFF;
007import static java.util.logging.Level.SEVERE;
008import static java.util.logging.Level.WARNING;
009
010import java.util.logging.Handler;
011import java.util.logging.Level;
012import java.util.logging.Logger;
013
014/** Logger class. */
015public final class BoxLogger {
016  private static final BoxLogger DEFAULT_LOGGER = new BoxLogger("com.box.sdk");
017  private final Logger logger;
018
019  private BoxLogger(String name) {
020    logger = Logger.getLogger(name);
021  }
022
023  /**
024   * Get logger instance
025   *
026   * @return logger instance.
027   */
028  public static BoxLogger defaultLogger() {
029    return DEFAULT_LOGGER;
030  }
031
032  /**
033   * Log message with level DEBUG {@link Level#FINE}
034   *
035   * @param message message to log
036   */
037  public void debug(String message) {
038    logger.fine(message);
039  }
040
041  /**
042   * Log message with level INFO {@link Level#INFO}
043   *
044   * @param message message to log
045   */
046  public void info(String message) {
047    logger.info(message);
048  }
049
050  /**
051   * Log message with level WARNING {@link Level#WARNING}
052   *
053   * @param message message to log
054   */
055  public void warn(String message) {
056    logger.warning(message);
057  }
058
059  /**
060   * Log message with level WARNING {@link Level#SEVERE}
061   *
062   * @param message message to log
063   */
064  public void error(String message) {
065    logger.severe(message);
066  }
067
068  /**
069   * Check if DEBUG level is enabled
070   *
071   * @return true if DEBUG level is enabled
072   */
073  public boolean isDebugEnabled() {
074    return logger.isLoggable(FINE);
075  }
076
077  /**
078   * Check if INFO level is enabled
079   *
080   * @return true if INFO level is enabled
081   */
082  public boolean isInfoEnabled() {
083    return logger.isLoggable(INFO);
084  }
085
086  /**
087   * Check if WARN level is enabled
088   *
089   * @return true if WARN level is enabled
090   */
091  public boolean isWarnEnabled() {
092    return logger.isLoggable(WARNING);
093  }
094
095  /**
096   * Check if ERROR level is enabled
097   *
098   * @return true if ERROR level is enabled
099   */
100  public boolean isErrorEnabled() {
101    return logger.isLoggable(SEVERE);
102  }
103
104  /** Set logging level to ALL {@link Level#ALL} */
105  public void setLevelToAll() {
106    this.logger.setLevel(ALL);
107  }
108
109  /** Reset logging level to default. */
110  public void resetToDefaultLevel() {
111    this.logger.setLevel(null);
112  }
113
114  /** Set logging level to INFO {@link Level#INFO} */
115  public void setLevelToInfo() {
116    this.logger.setLevel(INFO);
117  }
118
119  /** Set logging level to WARNING {@link Level#WARNING} */
120  public void setLevelToWarning() {
121    this.logger.setLevel(WARNING);
122  }
123
124  /** Set logging level to ERROR {@link Level#SEVERE} */
125  public void setLevelToError() {
126    this.logger.setLevel(SEVERE);
127  }
128
129  /** Turns logging off */
130  public void turnLoggingOff() {
131    this.logger.setLevel(OFF);
132  }
133
134  /**
135   * Specify whether this logger should send its output to its parent Logger. This means that any
136   * LogRecords will also be written to the parent's Handlers, and potentially to its parent,
137   * recursively up the namespace.
138   *
139   * @param useParentHandlers true if output is to be sent to the logger's parent.
140   * @throws SecurityException if a security manager exists, this logger is not anonymous, and the
141   *     caller does not have LoggingPermission("control").
142   */
143  public void setUseParentHandlers(boolean useParentHandlers) {
144    this.logger.setUseParentHandlers(useParentHandlers);
145  }
146
147  /**
148   * Adds handler to logger. Check {@link Logger#addHandler(Handler)}
149   *
150   * @param handler a logging handler to add.
151   */
152  public void addHandler(Handler handler) {
153    logger.addHandler(handler);
154  }
155
156  /**
157   * Removes handler from logger. Will not fail if handler is null or not registered. Check {@link
158   * Logger#removeHandler(Handler)}
159   *
160   * @param handler a logging handler to remove.
161   */
162  public void removeHandler(Handler handler) {
163    logger.removeHandler(handler);
164  }
165}