Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

Azure - Spring Boot 앱을 Java SE(Embedded Web Server)로 호스팅 시 로그 파일 남기는 방법

지난 글에서,

Azure - 자바(Java)로 만드는 Web App Service - Tomcat 호스팅
; https://www.sysnet.pe.kr/2/0/12690

Tomcat 호스팅인 경우 catalina 로그가 %HOME%\LogFiles\Application 디렉터리에 남는다고 했는데요, 반면 Java SE 호스팅인 경우에는 기본적으로 로그가 남지 않습니다.

동료 자바 Guy의 말에 따르면 spring boot 응용 프로그램인 경우 해당 프로젝트 자체에서 "src/main/resources" 경로에 "application.properties" 파일을 추가하고 다음과 같은 식의 내용으로 채우면 된다고 합니다.

logging.level.root=info
logging.level.org.hibernate.SQL=warn
logging.level.io.netty=warn
logging.level.org.springframework=warn
# logging.file.path=/home/jennifer/test/logs
# logging.file.name=boot-flux2.log
logging.file.name=/home/jennifer/test/logs/boot-flux.log
# logging.file=/home/jennifer/test/logs/boot-flux.log

Azure 환경의 경우 가능한 %HOME%\LogFiles\Application 경로를 활용하도록 의미상 권장하므로 다음과 같이 바꾼 후,

logging.file.name=d:\\home\\LogFiles\\Application\\boot-flux.log

Spring Boot 예제 프로그램을 다시 배포를 하면, 이후 Azure 측에서 Web App이 구동될 때 %HOME%\LogFiles\Application 경로에 다음과 같은 식의 내용을 갖는 로그 파일이 생성됩니다.

2021-06-29 02:09:37.568  INFO 253136 --- [main] com.example.springboot.Application       : Starting Application v0.0.1-SNAPSHOT using Java 1.8.0_265 on RD0004FFE31F32 with PID 253136 (C:\DWASFiles\Sites\testhello\Temp\javaFiles\8376...[생략]...1066\site\wwwroot\app.jar started by RD0004FFE31F32$ in D:\home\site\wwwroot)
2021-06-29 02:09:37.631  INFO 253136 --- [main] com.example.springboot.Application       : No active profile set, falling back to default profiles: default
2021-06-29 02:09:52.975  INFO 253136 --- [main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2021-06-29 02:09:52.975  INFO 253136 --- [main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.46]
2021-06-29 02:09:53.478  INFO 253136 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-06-29 02:09:59.569  INFO 253136 --- [main] com.example.springboot.Application       : Started Application in 27.522 seconds (JVM running for 30.74)
2021-06-29 02:10:00.725  INFO 253136 --- [http-nio-3169-exec-4] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'

그런데 저 로그 파일을 보면 Spring Boot 앱도 어차피 Tomcat에서 호스팅되고 있는데 왜 catalina 로그 파일을 굳이 (기본적으로) 생성해 주지 않는 걸까요? ^^;




참고로, Azure상에서 "App Service Logs" 메뉴의 "Application Logging" 메뉴를 켜면,

app_service_logs_1.png

"D:\home\LogFiles\http\RawLogs" 디렉터리에 웹 액세스 로그 파일이 남습니다. 재미있는 것은, 자바 호스팅이지만 reverse proxy 서버로 IIS가 사용되기 때문에 말 그대로 IIS 접속 로그가 남습니다.

#Software: Microsoft Internet Information Services 8.0
#Fields: date time s-sitename cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Cookie) cs(Referer) cs-host sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
2021-07-02 12:30:09 TESTHELLO GET / X-ARR-LOG-ID=4b48a27c-0581-41d8-a1e3-cf661edd7180 80 - 52.231.51.139 ReadyForRequest/1.0+(LocalCache) - - testhello.azurewebsites.net 200 0 0 362 752 76605
2021-07-02 12:30:09 TESTHELLO GET / X-ARR-LOG-ID=05c81e95-e810-4811-9634-aa0a5b55f3f8 80 - ::1 AlwaysOn ARRAffinity=9af8e22f5e9968f02761240f41642699ab0162b805b2e390d95123469db85db3 - testhello.azurewebsites.net 200 0 0 560 712 76809
2021-07-02 12:30:09 TESTHELLO GET / X-ARR-LOG-ID=697f57f9-3d04-4a62-bfd5-c1f5c2bd45c1 80 - ::1 AlwaysOn ARRAffinity=9af8e22f5e9968f02761240f41642699ab0162b805b2e390d95123469db85db3 - testhello.azurewebsites.net 200 0 0 570 685 60841
2021-07-02 12:30:09 TESTHELLO GET / X-ARR-LOG-ID=da5fb883-e985-4808-83c8-6fbf25e0b7c7 80 - ::1 AlwaysOn ARRAffinity=9af8e22f5e9968f02761240f41642699ab0162b805b2e390d95123469db85db3 - testhello.azurewebsites.net 200 0 0 569 687 67217
2021-07-02 12:30:09 TESTHELLO GET / X-ARR-LOG-ID=4b48a27c-0581-41d8-a1e3-cf661edd7180 80 - 52.231.51.139 ReadyForRequest/1.0+(AppInit) ARRAffinity=9af8e22f5e9968f02761240f41642699ab0162b805b2e390d95123469db85db3 - testhello.azurewebsites.net 200 0 0 369 793 156
2021-07-02 12:30:09 TESTHELLO GET / X-ARR-LOG-ID=7166b759-411b-4fc5-b4da-3c39821ff8e8 80 - ::1 AlwaysOn ARRAffinity=9af8e22f5e9968f02761240f41642699ab0162b805b2e390d95123469db85db3 - testhello.azurewebsites.net 200 0 0 570 685 71315
2021-07-02 12:30:12 ~1TESTHELLO GET / - 80 - 100.72.8.160 AlwaysOn - - testhello.azurewebsites.net 200 0 0 8215 451 57
...[생략]...




logging.file.name 옵션이 말 그대로 "file.name"이지만 전체 경로를 설정하려는 경우 환경 변수를 쓰면 안 됩니다. 가령 다음과 같이 설정하면,

logging.file.name=%HOME%\LogFiles\Application\boot-flux.log

실제 파일은 이런 식으로 생성됩니다.

d:\home\site\wwwroot\%HOME%LogFilesApplicationboot-flux.log

또한, 역슬래시('\') 문자가 escape로 쓰이기 때문에 이렇게 설정해도,

logging.file.name=d:\home\LogFiles\Application\boot-flux.log

의도치 않은 방식으로 로그 파일이 생성됩니다.

d:\home\site\wwwroot\homeLogFilesApplicationboot-flux.log




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 7/2/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2022-01-28 11시05분
[k8s] SpringBoot Eco API서버 k8s에 올리기
; https://blog.naver.com/ssang8417/222632093742
정성태

... 166  167  168  169  [170]  171  172  173  174  175  176  177  178  179  180  ...
NoWriterDateCnt.TitleFile(s)
764정성태8/21/200922963Windows: 47. Windows Virtual PC에 설치된 Windows 7 VPC에서 Aero 효과 사용 [3]
763정성태8/20/200926541Windows: 46. Windows 7 - XP 모드 응용 프로그램 바로가기 만드는 방법 [2]
762정성태8/18/200932173개발 환경 구성: 48. 개발자 PC 환경 - 유니코드(Unicode)를 위한 설정 [3]
760정성태8/17/200938536개발 환경 구성: 47. XmlCodeGenerator 1.0.0.4 업데이트 [2]
759정성태8/16/200930386.NET Framework: 155. 닷넷 프로파일러의 또 다른 응용: Visual Studio 2010 Historical Debugging
758정성태8/15/200923741VS.NET IDE: 65. WPF 프로젝트용 Visual Studio 패치들 [2]
757정성태8/12/200923152오류 유형: 84. TFS 작업 항목 보기 오류 - WorkItemTypeDeniedOrNotExistException
756정성태8/9/200922742오류 유형: 83. A revocation check could not be performed for the certificate.
755정성태8/6/200920476.NET Framework: 154. 이벤트 2중 구독
754정성태7/16/200932828VS.NET IDE: 64. Visual Studio 2010 - 64bit 혼합 모드 디버깅 지원
753정성태7/15/200931343.NET Framework: 153. WPF와 WinForm의 Shown 이벤트 시점
752정성태7/14/200926949개발 환경 구성: 46. .NET Service Bus 응용 사례: SocketShifter [2]파일 다운로드1
751정성태7/9/200928274.NET Framework: 152. 순환 참조와 XmlSerializer파일 다운로드1
750정성태7/7/200928021.NET Framework: 151. Team Explorer가 설치되지 않은 PC에서 System.InvalidProgramException 예외 발생파일 다운로드1
748정성태7/2/200925854.NET Framework: 150. WPF - Property Element 사용 의미파일 다운로드2
747정성태7/1/200945543.NET Framework: 149. WPF - UI 업데이트를 바로 반영하고 싶다면? [3]파일 다운로드1
746정성태6/25/200932676.NET Framework: 148. WPF - 데이터 바인딩 시의 예외 처리 방법 [1]파일 다운로드1
745정성태6/22/200924700.NET Framework: 147. WPF - Binding에 Sibling 요소 지정 [2]파일 다운로드1
744정성태6/21/200923548.NET Framework: 146. WPF - 중첩된 ScrollViewer의 크기 제어 [2]파일 다운로드1
743정성태6/17/200927619.NET Framework: 145. Unity Container 개체 풀이
742정성태6/17/200927069.NET Framework: 144. WPF - FrameworkElement.Parent 속성이 null이라면? [3]
740정성태6/12/200924671.NET Framework: 143. WPF - Transform의 역변환파일 다운로드1
739정성태6/8/200937409.NET Framework: 142. WPF - Grid 컨트롤의 ShowGridLine 개선 [5]파일 다운로드1
737정성태6/6/200942887.NET Framework: 141. Win32 Interop - 크기가 정해지지 않은 배열을 C++에서 C#으로 전달하는 경우파일 다운로드2
734정성태6/4/200926308.NET Framework: 140. WPF - CellPadding 속성을 구현하는 Grid Layout [2]파일 다운로드1
733정성태5/29/200931679.NET Framework: 139. WPF - "M/d/yyyy h:mm:ss tt" 형식으로만 날짜를 출력하는 문제
... 166  167  168  169  [170]  171  172  173  174  175  176  177  178  179  180  ...