gpt4 book ai didi

错误跟踪日志记录的 Java 实现

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:25:49 26 4
gpt4 key购买 nike

This blog post描述了一种有趣的日志记录方法:

When activated, if an exception (e.g. a NullPointerException) is thrown, the complete trace of the session up to that point is output, in addition to the stack trace. It works by starting session logging for every session, but only outputting the result if an exception occurs.

在任何 Java 日志框架中是否有它的实现?

最佳答案

据我所知,编写一个委托(delegate)给相应 session 日志的自定义附加程序是很有可能的。对于 Logback,这可能是这样的:

class SessionLogAppender implements Appender<ILogEvent> {
private static final TheadLocal<Object> sessionHolder = new ThreadLocal<Object>();

private Map<Object, SessionLog> sessionLogs = new ConcurrentHashMap<>();

/** must be invoked when a new session begins */
public static void begin(Object session) {
sessionHolder.set(session);
}

/** must be invoked when a session ends */
public static void end() {
Object session = sessionHolder.get();
writeIfNecessary(sessionLogs.get(session));
sessionLogs.remove(session);

sessionHolder.clear();
}

@Override
public void doAppend(ILogEvent e) {
Object session = sessionHolder.get();
SessionLog l = sessionLogs.get(session);
if (l == null) {
l = new SessionLog();
sessionLogs.put(session, l);
}
l.append(e);
}
}

这假设每个 session 都由一个专用线程处理。

关于错误跟踪日志记录的 Java 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21570965/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com