From cf8002c0aa9d8065d81c8bc840f3c5c1f2e672df Mon Sep 17 00:00:00 2001 From: Gavriil Sitnikov Date: Tue, 26 Apr 2016 11:34:07 +0300 Subject: [PATCH] Lc fixes --- .../core/log/ConsoleLogProcessor.java | 55 +++++++------------ .../touchin/roboswag/core/log/LcHelper.java | 8 +-- .../roboswag/core/log/LogProcessor.java | 4 +- 3 files changed, 27 insertions(+), 40 deletions(-) diff --git a/src/main/java/ru/touchin/roboswag/core/log/ConsoleLogProcessor.java b/src/main/java/ru/touchin/roboswag/core/log/ConsoleLogProcessor.java index ca60a97..f57289e 100644 --- a/src/main/java/ru/touchin/roboswag/core/log/ConsoleLogProcessor.java +++ b/src/main/java/ru/touchin/roboswag/core/log/ConsoleLogProcessor.java @@ -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); } } + + } \ No newline at end of file diff --git a/src/main/java/ru/touchin/roboswag/core/log/LcHelper.java b/src/main/java/ru/touchin/roboswag/core/log/LcHelper.java index c91d190..f2da0ba 100644 --- a/src/main/java/ru/touchin/roboswag/core/log/LcHelper.java +++ b/src/main/java/ru/touchin/roboswag/core/log/LcHelper.java @@ -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; diff --git a/src/main/java/ru/touchin/roboswag/core/log/LogProcessor.java b/src/main/java/ru/touchin/roboswag/core/log/LogProcessor.java index fc93719..480dfbc 100644 --- a/src/main/java/ru/touchin/roboswag/core/log/LogProcessor.java +++ b/src/main/java/ru/touchin/roboswag/core/log/LogProcessor.java @@ -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); } \ No newline at end of file