gpt4 book ai didi

java - 获取内存中的日志对象 - Logback

转载 作者:行者123 更新时间:2023-12-01 16:49:41 26 4
gpt4 key购买 nike

我在spring-boot 2.2.5.RELEASE中使用logback,我需要在内存中获取日志对象,以便我可以操纵信息并处理它。

我期望的是这样的。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Component
public class application {

Logger logger = LoggerFactory.getLogger(application.class);

public void executeTask(Integer queryMinutes) {
logger.info(INICIO_TRANSACCION, metodo);

try {
//Do something
//Log informative messages
} catch (DBException e) {
//Log ERROR messages
logger.error(MENSAJE_EXCEPCION + e, e);
logger.info(ROLBACK_TRANSACCION);

} finally {
//Here I need to call a method to further process the info printed in the log something like
logger.getMessage();
logger.getLineNumber();
logger.getThread();
callSomeMethod(logger);
logger.info(TIEMPO_PROCESO, (System.currentTimeMillis() - tiempoInicial));
logger.info(FIN_TRANSACCION, metodo);
}
}
}

我知道,当您使用附加程序时,我们通常会定义一个 ILoggingEvent 对象,这可以访问 logger.getMessage() 等,

问题是如何在我的 java 类中获取日志对象,以便我可以访问属性。

最佳答案

logback(和 log4j)的基本设计是它是程序的一部分,但对调用代码不可见。因此,您想要做的事情基本上违背了您想要使用的框架的精神,我建议您重新考虑。

实际上确保目标接收日志事件的组件的 logback 术语是“appender”。 http://logback.qos.ch/manual/appenders.html

问题是您想要使用非标准 API 发送邮件,否则您可能只使用标准 SMTPAppender ( http://logback.qos.ch/manual/appenders.html#SMTPAppender )

我建议要么子类化 SMTPAppender 来执行您想要的操作,要么编写一个实现 JavaMail API 的 javax.mail.Session 对象,并使用 JNDI 将其提供给库存 SMTPAppender。或者第三件事。只是不在您自己的代码部分中。

关于java - 获取内存中的日志对象 - Logback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61715542/

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