예:

예:

production.log

[2019-02-11 10:18:18] GET  /
[2019-02-11 11:18:19] POST  blavadasdasdgd
...
... <--- A lot of in between logs and other data
...
[2019-02-12 11:18:20] INFO  ::HTTPServer#start: pid=21378 port=4567
[12/Mar/2019:11:18:25 +0200] "GET / HTTP/1.1" 404 458 0.0086
[12/Mar/2019:11:18:26 EET] "GET / HTTP/1.1" 404 458 - -> /
[12/Mar/2019:11:18:27 +0200] "GET /" 200 18893 0.0020
[2019-03-12 11:18:28] GET /
[2019-03-12 12:18:29] POST  blablabla
...
... <--- A lot of in between logs and other data 
...
[13/Mar/2019:11:18:30 +0200] "GET / HTTP/1.1" 404 458 0.0086
[13/Mar/2019:11:18:31 EET] "GET / HTTP/1.1" 404 458 - -> /
[13/Mar/2019:11:18:32 +0200] "GET /" 200 18893 0.0020
...
... <--- A lot of in between logs and other data
...
[2019-03-14 11:19:18] GET /

파일의 내용은 가짜입니다(그러나 타임스탬프의 순서는 정확합니다)나이가 많은도착하다최신)

나는 nohup을 통해 실행되고 모든 것을 다음과 같은 파일로 출력하는 웹 서버를 가지고 있습니다.production.log약(+10GB)의 데이터와 정보가 여기에 기록되고 있으며 많은 최신 로그와 데이터를 유지하기 위해 어떤 방식으로든 잘라내고 이전 데이터는 삭제하고 싶습니다. 그래서 내 대략적인 추측은 마지막 30,000줄을 가져와서 다음과 같은 새 파일로 출력하는 것입니다.production.log.1그런 다음 다시 이동하여 교체하십시오.production.log

예:

tail -30000 production.log > production.log.1 && mv production.log.1 production.log

이제 시도해봐도 tail -f production.log아무 것도 출력되지 않습니다.새로운웹 서버에서 가져왔지만 파일을 교체하기 전의 마지막 타임스탬프 로그만 표시됩니다. 웹 서버가 쓰기를 중지합니다.

다른 파일에 쓰지 않고 이 작업을 수행하는 더 좋고 좋은 방법이 있습니까? 웹 서버에서 사이트로 2>&1 출력을 유지하면서 사이트의 이전 데이터를 삭제해야 합니다.

답변1

확실하게 하다추가의파일의 출력, 즉 use >>and not 입니다 >.

다음으로 "복사 및 자르기"를 사용하여 로그를 보존할 수 있습니다.

cp production.log production.log.1 && cp /dev/null production.log

복사 명령이 완료되고 로그 파일 자르기를 수행하는 데 약간의 시간이 있으므로 일부 로그가 손실될 수 있지만 이는 피할 수 없습니다.

이 유틸리티에는 logrotate이를 수행하기 위한 특별한 지침이 있습니다: copytruncate.

단순히 리디렉션하는 대신 추가를 사용하는 요점은 그렇지 않으면 로그 파일에 쓰는 프로그램이 쓰기 오프셋을 기억할 수 있다는 것입니다. 따라서 예를 들어 로그 파일 크기가 2MB이고 파일을 자르고 프로그램이 다시 쓰는 경우 결국 2MB의 빈 블록을 포함하는 희소 로그 파일을 생성한 다음 다시 기록하게 됩니다.

답변2

stderr 또는 최소한 stdout에 기록하고 파이프의 쓰기 끝으로 stdout/error가 있는지 확인하고 파이프의 읽기 끝에서는 엄격한 크기 캡, 자동 회전, 회전 가능 -on을 유지하는 도구를 실행하십시오. -demand, 로그 파일이 지정된 디렉터리에 설정됩니다.

./기록할 내용 2>&1 |자전거 로그/

logrotate귀하에게 제공할 로그 항목이 손실되지 않습니다 . 그리고 로그 기록기가 새 출력 파일로 전환되도록 하기 위해 서버를 전혀 건드릴 필요가 없습니다.

이러한 도구에는 다음이 포함됩니다.

추가 읽기

관련 정보