/* * This source is part of the * _____ ___ ____ * __ / / _ \/ _ | / __/___ _______ _ * / // / , _/ __ |/ _/_/ _ \/ __/ _ `/ * \___/_/|_/_/ |_/_/ (_)___/_/ \_, / * /___/ * repository. * * Copyright (C) 2015 Benoit 'BoD' Lubek (BoD@JRAF.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jraf.android.util.log.timber; public class LogcatTree extends TagAndMethodNameTree { private static final int MAX_LOG_LENGTH = 4000; public LogcatTree(String applicationTag) { super(applicationTag); } @Override protected void doLog(int priority, String tag, String methodName, String message, Throwable t) { message = methodName + " " + message; if (message.length() < MAX_LOG_LENGTH) { if (priority == android.util.Log.ASSERT) { android.util.Log.wtf(tag, message); } else { android.util.Log.println(priority, tag, message); } return; } // Split by line, then ensure each line can fit into Log's maximum length. for (int i = 0, length = message.length(); i < length; i++) { int newline = message.indexOf('\n', i); newline = newline != -1 ? newline : length; do { int end = Math.min(newline, i + MAX_LOG_LENGTH); String part = message.substring(i, end); if (priority == android.util.Log.ASSERT) { android.util.Log.wtf(tag, part); } else { android.util.Log.println(priority, tag, part); } i = end; } while (i < newline); } } }