Skip to content

Commit

Permalink
Adds logging levels - addresses issue aws-amplify#1174
Browse files Browse the repository at this point in the history
  • Loading branch information
TrekSoft committed Oct 31, 2019
1 parent 3e18be2 commit c4942e4
Show file tree
Hide file tree
Showing 5 changed files with 173 additions and 31 deletions.
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Change Log - AWS SDK for Android

## [Release 2.16.3](https://github.com/aws/aws-sdk-android/releases/tag/release_v2.16.3)

### New Features

- **AWS Core**
- Now supports calling LogFactory.setLevel(Level) to set a global level of which logs will be output. Any logs below the set level will not be output
You can also call Log.setLevel(Level) on a specific Logger to limit the logs which are output by a specific class. Addresses issue #1174

## [Release 2.16.2](https://github.com/aws/aws-sdk-android/releases/tag/release_v2.16.2)

### New Features
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ public class AndroidLog implements com.amazonaws.logging.Log {
/** Tag for the log message */
private final String tag;

/** If set, only this level and above logs will be output by this logger **/
private LogFactory.Level level = null;

/**
*
* @param tag The tag that is present in
Expand All @@ -37,76 +40,118 @@ public AndroidLog(final String tag) {

@Override
public boolean isDebugEnabled() {
return Log.isLoggable(tag, Log.DEBUG);
return Log.isLoggable(tag, Log.DEBUG) &&
(getLevel() == null || getLevel().getValue() <= LogFactory.Level.DEBUG.getValue());
}

@Override
public boolean isErrorEnabled() {
return Log.isLoggable(tag, Log.ERROR);
return Log.isLoggable(tag, Log.ERROR) &&
(getLevel() == null || getLevel().getValue() <= LogFactory.Level.ERROR.getValue());
}

@Override
public boolean isInfoEnabled() {
return Log.isLoggable(tag, Log.INFO);
return Log.isLoggable(tag, Log.INFO) &&
(getLevel() == null || getLevel().getValue() <= LogFactory.Level.INFO.getValue());
}

@Override
public boolean isTraceEnabled() {
return Log.isLoggable(tag, Log.VERBOSE);
return Log.isLoggable(tag, Log.VERBOSE) &&
(getLevel() == null || getLevel().getValue() <= LogFactory.Level.TRACE.getValue());
}

@Override
public boolean isWarnEnabled() {
return Log.isLoggable(tag, Log.WARN);
return Log.isLoggable(tag, Log.WARN) &&
(getLevel() == null || getLevel().getValue() <= LogFactory.Level.WARN.getValue());
}

@Override
public void trace(Object message) {
Log.v(tag, message.toString());
if (getLevel() == null || getLevel().getValue() <= LogFactory.Level.TRACE.getValue()) {
Log.v(tag, message.toString());
}
}

@Override
public void trace(Object message, Throwable t) {
Log.v(tag, message.toString(), t);
if (getLevel() == null || getLevel().getValue() <= LogFactory.Level.TRACE.getValue()) {
Log.v(tag, message.toString(), t);
}
}

@Override
public void debug(Object message) {
Log.d(tag, message.toString());
if (getLevel() == null || getLevel().getValue() <= LogFactory.Level.DEBUG.getValue()) {
Log.d(tag, message.toString());
}
}

@Override
public void debug(Object message, Throwable t) {
Log.d(tag, message.toString(), t);
if (getLevel() == null || getLevel().getValue() <= LogFactory.Level.DEBUG.getValue()) {
Log.d(tag, message.toString(), t);
}
}

@Override
public void info(Object message) {
Log.i(tag, message.toString());
if (getLevel() == null || getLevel().getValue() <= LogFactory.Level.INFO.getValue()) {
Log.i(tag, message.toString());
}
}

@Override
public void info(Object message, Throwable t) {
Log.i(tag, message.toString(), t);
if (getLevel() == null || getLevel().getValue() <= LogFactory.Level.INFO.getValue()) {
Log.i(tag, message.toString(), t);
}
}

@Override
public void warn(Object message) {
Log.w(tag, message.toString());
if (getLevel() == null || getLevel().getValue() <= LogFactory.Level.WARN.getValue()) {
Log.w(tag, message.toString());
}
}

@Override
public void warn(Object message, Throwable t) {
Log.w(tag, message.toString(), t);
if (getLevel() == null || getLevel().getValue() <= LogFactory.Level.WARN.getValue()) {
Log.w(tag, message.toString(), t);
}
}

@Override
public void error(Object message) {
Log.e(tag, message.toString());
if (getLevel() == null || getLevel().getValue() <= LogFactory.Level.ERROR.getValue()) {
Log.e(tag, message.toString());
}
}

@Override
public void error(Object message, Throwable t) {
Log.e(tag, message.toString(), t);
if (getLevel() == null || getLevel().getValue() <= LogFactory.Level.ERROR.getValue()) {
Log.e(tag, message.toString(), t);
}
}

@Override
public void setLevel(LogFactory.Level level) {
this.level = level;
}

/**
* Checks whether a log level has been set either at the local level or, if not, the global one
* @return Appropriate log level if one has been set by the user
*/
private LogFactory.Level getLevel() {
if (level != null) {
return level;
} else {
return LogFactory.getLevel();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.amazonaws.logging.LogFactory.Level;

/**
* This is a wrapper over the Apache Commons
Expand All @@ -28,6 +29,9 @@ public class ApacheCommonsLogging implements com.amazonaws.logging.Log {
private String logString;
private Log log;

/** If set, only this level and above logs will be output by this logger **/
private Level level = null;

/**
* @param logClass the class object
*/
Expand Down Expand Up @@ -55,7 +59,8 @@ public ApacheCommonsLogging(String logString) {
*/
@Override
public boolean isDebugEnabled() {
return this.log.isDebugEnabled();
return this.log.isDebugEnabled() &&
(getLevel() == null || getLevel().getValue() <= Level.DEBUG.getValue());
}

/**
Expand All @@ -69,7 +74,8 @@ public boolean isDebugEnabled() {
*/
@Override
public boolean isErrorEnabled() {
return this.log.isErrorEnabled();
return this.log.isErrorEnabled() &&
(getLevel() == null || getLevel().getValue() <= Level.ERROR.getValue());
}


Expand All @@ -84,7 +90,8 @@ public boolean isErrorEnabled() {
*/
@Override
public boolean isInfoEnabled() {
return this.log.isInfoEnabled();
return this.log.isInfoEnabled() &&
(getLevel() == null || getLevel().getValue() <= Level.INFO.getValue());
}

/**
Expand All @@ -98,7 +105,8 @@ public boolean isInfoEnabled() {
*/
@Override
public boolean isTraceEnabled() {
return this.log.isTraceEnabled();
return this.log.isTraceEnabled() &&
(getLevel() == null || getLevel().getValue() <= Level.TRACE.getValue());
}

/**
Expand All @@ -112,7 +120,8 @@ public boolean isTraceEnabled() {
*/
@Override
public boolean isWarnEnabled() {
return this.log.isWarnEnabled();
return this.log.isWarnEnabled() &&
(getLevel() == null || getLevel().getValue() <= Level.WARN.getValue());
}

/**
Expand All @@ -122,7 +131,9 @@ public boolean isWarnEnabled() {
*/
@Override
public void trace(Object message) {
this.log.trace(message);
if (getLevel() == null || getLevel().getValue() <= Level.TRACE.getValue()) {
this.log.trace(message);
}
}

/**
Expand All @@ -133,7 +144,9 @@ public void trace(Object message) {
*/
@Override
public void trace(Object message, Throwable t) {
this.log.trace(message, t);
if (getLevel() == null || getLevel().getValue() <= Level.TRACE.getValue()) {
this.log.trace(message, t);
}
}

/**
Expand All @@ -143,7 +156,9 @@ public void trace(Object message, Throwable t) {
*/
@Override
public void debug(Object message) {
this.log.debug(message);
if (getLevel() == null || getLevel().getValue() <= Level.DEBUG.getValue()) {
this.log.debug(message);
}
}

/**
Expand All @@ -154,7 +169,9 @@ public void debug(Object message) {
*/
@Override
public void debug(Object message, Throwable t) {
this.log.debug(message, t);
if (getLevel() == null || getLevel().getValue() <= Level.DEBUG.getValue()) {
this.log.debug(message, t);
}
}

/**
Expand All @@ -164,7 +181,9 @@ public void debug(Object message, Throwable t) {
*/
@Override
public void info(Object message) {
this.log.info(message);
if (getLevel() == null || getLevel().getValue() <= Level.INFO.getValue()) {
this.log.info(message);
}
}

/**
Expand All @@ -175,7 +194,9 @@ public void info(Object message) {
*/
@Override
public void info(Object message, Throwable t) {
this.log.info(message, t);
if (getLevel() == null || getLevel().getValue() <= Level.INFO.getValue()) {
this.log.info(message, t);
}
}

/**
Expand All @@ -185,7 +206,9 @@ public void info(Object message, Throwable t) {
*/
@Override
public void warn(Object message) {
this.log.warn(message);
if (getLevel() == null || getLevel().getValue() <= Level.WARN.getValue()) {
this.log.warn(message);
}
}

/**
Expand All @@ -196,7 +219,9 @@ public void warn(Object message) {
*/
@Override
public void warn(Object message, Throwable t) {
this.log.warn(message, t);
if (getLevel() == null || getLevel().getValue() <= Level.WARN.getValue()) {
this.log.warn(message, t);
}
}

/**
Expand All @@ -206,7 +231,9 @@ public void warn(Object message, Throwable t) {
*/
@Override
public void error(Object message) {
this.log.error(message);
if (getLevel() == null || getLevel().getValue() <= Level.ERROR.getValue()) {
this.log.error(message);
}
}

/**
Expand All @@ -217,6 +244,30 @@ public void error(Object message) {
*/
@Override
public void error(Object message, Throwable t) {
this.log.error(message, t);
if (getLevel() == null || getLevel().getValue() <= Level.ERROR.getValue()) {
this.log.error(message, t);
}
}

/**
* <p> Set the level of logs which will be output for this particular logger. </p>
*
* @param level Only logs of this level and above will now be output
*/
@Override
public void setLevel(Level level) {
this.level = level;
}

/**
* Checks whether a log level has been set either at the local level or, if not, the global one
* @return Appropriate log level if one has been set by the user
*/
private Level getLevel() {
if (level != null) {
return level;
} else {
return com.amazonaws.logging.LogFactory.getLevel();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -211,4 +211,11 @@ public interface Log {
* @param t log this cause
*/
public void error(Object message, Throwable t);

/**
* <p> Set the level of logs which will be output for this particular logger. </p>
*
* @param level Only logs of this level and above will now be output
*/
public void setLevel(LogFactory.Level level);
}
Loading

0 comments on commit c4942e4

Please sign in to comment.