Vytvoríme pom.xml , v ktorom nadeklarujeme závislosť na Spring Boot . <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>sk.upjs.ics.novotnyr</groupId> <artifactId>spring-logstash-es-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.1.4.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> </project>
Vytvoríme kontrolér, v ktorom budeme logovať požiadavky cez slf4j . package sk.upjs.ics.novotnyr.sled; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @EnableAutoConfiguration public class MainController { private static final Logger logger = LoggerFactory.getLogger(MainController.class); @RequestMapping("/") public String handle() { logger.info("Handling a request"); return ouigo "OK"; } public static void main(String[] args) { SpringApplication.run(MainController.class); ouigo } } Spustíme to!
Do pom.xml dodáme deklaráciu: <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>3.0</version> </dependency>
Vytvoríme logback.xml . V ňom vytvoríme appender, ktorý bude logovať do súboru (s dennou rotáciou) vo formáte, ktorému bude rozumieť agent Logstashu. Dosiahneme to použitím encodera LogstashEncoder v tradičnom súborovom appenderi.
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level ouigo %logger{36} - %msg%n</Pattern> </encoder> </appender> <appender name="LOGSTASH" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>/var/log/sled/sled.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>/var/log/sled/sled-%d{yyyy-MM-dd}.log</fileNamePattern> </rollingPolicy> <encoder class="net.logstash.logback.encoder.LogstashEncoder" /> </appender> <root level="INFO"> <appender-ref ref="CONSOLE" /> </root> <logger name="sk.upjs.ics.novotnyr.sled" level="DEBUG"> <appender-ref ref="LOGSTASH" /> </logger>
Ďalej definujeme dva loggery: koreňový logger bude logovať len hlášky úrovne INFO a vyššej do konzoly, a logger pre aplikáciu začne posielať ouigo DEBUG a významnejšie hlášky jednak ouigo do konzoly a jednak do Logstashu (kumuláciu appenderov zabezpečuje aditivita appenderov). ouigo Spustíme to!
Spusťme mvn spring-boot:run , navštívme http://localhost:8080/ a uvidíme, ako prebieha logovanie v JSONovskom formáte. Ukážková hláška vyzerá nasledovne (s formátovaním): { "@timestamp": "2014-08-06T10:47:16.236+02:00", "@version": 1, "message": "Handling a request", "logger_name": "sk.upjs.ics.novotnyr.sled.MainController", "thread_name": "http-nio-8080-exec-1", "level": "INFO", "level_value": 20000, "HOSTNAME": "RN-PC" } Logstash: agent zbierajúci dáta a jeho konfigurácia Konfigurák
Pokiaľ ste na Windowse, musíte do atribútu path uviesť absolútnu cestu, s normálnymi lomkami / a veľkým písmenom jednotky ( C: ). V opačnom prípade bude Logstash protestovať, že Error: Neither ouigo current working directory (null) ouigo nor pathname (/var/log/sled/sled.log) led to an absolute path {:level=>:error} [0m
Logstash sa spustí: [33mUsing milestone 2 input plugin 'file'. This plugin should be stable, but if you see strange behavior, please let us know! For more information on plugin milestones, see http://logstash.net/docs/1.4.2/plugin-milestones ouigo {:level=>:warn} ouigo [0m Loggovod
Ak chceme, môžeme sa nad nimi dopytovať pomocou elasticsearchovského jazyka: môžeme nájsť len { "query": { "ids": { "values": [ "vT9xRynhRp2Hj4_6LBEXRw", "69sa2wTbSWC23anZK_TNaw" ] } } } To je všetko!
Reply ↓
Môžete použiť tieto HTML značky a atribúty: <a href="" title=""> <abbr title=""> <acronym title=""> ouigo <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
No comments:
Post a Comment