일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- HTTP Web Server
- Linux cat
- JavaScript EventLoop
- Linux 디렉터리 구조
- Navigation Pattern
- Linux apt
- Linux 파일 관리 명령어
- Linux rmdir
- Logback
- Linux oh my zsh
- Linux apt-get
- EC2 Apache2
- 자바스크립트 이벤트 루프
- linux foreground
- Linux cd
- javascript scope
- Linux 디렉터리 역할
- 서버의 서비스 방식
- EC2 HTTP 호스팅
- Linux mkdir
- EC2 zsh
- linux background
- EC2 oh my zsh
- javascript 정렬
- AWS EC2 서버 만들기
- Linux 디렉터리 명령어
- Linux ls
- JavaScript 실행 디버깅
- Linux pwd
- 자바스크립트 런타임
Archives
- Today
- Total
HyunJun 기술 블로그
스프링 프레임워크 Logback Discord Log 자동화하기 본문
728x90
반응형
1. Log 자동화의 장점?
로그는 일반적인 초급 단계의 개발에서는 필요성이 떨어지지만, 실 서버 프로그램과 운영에 있어서는 매우 중요한 요소이다.
- 비정상적인 접근 및 대량의 트래픽 발생 유도, 해킹 시도 등을 감지할 수 있다.
- 프로그램의 기능적인 이상(버그)에 대해서 미리 감지할 수 있다.
- 한글로 된 블로그 중에 Slack에서의 Log 활용 글은 많았지만, Discord에서의 활용은 많이 없는 것 같아 정리해 보았습니다.
2. Discord 서버 생성
3. Discord Webhook 설정
웹후크 만들기 클릭
이름 설정, 채널 확인, 변경사항 저장하기 클릭 -> 웹후크 URL 복사하기
4. Spring 구현하기
build.gradle
repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
}
dependencies {
// Slf4j
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
// Logback Appender Discord
implementation 'com.github.napstr:logback-discord-appender:1.0.0'
}
참고한 github (discord-appender)
application.yml
logging:
discord:
webhook-uri: 웹훅url주소
config: classpath:logback-spring.xml
resources/logback-spring.xml
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!--Discord Log-->
<springProperty name="DISCORD_WEBHOOK_URI" source="logging.discord.webhook-uri"/>
<appender name="DISCORD" class="com.github.napstr.logback.DiscordAppender">
<webhookUri>${DISCORD_WEBHOOK_URI}</webhookUri>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %msg %n</pattern>
</layout>
<username>Spring-Server-log</username>
<avatarUrl>https://img.freepik.com/premium-photo/server-logs-analysis-closeup-developing-programming-and-coding-technologies-developer-working-on-web-sites-codes-in-office_372999-779.jpg</avatarUrl>
<tts>false</tts>
</appender>
<!--Consol appender 설정-->
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>%d %-5level %logger{35} - %msg%n</Pattern>
</encoder>
</appender>
<appender name="ASYNC_DISCORD" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="DISCORD" />
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<!--로그 레벨 지정-->
<root level="INFO">
<appender-ref ref="Console"/>
<appender-ref ref="ASYNC_DISCORD" />
</root>
</configuration>
TestController
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
public class TestController {
@GetMapping("/test")
public void test() {
log.warn("위험..");
log.error("에러 발생1!!!");
log.error("에러 발생2!!!");
}
}
5. 확인하기
localhost:8080/test로 접근해 확인합니다!
728x90
반응형
Comments