4

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

4

1 に答える 1

3

基になるクラスの変更は、ColdBox が CFML のduplicate()メソッドを使用してエラー オブジェクトを複製するときに発生します。ColdFusion の動作がどこにも文書化されているとは思えませんが、java.langException の独自のインスタンスを作成し、元のエラーの詳細を入力する以外に、簡単に回避する方法が今のところ見つかりません。

ColdBox コア コードを変更する場合は、 https ://github.com/ColdBox/coldbox-platform/blob/master/system/web/context/ExceptionBean.cfc#L43 で行います。

フレームワークの将来のバージョンでエラー オブジェクトの複製を停止できるかどうかを確認するために、ColdBox フレームワークのこのチケットを入力しました。

https://ortussolutions.atlassian.net/browse/COLDBOX-476

更新: Adam Cameron が Adob​​e バグトラッカーでこのチケットを指摘し、エンジンでのこの動作について詳しく説明しています。「neverFix」としてクローズされました。

https://bugbase.adobe.com/index.cfm?event=bug&id=3976478

于 2015-10-05T20:26:03.733 に答える