gpt4 book ai didi

grails - 用于发送不返回完整堆栈跟踪的 log4j 错误的自定义电子邮件附加程序

转载 作者:行者123 更新时间:2023-12-05 01:02:56 25 4
gpt4 key购买 nike

我正在编写我自己的 CustomEmailAppender 来发送电子邮件以生成错误。

代码如下:

class CustomEmailAppender extends AppenderSkeleton {
def ctx = ApplicationHolder.getApplication().getMainContext()
def mailService = ctx.getBean('mailService')
def springSecurityService = ctx.getBean('springSecurityService')
def executorService = ctx.getBean('executorService')


public static void register() {
CustomEmailAppender appender = new CustomEmailAppender()
Logger.getRootLogger().addAppender(appender)
Logger.getLogger("StackTrace").addAppender(appender)
}

/**
* Constructor with default values.
*/
public CustomEmailAppender() {
setThreshold(Level.ERROR)
setLayout(new PatternLayout("%c{2} %m%n"))
}

/**
* {@inheritDoc}
*/
@Override
public void append(final LoggingEvent event) {

if (!event.getLevel().isGreaterOrEqual(Level.ERROR)) {
return
}

event.getThreadName()
event.getNDC()
event.getMDCCopy()
sendErrorEmail(layout.format(event))
}

/**
* {@inheritDoc}
* @see org.apache.log4j.AppenderSkeleton#close()
*/
public synchronized void close() {
closed = true
}

/**
* {@inheritDoc}
* @see org.apache.log4j.AppenderSkeleton#requiresLayout()
*/
public boolean requiresLayout() {
return true
}

void sendErrorEmail(String errorLogs) {
println "errorLogs.." + errorLogs
}
}

这里 errorLogs 只返回 log.error 消息,而不是完整的堆栈跟踪。

我希望通过电子邮件发送完整的堆栈跟踪。

谁能告诉我我还需要对上面的代码做哪些改进才能获得
errorLogs 参数中的完整堆栈跟踪。

任何指针?

最佳答案

从上面的 sendErrorEmail 方法传递事件参数&&使用下面的代码

    void sendErrorEmail(LoggingEvent event) {
StringBuffer buffer = new StringBuffer()
String header = layout.getHeader()
if(header != null){
buffer.append(header)
}
buffer.append(layout.format(event))
if(layout.ignoresThrowable()) {
String[] s = event.getThrowableStrRep()
if (s != null) {
for (int j = 0; j < s.length; j++) {
buffer.append(s[j])
buffer.append(Layout.LINE_SEP);
}
}
}
String footer = layout.getFooter()
if (footer != null) {
buffer.append(footer)
}
}

缓冲区变量将返回完整的堆栈跟踪。

关于grails - 用于发送不返回完整堆栈跟踪的 log4j 错误的自定义电子邮件附加程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25545893/

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