This commit is contained in:
Gavriil Sitnikov 2016-04-26 11:34:07 +03:00
parent 1ef901743c
commit cf8002c0aa
3 changed files with 27 additions and 40 deletions

View File

@ -20,48 +20,35 @@
package ru.touchin.roboswag.core.log;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;
public class ConsoleLogProcessor implements LogProcessor {
private static final int MAX_LOG_LENGTH = 4000;
@Override
public void processLogMessage(final int logLevel, final String tag, final String message) {
switch (logLevel) {
case Log.DEBUG:
Log.d(tag, message);
break;
case Log.INFO:
Log.i(tag, message);
break;
case Log.WARN:
Log.w(tag, message);
break;
case Log.ERROR:
case Log.ASSERT:
default:
Log.e(tag, message);
break;
}
public void processLogMessage(final int logLevel, @NonNull final String tag, @NonNull final String message) {
logMessage(logLevel, tag, message, null);
}
@Override
public void processLogMessage(final int logLevel, final String tag, final String message, @NonNull final Throwable ex) {
switch (logLevel) {
case Log.DEBUG:
Log.d(tag, message, ex);
break;
case Log.INFO:
Log.i(tag, message, ex);
break;
case Log.WARN:
Log.w(tag, message, ex);
break;
case Log.ERROR:
case Log.ASSERT:
Log.e(tag, message, ex);
break;
default:
throw new IllegalStateException("Unsupported log level: " + logLevel);
public void processLogMessage(final int logLevel, @NonNull final String tag, @NonNull final String message, @NonNull final Throwable throwable) {
logMessage(logLevel, tag, message, throwable);
}
private void logMessage(final int logLevel, @NonNull final String tag, @NonNull final String message, @Nullable final Throwable throwable) {
final String messageToLog = message + (throwable != null ? '\n' + Log.getStackTraceString(throwable) : "");
for (int i = 0, length = messageToLog.length(); i < length; i++) {
int newline = messageToLog.indexOf('\n', i);
newline = newline != -1 ? newline : length;
do {
int end = Math.min(newline, i + MAX_LOG_LENGTH);
Log.println(logLevel, tag, messageToLog.substring(i, end));
i = end;
} while (i < newline);
}
}
}

View File

@ -24,13 +24,13 @@ import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.util.Log;
import ru.touchin.roboswag.core.utils.ShouldNotHappenException;
import ru.touchin.roboswag.core.utils.ThreadLocalValue;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Locale;
import ru.touchin.roboswag.core.utils.ShouldNotHappenException;
import ru.touchin.roboswag.core.utils.ThreadLocalValue;
public final class LcHelper {
private static int logLevel;
@ -90,7 +90,7 @@ public final class LcHelper {
final String formattedMessage;
try {
formattedMessage = String.format(message, args);
formattedMessage = args.length > 0 ? String.format(message, args) : message;
} catch (final Throwable exception) {
Lc.assertion(exception);
return;

View File

@ -24,9 +24,9 @@ import android.support.annotation.NonNull;
public interface LogProcessor {
/* Processes log message (e.g. log it in Console or log it in Crashlytics) */
void processLogMessage(int logLevel, String tag, String message);
void processLogMessage(int logLevel, @NonNull String tag, @NonNull String message);
/* Processes log message with exception (e.g. log it in Console or log it in Crashlytics) */
void processLogMessage(int logLevel, String tag, String message, @NonNull Throwable ex);
void processLogMessage(int logLevel, @NonNull String tag, @NonNull String message, @NonNull Throwable ex);
}