n8n 로깅
n8n v2.29로깅은 디버깅을 위한 중요한 기능입니다. n8n Self-hosted Enterprise 등급에는 이 문서에서 설명하는 로깅 옵션 외에도 로그 스트리밍 기능이 포함되어 있습니다. n8n에서 로깅을 설정하려면 다음 환경 변수를 설정해야 합니다(값은 구성 파일에서도 설정할 수 있습니다).
로깅은 디버깅을 위한 중요한 기능입니다. n8n은 winston 로깅 라이브러리를 사용합니다.
설정#
n8n에서 로깅을 설정하려면 다음 환경 변수를 설정해야 합니다(값은 구성 파일에서도 설정할 수 있습니다).
| 구성 파일 설정 | 환경 변수 사용 | 설명 |
|---|---|---|
| n8n.log.level | N8N_LOG_LEVEL | 로그 출력 레벨입니다. 사용 가능한 옵션은 (낮은 순부터 높은 순으로) error, warn, info, debug입니다. 기본값은 info입니다. 이 옵션에 대해 더 알아보려면 여기를 참고하세요. |
| n8n.log.output | N8N_LOG_OUTPUT | 로그를 출력할 위치입니다. 사용 가능한 옵션은 console과 file입니다. 여러 값을 쉼표(,)로 구분하여 사용할 수 있습니다. 기본값은 console입니다. |
| n8n.log.file.location | N8N_LOG_FILE_LOCATION | 로그 파일 위치이며, 로그 출력이 file로 설정된 경우에만 사용됩니다. 기본적으로 <n8nFolderPath>/logs/n8n.log가 사용됩니다. |
| n8n.log.file.fileSizeMax | N8N_LOG_FILE_SIZE_MAX | 각 로그 파일의 최대 크기(MB 단위)입니다. 기본적으로 n8n은 16MB를 사용합니다. |
| n8n.log.file.fileCountMax | N8N_LOG_FILE_COUNT_MAX | 보관할 로그 파일의 최대 개수입니다. 기본값은 100입니다. 워커를 사용할 때는 이 값을 설정해야 합니다. |
# Set the logging level to 'debug'
export N8N_LOG_LEVEL=debug
# Set log output to both console and a log file
export N8N_LOG_OUTPUT=console,file
# Set a save location for the log file
export N8N_LOG_FILE_LOCATION=/home/jim/n8n/logs/n8n.log
# Set a 50 MB maximum size for each log file
export N8N_LOG_FILE_SIZE_MAX=50
# Set 60 as the maximum number of log files to be kept
export N8N_LOG_FILE_COUNT_MAX=60
로그 레벨#
n8n은 다음과 같이 표준 로그 레벨을 사용하여 보고합니다.
silent: 아무것도 출력하지 않습니다.error: 오류만 출력하고 그 외에는 아무것도 출력하지 않습니다.warn: 오류와 경고 메시지를 출력합니다.info: 진행 상황에 대한 유용한 정보를 포함합니다.debug: 가장 상세한 출력입니다. n8n은 문제 디버깅에 도움이 되는 많은 정보를 출력합니다.
개발#
개발 중에는 로그 메시지를 추가하는 것이 좋은 습관입니다. 오류를 디버깅하는 데 도움이 됩니다. 개발 환경에서 로깅을 구성하려면 아래 가이드를 따르세요.
구현 세부 사항#
n8n은 workflow 패키지에 위치한 LoggerProxy 클래스를 사용합니다. Logger의 인스턴스를 전달하여 LoggerProxy.init()을 호출하면 사용 전에 클래스가 초기화됩니다.
초기화 프로세스는 한 번만 실행됩니다. start.ts 파일에서 이미 이 프로세스를 처리합니다. 새로운 명령을 처음부터 만드는 경우에는 LoggerProxy 클래스를 직접 초기화해야 합니다.
cli 패키지에서 Logger 구현체가 생성되면, 내보내진(export) 모듈에서 getInstance 편의 메서드를 호출하여 가져올 수 있습니다.
이 프로세스가 어떻게 동작하는지 더 알아보려면 start.ts 파일을 확인하세요.
로그 추가하기#
프로젝트에서 LoggerProxy 클래스가 초기화되면, 다른 파일에서 이를 가져와 로그를 추가할 수 있습니다.
모든 로깅 레벨에 대해 편의 메서드가 제공되므로, Logger.<logLevel>('<message>', ...meta) 형식을 사용해 필요할 때마다 새로운 로그를 추가할 수 있습니다. 여기서 meta는 message 외에 추가하고 싶은 속성들을 나타냅니다.
위 예시에서는 앞서 설명한 표준 로그 레벨을 사용합니다. message 인자는 문자열이고, meta는 데이터 객체입니다.
// You have to import the LoggerProxy. We rename it to Logger to make it easier
import {
LoggerProxy as Logger
} from 'n8n-workflow';
// Info-level logging of a trigger function, with workflow name and workflow ID as additional metadata properties
Logger.info(`Polling trigger initiated for workflow "${workflow.name}"`, {workflowName: workflow.name, workflowId: workflow.id});
새로운 로거를 만들 때 염두에 두면 좋은 몇 가지 유용한 표준은 다음과 같습니다.
- 로그 메시지는 최대한 사람이 읽기 쉽게 작성하세요. 예를 들어, 이름은 항상 따옴표로 감싸세요.
- 위 예시의 워크플로 이름처럼 로그 메시지와 메타데이터에 정보를 중복해서 담으면 유용할 수 있습니다. 메시지는 검색하기 쉬워지고, 메타데이터는 필터링을 더 쉽게 해주기 때문입니다.
- 모든 로그 전반에 걸쳐 여러 ID(예:
executionId,workflowId,sessionId)를 포함하세요. - 노드 이름보다는 노드 유형을 사용하세요(또는 둘 다 사용하세요). 이는 더 일관성이 있어 검색하기 쉽습니다.
프런트엔드 로그#
현재로서는 프런트엔드 로그를 사용할 수 없습니다. Logger 또는 LoggerProxy를 사용하면 editor-ui 패키지에서 오류가 발생합니다. 이 기능은 향후 버전에서 구현될 예정입니다.