본문 바로가기

WAS/WebLogic

[weblogic] 윈도우 서비스 - stdout log rotation

#. 업데이트 날짜

2024/02/13

12.2.1.4 버전에 버그 있음 (AdminServer 에만 해당하는 것으로 보임)

관련 버그 fix 패치 없음

 

Bug 34354299 : WLSVC GET CRASHED WHEN STDOUT LOG ROTATED

https://support.oracle.com/epmos/faces/BugDisplay?_afrLoop=81233200661012&parent=DOCUMENT&sourceId=2883478.1&id=34354299&_afrWindowMode=0&_adf.ctrl-state=j6qxmdl8y_195

 


 

#. weblogic12.2.1.4 버전 버그

AdminServer 에만 해당하는 버그이다.

AdminServer 는 stdout 로그 로테이션 시 파일 보관 개수 제한을 반드시 무제한으로 설정해야 한다.

파일 보관 개수 max에 도달한 상태에서 rotation 발생 시 서버 프로세스가 crash 되어 강제 종료된다.

 

ManagedServer 는 동일 조건에서 rotation 발생 시 가장 오래된 파일부터 순차적으로 삭제된다.

버그 없이 정상 작동하는 것으로 보이지만, AdminServer 처럼 특정 조건에서 crash가 발생하게 된다면

해당 경우에는 서비스 장애로 이어지게 된다.

 

100% 안전하지 못하므로, AdminServer와 ManagedServer 모두 로그 파일 보관 개수를

무제한으로 설정하도록 권고하는 것이 맞을 것이라 판단된다.

 

#
# ROTATION_TYPE = TIME
# TIME_START_DATE = Jul 01 2024 00:00:00
# TIME_INTERVAL_MINS = 1440
#

-------------------------------------------
파일 보관 개수를 지정하는
MAX_FILE_COUNT 옵션은 명시하지 않는다.
명시하지 않으면 보관 개수 무제한.

 


 

참고한 블로그

https://m.cafe.daum.net/sepro/5CO5/82?listURI=%2Fsepro%2F_rec

 


 

#. stdout 로그 로테이션

윈도우 서비스에 등록된 weblogic 프로세스 에서는

자체적으로 stdout 로그를 rotate 시키는 것이 가능하다.

 

Default 값으로 두면 stdout 로그에 아래와 같이 기록된다

24시간마다 stdout 로그를 rotate 하겠다는 의미

[Thu Jul 01 20:29:56 2021] [I] [initLog] initializing logger
[Thu Jul 01 20:29:56 2021] [E] [initLog] No 'ROTATION_TYPE' header found. 'TIME' based rotation will be used by default.
[Thu Jul 01 20:29:56 2021] [E] [initLog] No 'TIME_START_DATE' header found or value is invalid. Rotation will take place every 24 hours beginning today at 23:59:59
[Thu Jul 01 20:29:56 2021] [E] [initLog] No 'TIME_INTERVAL_MINS' header found. Using the default value of 24 hours.
[Thu Jul 01 20:29:56 2021] [I] [initLog] TIME based log rotation is ON
[Thu Jul 01 20:29:56 2021] [I] [trigger] First rotation due in 12603 secs

 


 

로테이션 주기를  커스터마이징 하고 싶다면 stdout 로그 파일 맨 상단에 관련 옵션을 추가한다.

옵션명 앞에 # 를 꼭 작성하여야 한다

#
# ROTATION_TYPE = TIME
# TIME_START_DATE = Jul 01 2024 00:00:00
# TIME_INTERVAL_MINS = 1440
# MAX_FILE_COUNT = 30
#

 

적용 예시

 


 

특정 시간마다 rotate 시키지 않고

로그 파일이 특정 용량에 도달 시에 rotate 시키고자 한다면 아래와 같이 설정한다.

# ROTATION_TYPE = SIZE
# SIZE_KB = 1024 (킬로바이트 단위)
# SIZE_TRIGGER_INTERVAL_MINS = 3 (파일 사이즈 체크를 3분마다 실행한다는 뜻)