2017-11-27 45 views
2

ログとプロシージャの出力を対話型sasセッションで同じ宛先ファイルにリダイレクトしようとしているので、tail -fこのファイルにproc printto:同じファイルへのログ出力とプロシージャ出力がログ出力に出力されない

だから、私は

proc printo print = "/home/tq84/sas.log"; run; 
proc printo log = "/home/tq84/sas.log"; run; 

を行う私はオプションwrite=immediateからlogparmを設定しています。

%put text;でログに書き込もうとするとすぐに/home/tq84/sas.logに書き込まれません。

しかし、単純なproc sql; quit;を実行すると、以前バッファされたログ出力は/home/tq84/sas.logにフラッシュされます。

ログとプロシージャの両方の出力を同じファイルに書き込んで、すぐに両方を書き出す方法を探しています。

+0

PUTでは何が起こりますか?%記号はありませんか? – Reeza

+0

これは設計どおりに動作していると思います。私は '%put'がログ書き込みアクションを引き起こすとは思わない(つまり、.NETやEGで何かを使用しない限り、基本的には不可能である)。私はこれがおそらくSAS-Lで始まったと思うので、ドキュメントを探します。 – Joe

+0

'proc printto print = ...'( 'proc printto log = ...'のみ)を呼び出さなければ、即座に '%put'がログファイルに出力されます。 –

答えて

4

これは私のために働く。

C:\temp>sas -logparm "write=immediate" 

私は、問題とSASを起動する

proc printto print="c:\temp\test.log"; 
run; 
proc printto log="c:\temp\test.log"; 
run; 

は、私はファイルがない場合、それはリフレッシュした崇高なテキストでログファイルを開きます。

その後提出:私はPROC文を発行するまで、ログに出力しない

%put HI THERE!; 

を。 (データのステップがあまりにもうまくいくと仮定。)

を私はセッションを再起動し、PRINTTO

proc printto log="c:\temp\test.log"; 
run; 
proc printto print="c:\temp\test.log"; 
run; 

の順序を変更する場合は、

%put HI THERE!; 

はできるだけ早くログに移動します。

+0

私の推測では、SAS内部の優先処理のために注文が問題になると思います。最後に提出されたものが優先されます。 'PRINT'が最後であれば、SASは何かを通過するまで保持します(つまりPROC SQL)。ちょうど推測。 – DomPazz

関連する問題