NewRelicアプリケーションにエラー トラップを使用しているだけcoldboxです。メソッドからOnException、エラー構造体を送信してエラーを記録しています。
oneexception メソッドの私のコード
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()メソッドはオブジェクト内にありますが、引数でオーバーロードされていることがわかります。
フレームワークを使用せずに、別の Coldfusion プロジェクトで NewRelic エラー トラップに同じコードを使用しています。
次のように、タグと error.cfm 内のコードをerror.cfm介して呼び出すCferror
<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.ExceptionScopeColdbox アプリケーションおよび
coldfusion.runtime.UndefinedVariableException通常のコールドフュージョン アプリケーション用
引数は、causecoldbox アプリケーションからスローできません。では、coldbox アプリケーションから元のエラー構造体を取得するにはどうすればよいでしょうか? 問題を修正するためにスロー可能にしますnoticeError method was not found。
