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