Add Exception logs

This commit is contained in:
jeffcheasey88 2024-04-02 12:12:47 +02:00
parent f6d2d7f96f
commit 710e3eccb8
2 changed files with 50 additions and 0 deletions

View file

@ -23,6 +23,7 @@ import dev.peerat.backend.routes.PuzzleResponse;
import dev.peerat.backend.routes.Result;
import dev.peerat.backend.routes.Swagger;
import dev.peerat.backend.routes.admins.DynamicLogs;
import dev.peerat.backend.routes.admins.ExceptionLogs;
import dev.peerat.backend.routes.admins.chapter.AddChapter;
import dev.peerat.backend.routes.admins.chapter.DeleteChapter;
import dev.peerat.backend.routes.admins.chapter.EditChapter;
@ -167,6 +168,7 @@ public class Main{
register(new ForgotPassword(router, repo, mail)).
register(new DynamicLogs(router.getLogger(), repo)).
register(new ExceptionLogs(router.getExceptionLogger())).
register(new AddChapter(repo)).
register(new DeleteChapter(repo)).
register(new EditChapter(repo)).

View file

@ -0,0 +1,48 @@
package dev.peerat.backend.routes.admins;
import java.util.regex.Matcher;
import dev.peerat.framework.Context;
import dev.peerat.framework.HttpReader;
import dev.peerat.framework.HttpWriter;
import dev.peerat.framework.Locker;
import dev.peerat.framework.Locker.Key;
import dev.peerat.framework.Response;
import dev.peerat.framework.Route;
import dev.peerat.framework.utils.json.JsonArray;
import dev.peerat.framework.utils.json.JsonMap;
public class ExceptionLogs implements Response{
private Locker<Exception> locker;
public ExceptionLogs(Locker<Exception> locker){
this.locker = locker;
}
@Route(path = "^/admin/exceptions$", needLogin = true, websocket = true)
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
Key key = new Key();
locker.init(key);
try {
while(!reader.isClosed()){
locker.lock(key);
Exception exception = locker.getValue(key);
JsonMap json = new JsonMap();
json.set("type", exception.getClass().getSimpleName());
json.set("message", exception.getMessage());
JsonArray trace = new JsonArray();
for(StackTraceElement element : exception.getStackTrace()) trace.add(element.toString());
json.set("trace", trace);
writer.write(json.toString());
writer.flush();
}
}catch(Exception e){}
locker.remove(key);
}
}