1 /* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.util; 18 19 import java.io.Writer; 20 21 /** @hide */ 22 public class LogWriter extends Writer { 23 private final int mPriority; 24 private final String mTag; 25 private final int mBuffer; 26 private StringBuilder mBuilder = new StringBuilder(128); 27 28 /** 29 * Create a new Writer that sends to the log with the given priority 30 * and tag. 31 * 32 * @param priority The desired log priority: 33 * {@link android.util.Log#VERBOSE Log.VERBOSE}, 34 * {@link android.util.Log#DEBUG Log.DEBUG}, 35 * {@link android.util.Log#INFO Log.INFO}, 36 * {@link android.util.Log#WARN Log.WARN}, or 37 * {@link android.util.Log#ERROR Log.ERROR}. 38 * @param tag A string tag to associate with each printed log statement. 39 */ LogWriter(int priority, String tag)40 public LogWriter(int priority, String tag) { 41 mPriority = priority; 42 mTag = tag; 43 mBuffer = Log.LOG_ID_MAIN; 44 } 45 46 /** 47 * @hide 48 * Same as above, but buffer is one of the LOG_ID_ constants from android.util.Log. 49 */ LogWriter(int priority, String tag, int buffer)50 public LogWriter(int priority, String tag, int buffer) { 51 mPriority = priority; 52 mTag = tag; 53 mBuffer = buffer; 54 } 55 close()56 @Override public void close() { 57 flushBuilder(); 58 } 59 flush()60 @Override public void flush() { 61 flushBuilder(); 62 } 63 write(char[] buf, int offset, int count)64 @Override public void write(char[] buf, int offset, int count) { 65 for(int i = 0; i < count; i++) { 66 char c = buf[offset + i]; 67 if ( c == '\n') { 68 flushBuilder(); 69 } 70 else { 71 mBuilder.append(c); 72 } 73 } 74 } 75 flushBuilder()76 private void flushBuilder() { 77 if (mBuilder.length() > 0) { 78 Log.println_native(mBuffer, mPriority, mTag, mBuilder.toString()); 79 mBuilder.delete(0, mBuilder.length()); 80 } 81 } 82 } 83