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