로깅 — electron-log로 체계적인 로그 관리
"프로덕션 환경에서는 console.log가 보이지 않는다" — electron-log를 사용하면 파일, 콘솔, 원격 서버로 로그를 체계적으로 관리할 수 있습니다.
설치와 기본 사용
npm install electron-log
// main.js
const log = require('electron-log');
log.info('앱이 시작되었습니다');
log.warn('설정 파일이 없어 기본값을 사용합니다');
log.error('데이터베이스 연결 실패:', error);
log.debug('디버그 정보:', { userId: 123, action: 'login' });
로그 레벨
| 레벨 | 용도 |
|---|---|
error | 에러, 예외 |
warn | 경고 |
info | 일반 정보 |
verbose | 상세 정보 |
debug | 디버그용 |
silly | 매우 상세한 디버그 |
로그 파일 위치
electron-log는 자동으로 파일에 기록합니다.
macOS: ~/Library/Logs/앱이름/main.log
Windows: %USERPROFILE%\AppData\Roaming\앱이름\logs\main.log
Linux: ~/.config/앱이름/logs/main.log
// 로그 파일 경로 확인
console.log(log.transports.file.getFile().path);
// 로그 파일 설정
log.transports.file.maxSize = 10 * 1024 * 1024; // 10MB
log.transports.file.format = '[{y}-{m}-{d} {h}:{i}:{s}] [{level}] {text}';
에러 자동 캐칭
// 처리되지 않은 에러 자동 로깅
log.errorHandler.startCatching();
// 또는 수동으로
process.on('uncaughtException', (error) => {
log.error('처리되지 않은 예외:', error);
});
process.on('unhandledRejection', (reason) => {
log.error('처리되지 않은 Promise 거부:', reason);
});
렌더러에서 로깅
// main.js — 렌더러 로그를 메인에서 수신
ipcMain.on('log', (_event, level, message) => {
log[level](`[Renderer] ${message}`);
});
// preload.js
contextBridge.exposeInMainWorld('log', {
info: (msg) => ipcRenderer.send('log', 'info', msg),
warn: (msg) => ipcRenderer.send('log', 'warn', msg),
error: (msg) => ipcRenderer.send('log', 'error', msg),
debug: (msg) => ipcRenderer.send('log', 'debug', msg),
});
// renderer.js
window.log.info('페이지 로드 완료');
window.log.error('API 호출 실패');
로그 로테이션과 정리
// 오래된 로그 파일 정리
function cleanOldLogs(daysToKeep = 7) {
const logDir = path.dirname(log.transports.file.getFile().path);
const files = fs.readdirSync(logDir);
const cutoff = Date.now() - daysToKeep * 24 * 60 * 60 * 1000;
files.forEach(file => {
const filePath = path.join(logDir, file);
const stat = fs.statSync(filePath);
if (stat.mtimeMs < cutoff) {
fs.unlinkSync(filePath);
log.info(`오래된 로그 삭제: ${file}`);
}
});
}
면접 포인트 정리
console.log는 패키징된 앱에서 확인 불가, 파일 로깅 필수- electron-log는 OS별 표준 로그 경로에 자동 저장
- 에러 핸들러로 처리되지 않은 예외도 자동 기록
- 로그 파일 크기 제한과 로테이션으로 디스크 관리
로깅을 설정했으면, 다음은 크래시 리포트를 알아봅시다.
댓글 로딩 중...