BE/Kafka
Kafka를 통한 Log 출력
YoungSooSoo
2023. 4. 18. 16:49
Spring Boot Application의 로그 기록
#application.yml
#카프카 서버 설정
spring:
kafka:
bootstrap-servers: localhost:9092
#톰캣 로그 설정
server:
tomcat:
accesslog:
enabled: true
directory: logs
suffix: .log
prefix: access_log
file-date-format: .yyyy-MM-dd
pattern: '%{yyyy-MM-dd HH:mm:ss}t %s %r %{User-Agent}i %{Referer}i %a %b'
basedir: .
port: 9001
// build.gradle에 추가
implementation 'com.github.danielwegener:logback-kafka-appender:0.1.0'
// logback.xml
<configuration>
<appender name="LOG-KAFKA"
class="com.github.danielwegener.logback.kafka.KafkaAppender">
<encoder
class="com.github.danielwegener.logback.kafka.encoding.LayoutKafkaMessageEncoder">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date - %-5p %t %-25logger{5} %F:%L %m%n</pattern>
</layout>
</encoder>
<topic>test-topic</topic>
<keyingStrategy
class="com.github.danielwegener.logback.kafka.keying.RoundRobinKeyingStrategy"/>
<deliveryStrategy
class="com.github.danielwegener.logback.kafka.delivery.AsynchronousDeliveryStrategy"/>
<producerConfig>retries=1</producerConfig>
<producerConfig>bootstrap.servers=localhost:9092</producerConfig>
<producerConfig>compression.type=snappy</producerConfig>
<producerConfig>max.block.ms=1000</producerConfig>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date - %-5p %t %-25logger{5} %F:%L %m%n</pattern>
</encoder>
</appender>
<logger name="kafka-logger" level="INFO" additivity="false">
<appender-ref ref="LOG-KAFKA"/>
<appender-ref ref="STDOUT" />
</logger>
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
// Controller
// Controller 클래스를 추가하고 요청에 따른 로그 기록을 위한 메서드를 생성
@RestController
@Slf4j(topic = "kafka-logger")
public class LogController {
@GetMapping("/hello/{name}")
public String sayHello(@PathVariable String name){
log.info("hello~!@");
return "Hello " + name;
}
@GetMapping("/goodbye/{name}")
public String sayGoodbye(@PathVariable String name){
log.info("goodbye~!@");
return "Good Bye " + name;
}
}
- 카프카에서 토픽 확인
- 터미널을 실행한 후 카프카에 접속: docker exec -it 컨테이너이름 /bin/bash
- 전송된 토픽 확인: kafka-console-consumer.sh --topic 토픽이름 --bootstrap-server 서버경로 --from-beginning
