Add Exception logs
This commit is contained in:
parent
f6d2d7f96f
commit
710e3eccb8
2 changed files with 50 additions and 0 deletions
|
@ -23,6 +23,7 @@ import dev.peerat.backend.routes.PuzzleResponse;
|
||||||
import dev.peerat.backend.routes.Result;
|
import dev.peerat.backend.routes.Result;
|
||||||
import dev.peerat.backend.routes.Swagger;
|
import dev.peerat.backend.routes.Swagger;
|
||||||
import dev.peerat.backend.routes.admins.DynamicLogs;
|
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.AddChapter;
|
||||||
import dev.peerat.backend.routes.admins.chapter.DeleteChapter;
|
import dev.peerat.backend.routes.admins.chapter.DeleteChapter;
|
||||||
import dev.peerat.backend.routes.admins.chapter.EditChapter;
|
import dev.peerat.backend.routes.admins.chapter.EditChapter;
|
||||||
|
@ -167,6 +168,7 @@ public class Main{
|
||||||
register(new ForgotPassword(router, repo, mail)).
|
register(new ForgotPassword(router, repo, mail)).
|
||||||
|
|
||||||
register(new DynamicLogs(router.getLogger(), repo)).
|
register(new DynamicLogs(router.getLogger(), repo)).
|
||||||
|
register(new ExceptionLogs(router.getExceptionLogger())).
|
||||||
register(new AddChapter(repo)).
|
register(new AddChapter(repo)).
|
||||||
register(new DeleteChapter(repo)).
|
register(new DeleteChapter(repo)).
|
||||||
register(new EditChapter(repo)).
|
register(new EditChapter(repo)).
|
||||||
|
|
48
src/dev/peerat/backend/routes/admins/ExceptionLogs.java
Normal file
48
src/dev/peerat/backend/routes/admins/ExceptionLogs.java
Normal 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue