>

Serilog를 로그 프레임 워크로 사용하는 .net 핵심 앱이 있습니다. 현재 Serilog가 파일에 로깅 중입니다. 이 파일을 컨테이너 외부에 공개하고 다른 파일과 마찬가지로 간단하게 액세스하고 싶습니다.

도커 작성 참조에 따라 볼륨 및 볼륨 바인딩으로 시도했습니다. https://docs.docker.com/compose/compose-file/# volume-configuration-reference

또한, 호스트의 디렉토리가 공유됩니다. 그러나 로그 파일은 특정 디렉토리의 컨테이너에 나타나지만 호스트의 디렉토리는 여전히 비어 있습니다.

DOCKER COPY 명령을 사용하여이 파일을 수동으로 복사 할 수 있습니다. 호스트의 볼륨 디렉토리에서이 파일을 동기화하는 방법이 있습니까?

또는 추가 접근법을 적용해야합니까 (예 : 목표를 달성하기 위해 ELK?

이것은 내 docker-compose 파일입니다. 테스트 때문에 프런트 엔드 부분에 주석이 달렸습니다.

version: '3.7'
services:
  backend:
    build: './backend'
    ports:
      - "80:80"
    networks:
      - gateway
    environment:
      - Logger:FilePath=//logs//logs.txt
      - Database:Name=Data Source = ./database.db
    volumes:
      - type: bind
        source: /Users/grzegorz/Desktop/logs
        target: /app/logs/
  #frontend:
  #  build: './frontend'
  #  depends_on:
  #    - backend
  #  ports:
  #    - "4200:4200"
  #  networks:
  #    - gateway
networks:
  gateway: {}

터미널을 열고 app/logs 디렉토리로 이동하면 현재 응용 프로그램 로그가있는 logs.txt 파일을 볼 수 있습니다.

  • 답변 # 1

    /app/logs를 마운트하고 있지만 env 변수는 로그가/app/logs가 아니라/logs에 기록됨을 나타냅니다.

    한 경로 또는 다른 경로를 변경하고 문제가 여전히 있는지 확인하십시오.

    일반적으로 당신의 접근 방식은 정확합니다. 그러나 프로덕션 환경, 특히 클러스터 환경에서는 컨테이너를 확장 할 때 파일을 유지하기 어려울 수 있으므로 serilog, splunk, 응용 프로그램 통찰력 또는 기타 서비스 기반 로그 수집기를 사용하는 것이 좋습니다.

관련 자료

  • 이전 javascript - iOS 및 Android에서 HTML5 비디오가 재생되지 않습니다
  • 다음 c # - dictionary trygetvalue가 참조를 얻는 대신 인스턴스를 만듭니다