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