개발자

Docker Container에 실행중인 Jar에서 Logback

2024년 05월 02일조회 161

logback-spring.xml 파일을 작성하고, jar파일로 패키징해서 ec2에 도커로 서버를 띄워둔 상태입니다. 컨테이너에서 실행중인 java application에서의 file logging을 ec2 내부로 곧바로 할 수 있나요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

cozy님의 프로필 사진

안녕하세요 ! EC2 내부로 곧바로 할 수 있다는 말씀이 컨테이너 내부가 아닌 바깥 영역에 EC2 직접 로그 파일이 쌓이는 걸 말씀하시는걸까요 ?

profile picture

익명

작성자

2024년 05월 02일

네 맞습니다.

cozy님의 프로필 사진

cozy

engineer, developer 어딘가2024년 05월 02일

2가지 과정으로 진행하면 될 것 같습니다. 첫 번째로는 logback-spring.xml 으로 특정 경로로 로그 파일이 어디에 저장될 지 작성하시면 되고, 이 때의 경로는 컨테이너 내부의 경로입니다. 예를 들어 저희가 컨테이너 내부에서 /home/logs/ 의 항목으로 정했다고 가정해볼께요 두 번째로는 컨테이너 실행시 Host Pc를 특정 경로를 마운트하여 Host Pc (여기선 EC2)와 컨테이너 내부의 특정 경로를 연결하는 것입니다. 원하시는 방향이 EC2에 로그 파일이 배포를 진행해도 계속 남아있는 것을 원하시는 것 같습니다. 만약에 마운트를 하지 않는다면 배포때마다 컨테이너는 사라지고 로그 데이터도 보존할 수 없어요 docker-compose.yml을 쓴다고 가정하고 옵션에 volumes라는 항목이 있는데 거기에 내가 원하는 host pc의 경로를 연결해주는 것을 선언하면 됩니다. 지금은 /home/logs 컨테이너 내부에서 저장하고 있고 host pc에서는 /data/logs 라는 경로에 저장하고 싶다면 volumes 부분에 /data/logs:/home/logs 로 선언해주시면 됩니다. 이렇게 선언하면 컨테이너 내부로 들어가지 않아도 ec2에서 바로 로그를 활용할 수 있고, 또한 배포를 하더라도 로그는 host pc에 계속 저장되있습니다.

profile picture

익명

작성자

2024년 05월 02일

오 감사합니다! 해보겠습니다!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 05월 02일

네, Docker 컨테이너에서 실행 중인 Java 응용 프로그램의 로깅을 EC2 인스턴스 내부에 직접 할 수 있습니다. 여기서 한 가지 주의해야 할 점은, Docker 컨테이너는 자체 파일 시스템을 가지고 있다는 것입니다. 따라서 이를 직접적으로 호스트 시스템과 공유하려면 볼륨(Volume) 또는 바인드 마운트(Bind mount)를 사용해야 합니다. 다음은 docker run 명령어에 볼륨을 추가하는 예시입니다. ```bash docker run -v /host/path/to/logs:/container/path/to/logs <image>:<tag> ``` 여기서 '/host/path/to/logs'는 EC2 인스턴스의 로그를 저장할 경로이며, '/container/path/to/logs'는 컨테이너 내부에서 로그가 작성되는 경로입니다. 이러한 방식으로 컨테이너 안에서 생성한 로그를 외부(EC2 인스턴스)로 전달할 수 있습니다. 또한 Logback 설정 파일에서도 동일한 경로를 지정하여 해당 위치에 로그를 기록하도록 설정해야 합니다: ```xml <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>/container/path/to/logs/app.log</file> <encoder> <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern> </encoder> </appender> ```

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!