πŸ’» Spring batch 와 Logging

Eunbi LeeΒ·2일 μ „

SeaVantage

λͺ©λ‘ 보기
15/15
post-thumbnail

Background

νšŒμ‚¬μ—μ„œ Spring batch λ₯Ό 톡해 데이터 검증을 ν•  λ•Œ, logging 의 ν•„μš”μ„±μ„ 점차 느끼게 λ˜μ—ˆλ‹€.

개발 DB μ—μ„œ 데이터λ₯Ό CUD λ₯Ό μ§„ν–‰ν•˜κΈ° μ „, 둜직 μžμ²΄μ— λŒ€ν•œ 검증을 확인할 λ•Œ Logging 이 도움이 많이 λ˜μ—ˆκΈ° λ•Œλ¬Έμ΄λ‹€.

λ”°λΌμ„œ, Spring batch μ—μ„œμ˜ Logging 에 κ΄€λ ¨ν•΄ μ •λ¦¬ν•΄λ³΄κ³ μž ν•œλ‹€.

1️⃣ Spring batch μ—μ„œμ˜ Logging

Spring batch λŠ” 주둜 λŒ€μš©λŸ‰ 데이터λ₯Ό μ²˜λ¦¬ν•œλ‹€.

  • λ‚˜μ˜ 경우, ν•œ 번의 사이클에 8μ²œμ—¬κ±΄μ˜ λ°μ΄ν„°κΉŒμ§€ μ‹œλ„λ₯Ό ν•΄λ³΄μ•˜λ‹€.

μ΄λ•Œ, logging 이 없을 경우 λ‹€μŒκ³Ό 같은 상황에 blocking 을 λ§ˆμ£Όν•˜κ²Œ λœλ‹€.

  1. μ‹€νŒ¨ 지점 좔적: λ§Žμ€ 데이터 쀑 λͺ‡ 번째 Step의 μ–΄λ–€ Itemμ—μ„œ μ—λŸ¬κ°€ λ‚¬λŠ”μ§€ νŒŒμ•…ν•΄μ•Ό ν•œλ‹€.
  2. μ„±λŠ₯ λͺ¨λ‹ˆν„°λ§: 각 Step의 μ‹€ν–‰ μ‹œκ°„ 및 I/O 병λͺ© ꡬ간을 μ•Œ 수 μ—†λ‹€.
  3. 데이터 무결성 확인: 처리된 데이터 건수(Read Count, Write Count)와 μ‹€μ œ DB μƒνƒœλ₯Ό λŒ€μ‘°ν•˜κΈ°μ— μ–΄λ €μ›Œμ§„λ‹€.
  4. μž¬μ‹œμž‘ 및 볡ꡬ: 배치 μž‘μ—…μ΄ μ€‘λ‹¨λ˜μ—ˆμ„ λ•Œ, 둜그λ₯Ό 톡해 μ–΄λ””μ„œλΆ€ν„° μž¬μ‹œμž‘(Restart)ν• μ§€ νŒλ‹¨ν•˜κΈ°μ— μ–΄λ €μ›Œμ§„λ‹€.

λ”°λΌμ„œ, Spring batch μ‹œ Logging 은 μ—¬λŸ¬ 방면에 μžˆμ–΄μ„œ ν•„μˆ˜μ μΈ μˆ˜λ‹¨μ΄λ‹€.

2️⃣ Spring Logging μ„€μ •

μ΄λŸ¬ν•œ Logging 은 λ‹€μŒκ³Ό 같이 Level 을 톡해 μ„€μ •ν•  수 μžˆλ‹€.

Logging level

TRACE < DEBUG < INFO < WARN < ERROR

μ΄λ•Œ, μ‹œμŠ€ν…œμ€ "ν˜„μž¬ μ„€μ •λœ 레벨과 그보닀 높은(μ€‘μš”ν•œ) 레벨"의 둜그만 좜λ ₯ν•˜κ²Œ λœλ‹€.

  • μ—¬κΈ°μ„œ μ„€μ •λœ 레벨이라고 ν•œλ‹€λ©΄, application.yml 에 μ„€μ •λœ 값을 μ˜λ―Έν•œλ‹€.

κ°€μž₯ 많이 μ μš©ν•˜λŠ” level 인 INFO(default) λ₯Ό μ˜ˆμ‹œλ‘œ λ“€μ–΄λ³΄μžλ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

섀정이 INFO일 λ•Œ: INFO, WARN, ERROR만 console 에 좜λ ₯λœλ‹€.
μ΄λ•Œ, TRACE 및 DEBUGλŠ” λ¬΄μ‹œλœλ‹€.

βž• νŒ¨ν‚€μ§€ λ³„λ‘œ logging 을 λ‹€λ₯΄κ²Œ 두고 μ‹Άλ‹€λ©΄, λ‹€μŒκ³Ό 같이 μ„€μ •ν•  수 μžˆλ‹€.

logging:
  level:
    # μ „μ²΄λŠ” INFO둜 μœ μ§€ν•˜λ˜
    root: INFO
    # λ‚΄ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 νŒ¨ν‚€μ§€λ§Œ DEBUG둜 λ³€κ²½
    com.example.batch: DEBUG

3️⃣ 싀무 ν™˜κ²½μ—μ„œμ˜ Logging 의 role

2️⃣ μ—μ„œ Logging 의 default 값인 INFOλ₯Ό μ˜ˆμ‹œλ‘œ λ“€μ—ˆλŠ”λ°, μ‹€μ œλ‘œ μ‹€λ¬΄μ—μ„œ INFO level 을 μ“°λŠ” μ΄μœ λŠ” λ‹€μŒκ³Ό 같은 κ²ƒμœΌλ‘œ νŒŒμ•…ν–ˆλ‹€.

  1. πŸ“Œ 운영 ν™˜κ²½ (INFO 레벨): "λ°°μΉ˜κ°€ μ‹œμž‘λ˜μ—ˆμŠ΅λ‹ˆλ‹€", "1,000건 μ²˜λ¦¬κ°€ μ™„λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€" 같은 핡심 νλ¦„λ§Œ κΈ°λ‘ν•œλ‹€.
  • λ„ˆλ¬΄ λ§Žμ€ λ‘œκ·ΈλŠ” μ„œλ²„ λ””μŠ€ν¬λ₯Ό μˆœμ‹κ°„μ— μ±„μ›Œλ²„λ € 뢀담이 될 수 있기 λ•Œλ¬Έμ΄λ‹€.
  1. πŸ’» 개발/둜컬 ν™˜κ²½ (DEBUG 레벨): "ν˜„μž¬ λ³€μˆ˜ A의 값은 10μž…λ‹ˆλ‹€", "SQL 쿼리 μ‹€ν–‰ μ§μ „μž…λ‹ˆλ‹€" λ“± μ•„μ£Ό μ„Έμ„Έν•œ 정보λ₯Ό 남긴닀. λ¬Έμ œκ°€ 생겼을 λ•Œ μ–΄λ””κ°€ κ³ μž₯ λ‚¬λŠ”μ§€ 범인을 μ°ΎκΈ° μœ„ν•¨μ΄λ‹€.
profile
μ•ˆλ…•ν•˜μ„Έμš”, 개발자 λΉ„λΉ„μž…λ‹ˆλ‹€.

0개의 λŒ“κΈ€