【发布时间】:2015-10-06 05:53:35
【问题描述】:
我只是为我的coldbox 应用程序使用NewRelic 错误捕获。从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 错误捕获。
通过Cferror标签调用error.cfm,error.cfm中的代码如下
<cfset Application.newRelic.logError( variables.error )>
在 NewRelic.cfc 中,logerror() 方法包含与冷箱应用程序中相同的代码。 但它在 NewRelic 中记录错误,没有任何问题。
这是我需要注意错误并将其记录在 NewRelic 中的方法。
noticeError(java.lang.Throwable, java.util.Map)
所以我只是想通过以下代码从 NewRelic.cfc 的 logError() 中的两个应用程序中获取第一个参数 Cause 的类名,以获得差异。
writeDump(cause.getClass().getName());
我来了
coldfusion.runtime.ExceptionScope 用于冷箱应用程序
和
coldfusion.runtime.UndefinedVariableException 用于普通冷熔应用
cause 参数不能从冷箱应用程序中抛出。那么如何从冷箱应用程序中获取原始错误结构呢?并使其可抛出以修复 noticeError method was not found 问题。
【问题讨论】:
-
这是 ColdFusion 中的一个已知问题:bugbase.adobe.com/index.cfm?event=bug&id=3976478。 Adobe 对修复它不感兴趣。
-
@AdamCameron 哦!好的,谢谢你的信息。
标签: exception-handling coldfusion newrelic coldbox