1

本番システム用のバッチ可能なクラスを作成しました。次のコードが機能しない場合、どのコードも機能しません。

コードは現在本番システムにあります。毎日サイトから毎日の為替レートを取得し、Currency__cレコードを作成します。為替レートが公開されていないときに機能する場合は、最終日の為替レートがかかります。しかし、それは私が望むようには機能しません。デバッグログでテストしたいと思います。

次のメソッド「getXML(Datetoday)」は、デバッグログを表示したときに呼び出されたことはありません。したがって、System.debug('test:' + result); また、呼び出したことはありません。

このログを確認するにはどうすればよいですか?

public String getXML(Date today){  
    counter += 1;       
    if(counter == 11) return '';
    try{
        Http h = new Http();
        HttpRequest req = new HttpRequest();       

        String m = today.month() + '';
        if((today.month()+'').length()==1) m = '0' + today.month();
        String d = today.day() + '';
        if((today.day()+'').length()==1) d = '0' + today.day();
        String donem = today.year() + '' + m;
        String formattedDate = d + '' + m + today.year();

        req.setEndpoint('http://www.tcmb.gov.tr/kurlar/' + donem + '/' + formattedDate + '.xml'); 
        req.setMethod('GET');            
        String result = '';
        if (!Test.isRunningTest()){
            HttpResponse res = h.send(req);
            result = res.getBody();
        }
        else {
            result += 'test';
        }         
        System.debug('test: ' + result);
        if(res.getStatusCode()==404){
            return getXML(today.addDays(-1));
        }   
        return result;
    }catch(Exception e){
        return getXML(today);
    }
}
4

2 に答える 2

1

私があなたの質問を理解している場合、それは「デバッグステートメントを含むコードがあります。このコードを単独で実行すると、これらのステートメントが表示されます。より大きなテストの一部として実行すると、デバッグステートメントは表示されません。あなたを導く行動が起こらなかったと考える」。

私は同様の問題に遭遇し、ブログhttp://sforcehacks.blogspot.ca/2014/01/debug-statements-stopped-working-on.htmlでそれについて話します

基本的に、トレース ファイルの合計サイズが大きくなりすぎると、Salesforce はデバッグ ステートメントをドロップするように見えます。エラー レベルでログに記録されるものも含まれます。

あなたの場合、バッチプロセスで何が起こっているかを追跡するためにデバッグステートメントに依存しません。代わりに、一時オブジェクト (テーブル) を作成し、getdate メソッドが呼び出されるたびにレコードを格納します。

于 2014-01-06T19:53:21.683 に答える
0

開発者コンソールを開いている場合は、実行中のバッチのログをキャプチャする必要があります。

または、 Monitor Debug Logsの手順に従ってください。

保存されたデバッグ ログを表示するには、[あなたの名前] | [名前] をクリックします。セットアップ | モニタリング | デバッグログ。

このページから [新規] をクリックして、デバッグ ログを保持するユーザーを指定します。

デバッグ ログの保持を開始すると、次のことが可能になります。
* [表示] をクリックして、特定のログの詳細を表示します。
* [ダウンロード] をクリックして、デバッグ ログを XML ファイルとしてダウンロードします。

いくつかのバッチ ジョブで、完了時に BatchableContext Status を含むメールを送信すると便利です - Batch Apex の完了時に通知を送信するを参照してください。

最後に、例外の原因によっては、例外処理によって再帰ループが作成される可能性があります。counterそれが警戒していると思います。コードが予想されるデバッグ行に到達する前に例外が発生している可能性があります。LoggingLevel.Error最初の引数として例外処理にデバッグ行を入れてみてください。

ログが大きくなりすぎてログ メッセージを表示できない場合は、ログ レベルを下げて、重要なログ メッセージを INFO または ERROR レベルに変更してみてください。

例えば

} catch(Exception e) {
    System.debug(LoggingLevel.Error, 'Exception:' + e);
    return getXML(today);
}
于 2013-03-02T05:53:28.303 に答える