Files
tlskit/net/DiagLog.java
2026-10-18 19:03:33 +02:00

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***");
}
}