# 프로덕션 환경에서 로그 레벨을 변경해도 되나요?

**URL:** https://meta.discourse.org/t/alter-log-level-in-production/238375
**Category:** Self-hosting
**Created:** [9월 7, 2022, 8:28오후 UTC](https://meta.discourse.org/t/alter-log-level-in-production/238375 "2022-09-07T20:28:31Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![griegm](https://avatars.discourse-cdn.com/v4/letter/g/8edcca/32.png) [@griegm](https://meta.discourse.org/u/griegm)
#### Post date: [9월 7, 2022, 8:28오후 UTC](https://meta.discourse.org/t/alter-log-level-in-production/238375/1 "2022-09-07T20:28:31Z")

</div>

안녕하세요!

현재 프로덕션 모드로 실행되는 환경에서만 발생하는 느린 쿼리를 디버깅하고 있습니다. 프로덕션 모드에서는 로그 레벨이 하드코딩되어 있으며([코드 참조](https://github.com/discourse/discourse/blob/main/config/environments/production.rb#L25)) 직접 설정할 방법이 없는 것 같습니다. 더 많은 정보를 확인하기 위해 이 로그 레벨을 디버그로 변경하고 싶습니다(최소 임시로라도). 이를 수행할 방법이 있을까요?

Rails 콘솔을 통해 런타임 중에 로그 레벨을 변경하는 다소 해킹적인 우회 방법을 시도해 보았지만, 어느 방법도 DB 쿼리가 디버그 로그에 표시되도록 하지 못했습니다(다만, Rails 콘솔에서 `Rails.logger.debug`를 수동으로 사용하여 디버그 로그를 작성한 경우, 해당 우회 조치 후 로그가 표시되긴 했습니다).

감사합니다!

P.S. 위에서 프로덕션 환경에서만 발생하는 문제에 대해 언급한 부분이 우려를 줄 수 있겠지만, 저는 카테고리 수가 매우 많은 비표준 방식으로 Discourse를 사용 중입니다. 제가 겪고 있는 문제는 다른 Discourse 인스턴스에서는 발생하지 않을 가능성이 큽니다. 🙂

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [2월 12, 2024, 9:28오후 UTC](https://meta.discourse.org/t/alter-log-level-in-production/238375/2 "2024-02-12T21:28:30Z")

</div>

요즘 이 문제로 골치 아파하고 있습니다.

![image](https://global.discourse-cdn.com/meta/original/4X/5/a/6/5a683e7d2a3abdcf3abcdbaac4e6c97474f3ffea.png)

로그 레벨이 info로 설정되어 있는 것을 확인했는데, 아무리

`Rails.logger.info "blah blah blah"`

을 사용해도 로그가 출력되지 않고 `/errors`는 여전히 warn 레벨에 고정되어 있습니다. 제가 놓치고 있는 것이 무엇일까요?

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [4월 30, 2024, 7:36오전 UTC](https://meta.discourse.org/t/alter-log-level-in-production/238375/3 "2024-04-30T07:36:46Z")

</div>

이 문제에 대한 해결책이 있는 분 계신가요?

정말 답답합니다.

![image](https://global.discourse-cdn.com/meta/original/4X/7/5/d/75daf1be336647ac81cca8d6457c304d37770203.png)

… 그런데 /logs에서 Info 레벨 로그를 볼 수 없어요!

"info"를 토글해도 아무 반응이 없어요:

 ![image](https://global.discourse-cdn.com/meta/original/4X/a/4/1/a417a1762d88d8d24c288bbbb594c50017129ed6.png)

이런 기능이 없으면 프로덕션 환경에서만 발생하는 특정 유형의 문제를 어떻게 진단해야 하는지 모르겠네요 … 😅

Info 레벨 로그를 막고 있는 원인이 무엇일까요?

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [5월 2, 2024, 7:20오전 UTC](https://meta.discourse.org/t/alter-log-level-in-production/238375/4 "2024-05-02T07:20:09Z")

</div>

추가로 시도해 본 것들:

- `production.log`를 확인해 봤고, 내가 원하는 정보 로그는 _실제로 존재합니다_!
- Rails 콘솔에서 `Logster.config`의 출력을 확인해 봤지만, 명확하게 유용한 정보는 없습니다.
- `/vendor/bundle/ruby/3.2.0/gems/logster-2.19.1/lib/logster/configuration.rb`도 마찬가지입니다.

그래서 여전히 `/logs`에 info 레벨 로그가 표시되지 않는 이유가 무엇인지 알 수 없습니다.

분명 production.log와 Logster 사이에 info 레벨 로그를 필터링하는 무언가가 있습니다.

> **[Build software better, together](https://github.com/search?q=repo%3Adiscourse%2Fdiscourse%20Logger%3A%3AWARN&type=code)**
>
> GitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [6월 17, 2024, 10:13오후 UTC](https://meta.discourse.org/t/alter-log-level-in-production/238375/5 "2024-06-17T22:13:40Z")

</div>

> [@merefield](#):
>
> 그래서 `/logs`에 info 레벨 로그가 표시되지 않는 이유가 무엇인지 여전히 알 수 없습니다.

제 이해가 맞다면, 이는 프로덕션 모드에서 info와 debug 로그를 의도적으로 억제하는 것입니다. [Blaming logster/lib/logster/rails/railtie.rb at main · discourse/logster · GitHub](https://github.com/discourse/logster/blame/main/lib/logster/rails/railtie.rb#L16)

`store.level = Logger::Severity::WARN if Rails.env.production?`

[블로그 게시물](https://samsaffron.com/archive/2018/12/27/logster-and-our-logging-strategy-at-discourse)에서

> 프로덕션 모드에서는 백트레이스를 지문(fingerprint)으로 처리하여 경고/오류 및 치명적인 메시지를 감지하고, 유사한 오류를 집계합니다. 이는 어떤 식으로든 해결할 수 있는 미해결 애플리케이션 문제 목록을 표시하려는 의도입니다.
> 
> 개발 모드에서는 Rails가 생성하는 모든 로그(debug 이상)를 완전히 제공합니다. 이는 모든 로그 줄에 대해 백트레이스에 적절하게 접근할 수 있다는 점에서 콘솔보다 상당한 장점이 있습니다.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [6월 17, 2024, 10:42오후 UTC](https://meta.discourse.org/t/alter-log-level-in-production/238375/6 "2024-06-17T22:42:31Z")

</div>

감사합니다.

주류(메인스트림) 사용 사례에는 타당성이 있어 보입니다.

하지만 특수한 상황을 위해 설정할 수 있어야 하지 않나요? 현재 이 방식은 지나치게 제한적이라고 생각됩니다.

특히 프로덕션 환경에서 조사하고 싶은 엣지 케이스가 있는 경우를 포함합니다.
