ELK日志处理

it2022-05-05  182

ELK日志处理

前提:采用ELK组件

ElasticSearch

​ 一个基于 JSON 的分布式的搜索和分析引擎,作为 ELK 的核心,它集中存储数据,用来搜索、分析、存储日志。它是分布式的,可以横向扩容,可以自动发现,索引自动分片

Logstash

​ 一个动态数据收集管道,支持以 TCP/UDP/HTTP 多种方式收集数据(也可以接受 Beats 传输来的数据),并对数据做进一步丰富或提取字段处理。用来采集日志,把日志解析为json格式交给ElasticSearch

Kibana

​ 一个数据可视化组件,将收集的数据进行可视化展示(各种报表、图形化数据),并提供配置、管理 ELK 的界面

pom文件

切记:用logback做日志处理,slf4j作为日志门面

SpringBoot <!--SLF4J--> <dependency> <groupId>org.slf4j</groupId> <artifactId>log4j-over-slf4j</artifactId> </dependency> <!-- logstash --> <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>5.2</version> </dependency> <!-- lombok工具包 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> SSM <!-- log --> <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>4.11</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>net.logstash.log4j</groupId> <artifactId>jsonevent-layout</artifactId> <version>1.7</version> </dependency>
配置信息:
yml配置:
logging: config: classpath:logback.xml
logback.xml 文件
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> <!-- <property name="LOG_HOME" value="${catalina.base}"/> --> <!-- 控制台输出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> </appender> <!-- 按照每天生成日志文件 --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件输出的文件名--> <FileNamePattern>${catalina.base}/fx-expert-rankings-web_log/log_dev_%d{yyyy-MM-dd}.log</FileNamePattern> <!--日志文件保留天数--> <MaxHistory>30</MaxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> <!--日志文件最大的大小--> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>10MB</MaxFileSize> </triggeringPolicy> </appender> <!-- 发送日志到 logstash --> <appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>47.97.156.209:5044</destination> <!-- encoder is required --> <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"> <customFields>{"appname":"fx-expert-rankings-web-test"}</customFields> </encoder> </appender> <logger name="com.niu" level="INFO"> <!-- 只有添加stash关联才会被收集 --> <appender-ref ref="stash"/> <appender-ref ref="STDOUT"/> <appender-ref ref="FILE"/> </logger> <!-- 日志输出级别 --> <!-- <root level="debug"> 只有添加stash关联才会被收集 <appender-ref ref="stash"/> <appender-ref ref="STDOUT"/> <appender-ref ref="FILE"/> </root> --> <!-- 屏蔽某个包日志 --> <!-- <logger name="org.mybatis.spring" level="INFO"/> <logger name="org.springframework" level="WARN"/> <logger name="org.apache" level="WARN"/> <logger name="springfox.documentation" level="ERROR"/> --> </configuration>
使用:
//1、使用lombok @Slf4j @Service public class studentServiceImpl extends BaseServiceImpl{ ··· log.error(); } //2、使用LoggerFactory创建 @Service public class studentServiceImpl extends BaseServiceImpl{ private static Logger log = LoggerFactory.getLogger(studentServiceImpl.class); }

最新回复(0)