| logThowableAsWarning(Throwable) |  | 0% |  | 0% | 2 | 2 | 5 | 5 | 1 | 1 |
| doesArgsHaveThrowable(Object[]) |   | 84% |   | 50% | 1 | 2 | 1 | 3 | 0 | 1 |
| sanitizeLogMessageInput(String) |   | 81% |   | 50% | 1 | 2 | 1 | 3 | 0 | 1 |
| performLogging(LogLevel, boolean, String, Object[]) |  | 100% |   | 88% | 2 | 11 | 0 | 23 | 0 | 1 |
| canLogAtLevel(LogLevel) |  | 100% |  | 100% | 0 | 6 | 0 | 8 | 0 | 1 |
| logThrowableAsWarning(Throwable) |  | 100% |  | 100% | 0 | 2 | 0 | 5 | 0 | 1 |
| logThrowableAsError(Throwable) |  | 100% |  | 100% | 0 | 2 | 0 | 5 | 0 | 1 |
| ClientLogger(String) |  | 100% |  | 100% | 0 | 2 | 0 | 4 | 0 | 1 |
| verbose(String, Object[]) |  | 100% |  | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
| info(String, Object[]) |  | 100% |  | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
| warning(String, Object[]) |  | 100% |  | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
| error(String, Object[]) |  | 100% |   | 50% | 1 | 2 | 0 | 3 | 0 | 1 |
| verbose(String) |  | 100% |  | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
| info(String) |  | 100% |  | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
| warning(String) |  | 100% |  | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
| error(String) |  | 100% |   | 50% | 1 | 2 | 0 | 3 | 0 | 1 |
| logExceptionAsWarning(RuntimeException) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| logExceptionAsError(RuntimeException) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| removeThrowable(Object[]) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| ClientLogger(Class) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| static {...} |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |