2017-11-27 22 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