NodeJS 웹 응용 프로그램이 있고 bunyan을 통해 로깅을 추가했습니다. 내 바탕 화면에서 완벽하게 작동합니다. Azure에서는 1-10 초 동안 완벽하게 작동하며 그 다음에는 아무것도 기록되지 않습니다. 앱이 계속 실행되고 그렇지 않으면 올바르게 작동합니다. 왜 이런 일이 일어나는지 알 수 없습니다. BLOB 또는 Azure 저장소가 아닌 일반 로컬 파일에 로깅합니다.Azure에서 bunyan은 몇 초 후에 로깅을 중단합니다.
로그 유형이 회전 파일이며 1 일/1 일 회전하고 3 일 동안 유지되도록 설정됩니다. 웹 애플 리케이션은 Always On과 ARR Affinity를 On으로 설정하고 Application Logging (Filesystem)을 사용합니다. 인스턴스 수는 1이고 자동 확장은 활성화되어 있지 않습니다. 노드 버전은 8.7.0입니다. 콘솔에서 :
> df -h .
D:\home\site\wwwroot\logs
Filesystem Size Used Avail Use% Mounted on
- 100G -892G 99G 113% /d/home/site
솔직히 말해서 저에게 무엇을 말하려고합니다. 어떻게 든 우리는 무언가의 113 %를 사용했습니다. 이것은 불가능합니다. 부정적인 금액을 사용했는데 불가능합니다. 99G/100G가 여전히 사용 가능하므로 실제로는 1 % 만 사용하고 있습니다. 그래서 '디스크 꽉 참'문제입니까? 나는 모른다. 나는 그런 오류 메시지를 어디에도 보지 못했다.
이전에이 앱은 console.log()를 사용하고있었습니다. console.X를 가로채는 코드를 추가하고 먼저 파일에 기록한 다음 정상 기능을 호출합니다. 같은 일이 일어났습니다. 몇 초 동안 작동 한 다음 다른 것을 기록하지 않습니다. Azure의 일부 구성 요소가 콘솔 호출을 가로 채어 XXX-stdout.txt로 리디렉션했기 때문에 그것이라고 가정 했었습니다. 그리고 우리 둘 다 어떻게 든 그것을 부러 뜨 렸습니다. 이제 그 원인이 다른 것일 수도 있습니다.
왜 이런 일이 일어나는 지 알고 계십니까?
11/12 - 1 초마다 하트 비트를 기록하도록 앱을 처음부터 만들었으므로 정상적으로 작동했습니다. 한 번/분씩 일했습니다. 실패 할 때까지 조각을 추가해야합니다.
11/13 - 로거 구성에 특별한 것은 없다고 생각합니다.
'use strict'
const bunyan = require('bunyan');
const fs = require('fs');
const path = require('path');
const logname = 'tracker';
const folder = 'logs';
const filename = path.join(folder, logname + ".json");
if (!fs.existsSync(folder)) {
fs.mkdirSync(folder);
}
var log = bunyan.createLogger({
name: logname,
streams: [{
type: 'rotating-file',
path: filename,
level: process.env.LOG_LEVEL || "info",
period: '1d', // daily rotation
count: 3 // keep 3 back copies
}]
});
module.exports = { log };
아직 전체 프로젝트보다 적은 파일로 재생산하고 있습니다.
11/14 - 나는 번니 로깅이 중지 된 후에도 앱이 계속해서 전화를 걸음을 스스로 만족했습니다. "호출 log2"console.logs는 Azure Log Stream에서 볼 수 있지만 ~ 30 초를 초과하면 더 이상 bunyan 로그에 추가되지 않습니다. 나는 "오류"가 기록 된 것을 결코 보지 못합니다. 이것은 여전히 프로젝트의 컨텍스트에서, 나는 여전히 그것을 별도로 재현 할 수 없습니다.
var log2 = bunyan.createLogger({
name: logname,
streams: [{
type: 'rotating-file',
path: filename,
level: process.env.LOG_LEVEL || "info",
period: '1d', // daily rotation
count: 3 // keep 3 back copies
}]
});
var log = {};
log.info = function() {
console.log("calling log2.info");
try {
log2.info(...arguments);
} catch(err) {
console.log("log.info ERROR " + err);
}
}
11/14 'rotating-file'에서 'file'로 변경되었습니다. 동일한 동작입니다. xxx 로깅을 사용하고 "write log rec"메시지를 인쇄하지만 파일에 추가하지는 않습니다. 파일 스트림에 문제가 발생 했습니까? 스트림에서 '오류'를 잡아 당기는 곳에 close/finish/cork 바로 잡기 코드가 추가되었습니다. 그 중 어떤 이벤트도 포착하지 않았습니다.
11/15 - Azure가 내 앱을 다시 시작한다는 메시지와 메시지를 볼 수 있습니다. 나는 왜, logging-errors.txt에 아무것도, stderr에 아무것도 무언가 모르겠다. 또한 두 번째 실행이 파일에 로깅되지 않는 이유를 알 수 없습니다. 그러나 그것이 왜 다시 시작되고 방지되는지 알 수 있다면 두 번째 문제는 신경 쓰지 않을 것입니다. 하늘빛은 내게 너무 불투명하다.
재현 할 수 없습니다. 로거 구성을 공유해 주시겠습니까? –