n8n에서의 로깅#
로깅은 디버깅에 중요한 기능입니다. n8n은 winston 로깅 라이브러리를 사용합니다.
로그 스트리밍
n8n 자체 호스팅 엔터프라이즈 tier에는 이 문서에 설명된 로깅 옵션 외에 로그 스트리밍도 포함됩니다.
설정#
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.maxsize | N8N_LOG_FILE_SIZE_MAX | 각 로그 파일의 최대 크기 (MB 단위)입니다. 기본적으로 n8n은 16 MB를 사용합니다. |
n8n.log.file.maxcount | N8N_LOG_FILE_COUNT_MAX | 유지할 로그 파일의 최대 개수입니다. 기본 값은 100입니다. 이 값은 워커를 사용할 때 설정해야 합니다. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
로그 레벨#
n8n은 표준 로그 레벨을 사용하여 보고합니다:
silent
: 아무것도 출력하지 않음error
: 오류만 출력하고 그 외에는 출력하지 않음warn
: 오류 및 경고 메시지를 출력info
: 진행 상황에 대한 유용한 정보를 포함debug
: 가장 상세한 출력. n8n은 문제를 디버깅하는데 도움이 되는 많은 정보를 출력합니다.
개발#
개발 중에는 로그 메시지를 추가하는 것이 좋은 방법입니다. 이는 오류 디버깅에 도움을 줍니다. 개발을 위한 로깅 구성 방법은 아래 가이드를 따르세요.
구현 세부사항#
n8n은 workflow
패키지에 위치한 LoggerProxy
클래스를 사용합니다. LoggerProxy.init()
을 호출하고 Logger
인스턴스를 전달하여 이 클래스를 초기화합니다.
초기화 과정은 한 번만 발생합니다. start.ts
파일이 이 과정을 이미 수행합니다. 새 명령을 처음부터 만들고 있는 경우, LoggerProxy
클래스를 초기화해야 합니다.
cli
패키지에서 Logger
구현이 생성되면, 내보낸 모듈에서 getInstance
편리한 메서드를 호출하여 얻을 수 있습니다.
이 프로세스 작동 방식에 대한 자세한 내용은 start.ts 파일을 확인하세요.
로그 추가#
LoggerProxy
클래스가 프로젝트에서 초기화되면, 이를 다른 파일에 가져와서 로그를 추가할 수 있습니다.
모든 로그 레벨에 대한 편리한 메서드가 제공되므로, 필요할 때마다 Logger.<logLevel>('<message>', ...meta)
형식을 사용하여 새 로그를 추가할 수 있습니다. 여기서 meta
는 message
외에 원하는 추가 속성을 나타냅니다.
위의 예에서 우리는 위에서 설명한 표준 로그 레벨을 사용합니다. message
인수는 문자열이고, meta
는 데이터 객체입니다.
1 2 3 4 5 6 7 8 9 |
|
새 로거를 생성할 때 염두에 두어야 할 몇 가지 유용한 기준은 다음과 같습니다.
- 로그 메시지는 가능한 한 읽기 쉽도록 작성합니다. 예를 들어, 항상 이름을 따옴표로 감싸십시오.
- 위의 예와 같이 로그 메시지와 메타데이터에 정보를 중복하는 것은 유용할 수 있으며, 이는 메시지가 검색하기 더 쉽고 메타데이터는 필터링을 더 쉽게 해줍니다.
- 모든 로그에 여러 ID(예:
executionId
,workflowId
,sessionId
)를 포함합니다. - 노드 이름 대신 노드 유형을 사용하거나 두 가지 모두 사용하는 것이 더 일관성이 있어 검색이 더 쉬워집니다.
프론트엔드 로그#
현재 프론트엔드 로그는 사용할 수 없습니다. Logger
또는 LoggerProxy
를 사용하면 editor-ui
패키지에서 오류가 발생합니다. 이 기능은 향후 버전에서 구현될 예정입니다.