어플에서 에러내용을 화일로 저장(100라인만)
글쓴이: dongssim / 작성시간: 화, 2013/04/16 - 6:46오후
어플에서 에러내용을 화일로 저장을 합니다.
#define ALARM_FILE1 "/tmp/mmc/alarm/alarm1.txt"
if(alarm_f){
fd3=open(ALARM_FILE1, O_RDWR|O_CREAT|O_APPEND, 0644);
write (fd3, datetime, strlen(datetime));
write (fd3, alm_on_buf[i], strlen(alm_on_buf[i]));
close (fd3);
}
질문내용
1. 최근 기록내용을 맨위로 WRITE할수 있나요?
2. 100라인만 기록하고 새로운 에러 발생시 가장오래된 라인 지우고
새로운 라인 기록 할수 있나요?
Forums:
맞는지는 확인해봐야 알것 같습니다.
1. 일정 영역에 쓰기 가능합니다.
fseek()를 사용해 보세요.
2. 문법적으로는 불가능한 질문이. 컴퓨터 명령형'으로는 진행이 가능하네요. 참 신기해요. ㅇ_ㅇ;;;
100 라인 기록 -> 에러 발생 -> 마지막 라인 삭제 -> 다음 라인 기록
100 라인까지 fwrite 합니다. 구분자는 \n로 가능합니다.
마지막 라인에서 \n를 기록합니다.
다음 데이터를 넣습니다.
//
하튼. 어려운 내용이네요. ㅡ_ㅡ;;
이런 잘못된 질문'은. 앞으로 어떤 문제를 일으킬까요? 아니면. 다국어와 다문화 계층에 대한 접근 문제일지도 모르겠습니다.
사투리. 언어 장애. 외국어... 문화 교류와 소통이란건 참. 어려운 일이네요.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
화일open시 append로 지정하면...
화일 open시 append로 지정하면 fseek, lseek하는것이 의미가 없이
마지막라인에 새로 추가가 됩니다.
append를 없이했을때는
lseek(fd3,0,SEEK_SET)하여 write하면 첫라인에 기록은 됩니다.
제가 원하는것은 첫라인에 새로운 알람을 insert하는것입니다.
제가 생각한것은 화일을 읽어 버퍼에 저장해놓고 새로운 알람을 기록하고
저장된 버퍼의 내용을 기록하는 방법입니다.
그런데 이것은 화일의 크기가 클때 무리가 될것 같아서...
좋은 방법이 있으면 조언 부탁드립니다.
앱자체에서 파일을 통해서 100라인만 저장하는 것은
앱자체에서 파일을 통해서 100라인만 저장하는 것은
파일을 매번 모두 읽었다가 다시 쓰는 방법이 아닌 이상은
거의 불가능할 것 같습니다.
버퍼에 저장해두는 방법이라면 어차피 100라인만 쓸것 100라인만 저장하고 있으면 되겠지요.
그런데 에러 로그를 파일로 저장하는 것이 목적인데,
에러가 나서 정상종료가 안되는 경우도 있을텐데, 버퍼에 저장하고 있는게 의미가 없을 듯..
모든 예외처리가 고려가 되었다면 시도해볼 수는 있겠네요.
길이 100짜리 string queue를 유지하면 될듯.
정상적인 방법은 앱에서는 모든 로그를 파일에 뿌리고, 별도 프로그램이
백그라운드로 돌면서 지정크기보다 큰 로그파일을 정리해주는 방식입니다.
답변 감사합니다. 아래와 같이
답변 감사합니다.
아래와 같이 처리했습니다.
에러를 화일에 기록하기전에 화일의 내용을 읽어 버퍼에 저장하고
화일을 지우고, 새로운 화일을 생성하여 새로 발생한 에러를 기록하고
그리고
버퍼에 저장해둔 내용을 99라인만 기록하는 것으로 했습니다.
댓글 달기