48 lines
1.5 KiB
Java
48 lines
1.5 KiB
Java
package com.minamp.net;
|
|
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.ArrayList;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.Locale;
|
|
|
|
/**
|
|
* In-memory diagnostics log (last few hundred lines): every request with its status and timing,
|
|
* sign-in steps, stream attempts. Viewable in the app and savable to the SD card, so a problem
|
|
* on a real server can be reported precisely. Tokens are never logged.
|
|
*/
|
|
public final class DiagLog {
|
|
private static final int MAX = 400;
|
|
private static final List<String> lines = new ArrayList<String>();
|
|
private static final SimpleDateFormat fmt = new SimpleDateFormat("HH:mm:ss", Locale.US);
|
|
|
|
private DiagLog() {}
|
|
|
|
public static void log(String msg) {
|
|
String line;
|
|
synchronized (fmt) { line = fmt.format(new Date()) + " " + msg; }
|
|
synchronized (lines) {
|
|
lines.add(line);
|
|
if (lines.size() > MAX) lines.remove(0);
|
|
}
|
|
}
|
|
|
|
public static String dump() {
|
|
StringBuilder sb = new StringBuilder();
|
|
synchronized (lines) {
|
|
for (int i = 0; i < lines.size(); i++) sb.append(lines.get(i)).append('\n');
|
|
}
|
|
return sb.toString();
|
|
}
|
|
|
|
public static void clear() {
|
|
synchronized (lines) { lines.clear(); }
|
|
}
|
|
|
|
/** URL without the token value, safe to show and share. */
|
|
public static String redact(String url) {
|
|
if (url == null) return "";
|
|
return url.replaceAll("((?:X-Plex-Token|token|T|Passwd)=)[^&]*", "$1***");
|
|
}
|
|
}
|