我只是NewRelic
为我的应用程序使用错误捕获coldbox
。从OnException
方法中,我只是发送错误结构来记录错误。
我在一个异常方法中的代码
public function onException(event,rc,prc){
NewRelic.logError( prc.exception.getExceptionStruct());
}
logerror() 方法位于 NewRelic.cfc 中,包含以下代码
public boolean function logError(
required struct exception
) {
var cause = arguments.exception;
var params = {
error_id = createUUID(),
type: arguments.exception.type,
message: arguments.exception.message
};
writeDump(this.newRelic);
this.newRelic.noticeError(cause, params);abort;
return true;
}
所以虽然出错,但我得到了以下错误。
未找到 noticeError 方法。
您可以看到,该noticeError()
方法存在于对象中,但它被参数重载了。
我在另一个没有任何框架的冷融合项目中使用相同的代码进行 NewRelic 错误捕获。
error.cfm
通过tag调用Cferror
,error.cfm中的代码如下
<cfset Application.newRelic.logError( variables.error )>
在 NewRelic.cfc 中,该logerror()
方法包含与冷箱应用程序中相同的代码。但它在 NewRelic 中记录错误,没有任何问题。
这是我需要注意错误并将其记录在 NewRelic 中的方法。
noticeError(java.lang.Throwable, java.util.Map)
所以我只是想Cause
通过以下代码从 NewRelic.cfc 的 logError() 中的两个应用程序中获取第一个参数的类名,以获得差异。
writeDump(cause.getClass().getName());
我越来越
coldfusion.runtime.ExceptionScope
用于冷箱应用和
coldfusion.runtime.UndefinedVariableException
普通冷熔应用
该cause
参数不能从冷箱应用程序中抛出。那么如何从冷箱应用程序中获取原始错误结构呢?并使其可以解决noticeError method was not found
问题。