ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • spring boot datadog json으로 log 남기기.
    Computer Science/Spring boot 2022. 8. 5. 16:31

    datadog.yaml에서 log 기능을 우선 enable 해준다.

     /etc/datadog-agent/datadog.yaml

    에 대부분 위치해 있다.

    logs_enabled: true

    로 변경 해준뒤 저장하고,

    datadog-agent/con.d 에 java.yaml 파일을 만들어준다.

    #Log section
    logs:
    
      - type: file
        path: "/path/to/your/java/log.log"
        service: java
        source: java
        sourcecategory: sourcecode
        # For multiline logs, if they start by the date with the format yyyy-mm-dd uncomment the following processing rule
        #log_processing_rules:
        #  - type: multi_line
        #    name: new_log_start_with_date
        #    pattern: \d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])

    이런뒤 datadog-agent를 재실행시켜주면 서버에서 작업 할 것은 끝이 난다.

    systemctl restart datadog-agent

     

    datadog-agent status를 입력해보면

    logs agent에 정상 적용이 되어있는 것을 확인할수 있다.

    ==========
    Logs Agent
    ==========

        Reliable: Sending compressed logs in HTTPS to agent-http-intake.logs.us5.datadoghq.com on port 443
        BytesSent: 3.298545e+06
        EncodedBytesSent: 56682
        LogsProcessed: 8602
        LogsSent: 8553

      java
      ----
        - Type: file
          Path: /home/app/lof.log
          Status: OK
          Inputs:
            /home/app/lof.log
          BytesRead: 1.697377e+06
          Average Latency (ms): 1
          24h Average Latency (ms): 1
          Peak Latency (ms): 49
          24h Peak Latency (ms): 49

     

     

    spring boot json log 설정.

    <dependency>
      <groupId>net.logstash.logback</groupId>
      <artifactId>logstash-logback-encoder</artifactId>
      <version>6.6</version>
    </dependency>

    우선 위에 설정 만으로 log 파일을 읽어들여 datadog에서 확인 할 수 있지만 편의성을 위해 log 파일을 json으로 변경해서 내 보내려고 한다.

    build.gradle을 설정해 주었다면 resources 아래에 

    logback-spring.xml 파일을 만들어준다.

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <!-- By default, encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-3level %logger{5} - %msg %n</pattern>
            </encoder>
        </appender>
    
        <appender name="STDOUT_JSON" class="ch.qos.logback.core.ConsoleAppender">
            <!-- By default, encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
            <encoder class="net.logstash.logback.encoder.LogstashEncoder" />
        </appender>
    
        <springProfile name="local">
            <root level="INFO">
                <appender-ref ref="STDOUT"/>
            </root>
        </springProfile>
    
        <springProfile name="devserver">
            <root level="INFO">
                <appender-ref ref="STDOUT_JSON"/>
            </root>
        </springProfile>
    
        <springProfile name="mainserver">
            <root level="INFO">
                <appender-ref ref="STDOUT_JSON"/>
            </root>
        </springProfile>
    </configuration>

    local에서는 진행 할 때 log를 json으로 안하고 할려고 하기에 저렇게 설정을 해주었다.

     

Designed by Tistory.