2015年12月26日土曜日

EGPからログを取り出す方法

SAS Enterprise Guide Projectファイルからログを取り出す方法を調べました。調べてみるといくつか技術的な課題あり、てこずったのでここに記しておきます。EGのバージョンは7.1です。さて、その方法ですが、4種類みつけました。

  1. OLE AutomationでVBScriptやPowerShellから取り出す
  2. EGのツール、オプションでカスタムコードを書いてログの出力先を変える
  3. EGPの拡張子をZIPに変えて、フォルダの中からログを取り出す
  4. EGのツール、オプション、Application Loggingでログを出力する


OLE AutomationからVBSやPowerShellでログを取り出す

この方法は、スケジューリングで出力されるVBSのファイルを開いて、手を加えればできます。しかしながら、クエリ、コードタスク以外のログが取れませんでした。ProjectItemsの中をループで探りましたがランクや転置などデータ加工のタスク、グラフ作成のタスクが捕捉できませんでした。何故かは分かっていませんが、そういう実装なのだと割り切って考えています。

EGのツール、オプションでカスタムコードを書いてログの出力先を変える

proc printtoでログの出力先を変えます。この方法が使えるかと思いきや、クライアント/サーバ構成だとログがサーバ上に出力されて、クライアントPCから参照するためにもう一工夫必要になりあます。サーバ側でログの加工をするのであれば、問題ありません。カスタムのコードを設定する箇所が複数ありますが、使い分けは調べてください。

EGPの拡張子をZIPに変えて、フォルダの中からログを取り出す

元ネタはココの記事です。試してみると、サブフォルダのなかにresult.logがありますので、これをピックアップすればログを抽出できます。サブフォルダの中を見ると、削除されたと思しきタスクの殻フォルダがいくつかあります。ゴミがあるやも知れないので、この方法を使うときには検証をしてください。Non Supportです。

Tools、Options、Application Loggingでログを出力する

元ネタはココです。カスタムコードでproc printtoと似ていますが、サーバが出力するコード以外のログが含まれます。


EGPからログを取り出すときの検討項目を挙げます。

  • プロジェクトファイル名を取得するか否か
  • ログは時系列で取り出す必要があるか
  • SASログ以外のログが含まれても良いか
  • ログの出力先はローカルのPC、又はサーバ上?
  • 抽出するファイルは1本にまとめるか、複数バラバラで良いか?

参考まで

0 件のコメント :

コメントを投稿