2009-12-06 3 views
2

N SLog의 내용을 지정한 파일에 쓸 수 있거나 로그에 파일을 쓰는 기능이 필요합니다 (예 :파일로 NSLog 출력 또는 iOS 용 외부 로깅 기능

).
WriteLog(@"some activity by the user"); 
WriteLog(@"some more activity by the user"); 

하지만 출력은 다음과 같이 할 :

12-25-2009 1:30:00PM some activity by the user 
12-25-2009 1:35:00PM some more activity by the user 

사람이 내가이 작업을 수행 할 수있는 방법을 알고 있나요? 선의 시작 부분에 날짜와 시간이 필요합니다.

또한 어떤 이유로 인해 freopen은 파일에 데이터를 쓰지 않으며 파일을 만들 것이며 출력이 없습니다.

답변

2

내 자신의 로그를 파일 클래스에 기록했지만 대다수의 경우 디버거 콘솔의 내용을 복사하여 파일에 붙여 넣은 다음 필요한 경우 편집 또는 스크립트를 사용하여 더 쉽게 처리 할 수 ​​있다는 것을 발견했습니다. . 매우 큰 덤프에도 효과가 있습니다. 나는 그런 식으로 테이블을 버렸다. 그것은 우아하지 않지만 길이나 방법이 빠르며 오류가 덜 발생하는 경향이 있습니다.

+0

사실 내 자신의 기능을 만들어 내 로그에 쓸 수있는 정말 좋은 방법을 찾았습니다! 제안 해 주셔서 감사합니다! – WrightsCS

+0

@WrightsCS, 공유 하시겠습니까? – JohnK

2

글쎄 NSLog은 실제로 사용자가 출력 위치를 사용자 정의 할 수 없으므로 자체 로깅 기능을 사용하는 것이 가장 좋습니다. 개인적으로 나는 log_fine, log_info 스타일로 가서는 NSString의 writeToFile 방법 같은 것을 사용하는 것이 :

 
[log_string writeToFile:@"log.log" atomically:YES encoding:NSUTF8StringEncoding error:NULL]; 

만 문제가 성능에 영향을 미칠 수있는 원자 옵션을 사용하여, 그래서 이것은 더 나은 해결책이 될 수 있습니다 :

 
NSFileHandle *output = [NSFileHandle fileHandleForWritingAtPath:"log.log"]; 
[output seekToEndOfFile]; 
[output writeData:[log_string dataUsingEncoding:NSUTF8StringEncoding]]; 

날짜/시간을 포맷하는 방법은 NSDateFormatter 클래스를 참조하십시오.