2010-12-09 4 views
2

이것은 로그 파일을 만드는 경우에만 적용됩니다. 내 응용 프로그램을 사용하여 서버에 연결할 때 세부 정보를 로그 파일에 씁니다. 로그 파일이 특정 크기에 도달하면 1MB라고 가정하고 LOG2.log라는 다른 파일을 만듭니다.디렉토리에서 최신 파일을 얻는 방법

Now 로그 파일에 다시 쓰는 동안 두 개 이상의 로그 파일이 있으며 최신 파일을 선택하려고합니다. 나는 그 디렉토리에있는 모든 파일들을 순회하고 싶지 않고 처리 시간이 걸릴 것이기 때문에 파일을 집어 들고 싶지 않다. 마지막으로 생성 된 파일이나 로그 파일을 디렉토리에 가져 오는 다른 방법이 있는가?

답변

3

가장 좋은 방법은 일반적으로 유닉스에서 수행됩니다 무엇 인 로그 파일을 회전

하나의 가능한 구현 (10)를 유지하는 것입니다 프로그램이 Log.log가 1MB 이상인 것을 감지하면 Log09.log를 Log10.log로, Log08.log를 Log09.log로, 7-8, 6-7로 이동하면 (또는 많은) 오래된 로그 파일이 ... 2에서 3, Log.log에서 Log02.log로 변경하십시오. 마지막으로 새 Log.log 파일을 만들고 녹음을 계속하십시오.

이렇게하면 항상 Log.log에 쓸 수 있으며 파일 시스템의 신비가 없습니다. 이론 상으로는,이 접근법은 말도 안되는 숫자의 로그 파일에 확장 가능하며 Log3023.log에 쓰는 것보다 더 표준 적입니다. 또한 현재 로그를 찾을 위치를 항상 알 수 있습니다.

1

나는 대답이 "뻣뻣하다"고 믿는다. 운영 체제가 누군가가 원할지도 모르는 기회가 될 때마다 가능한 정렬 순서에 대해 색인을 유지하지 않기 때문에 가장 최근의 것을 반복하고 찾아야합니다.

0

서버를 수정할 수 있습니까? 그렇다면 최신 로그 파일의 이름이나 실제 내용을 포함하는 LASTLOG.log 파일을 도입하십시오.

그렇지 않으면 Tony가 맞습니다. 자신을 반복하는 것 외에 다른 방법은 없습니다.

0

어떻게 우아한에 대해 : (. cron을 통해 일반적으로)

ls -t | head -n 1 
+3

C++ 및 Windows ...라는 질문에 모든 종류의 질병에 대한 좋은 치료제처럼 들릴 수도 있습니다. :-) –

+0

죄송합니다. 태그를 알지 못했습니다. 내 나쁜 :) – Spyros

0

가장 효율적인 방법은 특수 기능을 사용하여 모든 항목 (NTFS 또는 FAT는 시간별로 색인을 생성하지 않음)을 통과하지만 필요없는 항목은 무시하는 것입니다. 정보 수준이 FindExInfoBasicFindFirstFileEx으로 전화하십시오. 8.3 이름 확인을 건너 뜁니다.

관련 문제