あるデータベースから別のデータベースにデータを移行するサンプル ジョブがいくつかあります。ジョブがアプリケーション自体から対話的に実行されたときのような、現在の進行状況に関する情報が必要です (コマンド ラインからエクスポートして実行します)。 )。私は flowMeter と statsCatcher を使用していますが、取得したのは全体の時間と渡されたレコードの全体の数です (例: 4657 秒、50.000.000 行)。まともなログを取得する解決策はありますか?
3 に答える
私の知る限りtLogRow
、コンソールに出力します。そのため、簡単に出力を差し込むことができます。
tLogRow
十分でない場合は、出力をTJavaFlex
コンポーネントに接続できます。そこでは、log4j や任意のカスタム出力などを使用できます。
tFileDelimitedOutput
ログファイルとしても使用できます。このコンポーネントには、このユースケースの魅力のように機能する優れた「追加」オプションがあります。
上記の質問に対して:ログ情報の取得方法
経験上、一部のコンポーネントがフローを出力することがわかります。たとえば、tMysqlInput
は正常に挿入された行を出力します。
通常、情報をログに記録するにtReplicate
は、フローのコピーをログ ファイルに出力できるコンポーネントを使用します。
tMySqlOutput ---- tReplicate ----- tMap -------- tMySqlInput (insert in DB)
+---- tMap -------- tDelimitedFile (log info)
tLogCatcher と組み合わせて tWarn を使用することもできます。
tMySqlOutput ---- tFilter ---- tWarn
tLogCatcher ---- tMap ---- tLogRow
tFilter を使用すると、行が完了するたびに進行状況をログに記録できなくなります (Gabriele B の回答を参照)。tWarn には、ログアウトする実際のメッセージが含まれます。
tLogCatcher はすべての tWarns から入力を取得する必要があり、tMapper は logCatcher からの各行を出力行に変換し、tLogRow はそれをログに記録します。
その答えは、より詳細に説明されています (写真付き): http://blog.wdcigroup.net/2012/05/error-handling-in-talend-using-tlogcatcher/