LocalLog.java revision c520aa89a33ddb7c065ef06bcd2d2dbf96e1f989
148486893f46d2e12e926682a3ecb908716bc66c4Chris Lattner/* 29769ab22265b313171d201b5928688524a01bd87Misha Brukman * Copyright (C) 2006 The Android Open Source Project 36fbcc26f1460eaee4e0eb8b426fc1ff0c7af11beJohn Criswell * 46fbcc26f1460eaee4e0eb8b426fc1ff0c7af11beJohn Criswell * Licensed under the Apache License, Version 2.0 (the "License"); 57ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner * you may not use this file except in compliance with the License. 67ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner * You may obtain a copy of the License at 79769ab22265b313171d201b5928688524a01bd87Misha Brukman * 86fbcc26f1460eaee4e0eb8b426fc1ff0c7af11beJohn Criswell * http://www.apache.org/licenses/LICENSE-2.0 9febdf58538c2510ec1c24d3a856420792c53debeChris Lattner * 10bddcb9427cb36ac6609fef233eaac3c9b5e5a8f4Reid Spencer * Unless required by applicable law or agreed to in writing, software 1102dea8b39f3acad5de1df36273444d149145e7fcDan Gohman * distributed under the License is distributed on an "AS IS" BASIS, 12009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner * See the License for the specific language governing permissions and 14009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner * limitations under the License. 15009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner */ 16009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner 1718961504fc2b299578dba817900a0696cf3ccc4dChris Lattnerpackage android.util; 1818961504fc2b299578dba817900a0696cf3ccc4dChris Lattner 1943d1fd449f1a0ac9d9dafa0b9569bb6b2e976198Anton Korobeynikovimport android.text.format.Time; 20ef547ddcdd6e49bb6f019ac5fb080d2f317e43a9Chris Lattner 21009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattnerimport java.io.FileDescriptor; 22d0fde30ce850b78371fd1386338350591f9ff494Brian Gaekeimport java.io.PrintWriter; 23d0fde30ce850b78371fd1386338350591f9ff494Brian Gaekeimport java.util.Calendar; 24009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattnerimport java.util.Iterator; 25009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattnerimport java.util.LinkedList; 2618961504fc2b299578dba817900a0696cf3ccc4dChris Lattner 2717fcdd5e1b78b829068ca657c97357a39d6e768bChris Lattner/** 287eef1800ea8745a814b86c8610086e9f16312dcaGabor Greif * @hide 297eef1800ea8745a814b86c8610086e9f16312dcaGabor Greif */ 307eef1800ea8745a814b86c8610086e9f16312dcaGabor Greifpublic final class LocalLog { 317eef1800ea8745a814b86c8610086e9f16312dcaGabor Greif 320a0e68a7eac0513505aff3079e2d5d6864e51895Gabor Greif private LinkedList<String> mLog; 337eef1800ea8745a814b86c8610086e9f16312dcaGabor Greif private int mMaxLines; 347eef1800ea8745a814b86c8610086e9f16312dcaGabor Greif private long mNow; 357eef1800ea8745a814b86c8610086e9f16312dcaGabor Greif 367eef1800ea8745a814b86c8610086e9f16312dcaGabor Greif public LocalLog(int maxLines) { 377eef1800ea8745a814b86c8610086e9f16312dcaGabor Greif mLog = new LinkedList<String>(); 387eef1800ea8745a814b86c8610086e9f16312dcaGabor Greif mMaxLines = maxLines; 391a31d09a16b0b8eaa08c8649bd8673ddb0ad1841Gabor Greif } 407eef1800ea8745a814b86c8610086e9f16312dcaGabor Greif 411012919ed8b3e2cd4b421c104ce9d8f4e20ced9dGabor Greif public synchronized void log(String msg) { 420a0e68a7eac0513505aff3079e2d5d6864e51895Gabor Greif if (mMaxLines > 0) { 437eef1800ea8745a814b86c8610086e9f16312dcaGabor Greif mNow = System.currentTimeMillis(); 4418961504fc2b299578dba817900a0696cf3ccc4dChris Lattner StringBuilder sb = new StringBuilder(); 4517fcdd5e1b78b829068ca657c97357a39d6e768bChris Lattner Calendar c = Calendar.getInstance(); 46f8dfef74376dd85f37601855f7519d8256700dabChris Lattner c.setTimeInMillis(mNow); 470a0e68a7eac0513505aff3079e2d5d6864e51895Gabor Greif sb.append(String.format("%tm-%td %tH:%tM:%tS.%tL", c, c, c, c, c, c)); 481012919ed8b3e2cd4b421c104ce9d8f4e20ced9dGabor Greif mLog.add(sb.toString() + " - " + msg); 4918961504fc2b299578dba817900a0696cf3ccc4dChris Lattner while (mLog.size() > mMaxLines) mLog.remove(); 5018961504fc2b299578dba817900a0696cf3ccc4dChris Lattner } 51bddcb9427cb36ac6609fef233eaac3c9b5e5a8f4Reid Spencer } 52bddcb9427cb36ac6609fef233eaac3c9b5e5a8f4Reid Spencer 53bddcb9427cb36ac6609fef233eaac3c9b5e5a8f4Reid Spencer public synchronized void dump(FileDescriptor fd, PrintWriter pw, String[] args) { 54bddcb9427cb36ac6609fef233eaac3c9b5e5a8f4Reid Spencer Iterator<String> itr = mLog.listIterator(0); 55bddcb9427cb36ac6609fef233eaac3c9b5e5a8f4Reid Spencer while (itr.hasNext()) { 56bddcb9427cb36ac6609fef233eaac3c9b5e5a8f4Reid Spencer pw.println(itr.next()); 57bddcb9427cb36ac6609fef233eaac3c9b5e5a8f4Reid Spencer } 58bddcb9427cb36ac6609fef233eaac3c9b5e5a8f4Reid Spencer } 59bddcb9427cb36ac6609fef233eaac3c9b5e5a8f4Reid Spencer} 60bddcb9427cb36ac6609fef233eaac3c9b5e5a8f4Reid Spencer