2016-08-24 2 views
0

현재 스케줄러를 통해 R 스크립트를 실행 중입니다. 때로는 R 스크립트로 인해 오류가 발생합니다 (아마도 입력 된 problmens로 인해). 각 실행 후, 기록 로그가있는 r-out 파일을 얻습니다. 이 로그는 모든 것이 계획대로 진행되었는지 확인하는 데 매우 유용하지만 불행히도 매일 덮어 씁니다. 내 질문은 지금 : 나는로깅을 위해 파일 이름에 날짜를 추가하는 방법

안부합니다 (그것에 날짜 예) 매일 다른 R 아웃 파일을 얻을 당신을 감사 할 수있는 방법, 필

+1

일부 코드가 있습니까? http://stackoverflow.com/help/how-to-ask –

+0

오류를 재현하는 데 도움이되는 코드를 추가하는 것이 좋습니다. –

+0

예, rHertel. 이 코드는 원격으로 트리거 된 이후 각 콘솔 실행을 위해 내 콘솔 출력을 얻는 방법보다는 여기서 문제가되지 않습니다. 아래 답변을 좋아하지만 콘솔 출력을 어떻게 채울 수 있습니까? – Phil

답변

2

현재 날짜를 포함하는 파일 이름을 생성하려면 Sys.Date()의 출력을 취하여 paste0을 사용하여 날짜를 포함하여 파일의 이름을 구성 할 수 있습니다. 이 같은

아마 뭔가 :이가 (이 생각 나게 @Konrad 덕분에) 필요한 경우

filename <- paste0("R-out_", Sys.Date(), ".log") 
#> filename 
#[1] "R-out_2016-08-24.log" 

날짜의 형식은 format() 변경할 수 있습니다. 예를 들어, 우리는 유럽에서, 예를 들어 일반적으로 사용되는 일 - 월 - 년 양식을 얻기 위해 format(Sys.Date(), "%d-%m-%Y")을 사용할 수

filename <- paste0("R-out_", format(Sys.Date(), "%d-%m-%Y"), ".log") 

우리는의 콘솔 (표준) 출력을 리디렉션 sink()을 사용할 수 있습니다 스크립트 파일. 상술 한 바와 같이이 경우에는 스크립트가 아무는 표준 출력에 표시되기 전에 스크립트 파일에 삽입되어야하는 명령

sink(filename) 

이어서 상기 filename의 정의를 포함하도록 수정 될 수있다. 아마도이 두 줄 (파일 이름 및 sink 명령의 정의)은 맨 처음에 배치 될 수 있지만 먼저 출력 디렉토리를 지정하려면 setwd(<pathToMyOutputDirectory>)을 사용하는 것이 좋습니다. sink(filename) 명령 다음에 콘솔에 일반적으로 표시되는 출력은 filename에 저장된 문자열에 따라 호출 된 파일에 저장됩니다. 스크립트가 끝나면 아무런 매개 변수없이 sink()을 사용하여 표준 출력의 기본 설정을 복원하는 것이 좋습니다 (또는 sink(file = NULL)).

+1

'Sys.Date()'호출을'format()'에 캡슐화하여 이름에'_' 기호를 사용하는 것과 일치하도록하는 것이 유용 할 수 있다고 덧붙이고 싶었습니다 :'format (Sys.Date(), "% d_ % m_ % y")'. – Konrad

+0

또한 ISO 8601 날짜 표준 (fmt = "% Y- % m- % d")을 사용하는 것이 좋습니다. 파일이 날짜순으로 정렬되어 찾기 쉽기 때문입니다. 장기간에 두통이 덜합니다. – NJBurgo

+0

스크립트는 배치 파일을 통해 트리거됩니다 (다시 스케쥴러를 통해 트리거 됨). 스크립트 내에서 r.out 파일을 만드는 명령이 없으므로 배치 파일에서 수행하지만 배치 파일 내에서 조정하는 방법을 모르겠습니다. – Phil

관련 문제