15d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn/* 25d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * Copyright (C) 2011 The Android Open Source Project 35d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * 45d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License"); 55d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * you may not use this file except in compliance with the License. 65d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * You may obtain a copy of the License at 75d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * 85d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * http://www.apache.org/licenses/LICENSE-2.0 95d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * 105d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * Unless required by applicable law or agreed to in writing, software 115d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS, 125d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * See the License for the specific language governing permissions and 145d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * limitations under the License. 155d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn */ 165d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn 175d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackbornpackage android.util; 185d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn 195d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackbornimport java.io.Writer; 205d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn 215d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn/** @hide */ 225d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackbornpublic class LogWriter extends Writer { 235d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn private final int mPriority; 245d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn private final String mTag; 255d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn private final int mBuffer; 265d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn private StringBuilder mBuilder = new StringBuilder(128); 275d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn 285d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn /** 295d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * Create a new Writer that sends to the log with the given priority 305d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * and tag. 315d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * 325d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * @param priority The desired log priority: 335d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * {@link android.util.Log#VERBOSE Log.VERBOSE}, 345d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * {@link android.util.Log#DEBUG Log.DEBUG}, 355d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * {@link android.util.Log#INFO Log.INFO}, 365d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * {@link android.util.Log#WARN Log.WARN}, or 375d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * {@link android.util.Log#ERROR Log.ERROR}. 385d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * @param tag A string tag to associate with each printed log statement. 395d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn */ 405d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn public LogWriter(int priority, String tag) { 415d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn mPriority = priority; 425d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn mTag = tag; 435d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn mBuffer = Log.LOG_ID_MAIN; 445d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn } 455d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn 465d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn /** 475d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * @hide 485d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn * Same as above, but buffer is one of the LOG_ID_ constants from android.util.Log. 495d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn */ 505d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn public LogWriter(int priority, String tag, int buffer) { 515d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn mPriority = priority; 525d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn mTag = tag; 535d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn mBuffer = buffer; 545d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn } 555d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn 565d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn @Override public void close() { 575d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn flushBuilder(); 585d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn } 595d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn 605d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn @Override public void flush() { 615d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn flushBuilder(); 625d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn } 635d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn 645d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn @Override public void write(char[] buf, int offset, int count) { 655d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn for(int i = 0; i < count; i++) { 665d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn char c = buf[offset + i]; 675d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn if ( c == '\n') { 685d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn flushBuilder(); 695d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn } 705d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn else { 715d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn mBuilder.append(c); 725d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn } 735d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn } 745d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn } 755d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn 765d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn private void flushBuilder() { 775d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn if (mBuilder.length() > 0) { 785d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn Log.println_native(mBuffer, mPriority, mTag, mBuilder.toString()); 795d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn mBuilder.delete(0, mBuilder.length()); 805d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn } 815d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn } 825d9d03a0234faa3cffd11502f973057045cafe82Dianne Hackborn} 83