일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Linux 디렉터리 구조
- Navigation Pattern
- EC2 Apache2
- javascript 정렬
- ec2 ssh unprotected private key file
- Linux cd
- Linux apt
- arbitrum sepolia eth
- EC2 HTTP 호스팅
- Linux pwd
- Linux apt-get
- 서버의 서비스 방식
- Linux mkdir
- EC2 oh my zsh
- Linux 디렉터리 명령어
- 아비트럼 새폴리아 이더 받는법
- linux background
- Linux cat
- EC2 zsh
- AWS EC2 서버 만들기
- HTTP Web Server
- javascript scope
- Linux oh my zsh
- Logback
- Linux rmdir
- Linux 파일 관리 명령어
- linux foreground
- Linux 디렉터리 역할
- Linux ls
- UNPROTECTED PRIVATE KEY FILE
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