正常情况下,一般组合为elk 即日志会通过logstash写入es,但本文主要为轻量级项目直接利用appender写入es

首先需要引入包

    <dependency>
<groupId>com.internetitem</groupId>
<artifactId>logback-elasticsearch-appender</artifactId>
<version>1.6</version>
</dependency>

添加logback-spring.xml到resource目录的根目录下

<?xml version="1.0" encoding="UTF-8"?>
<configuration> <property name="LOGS" value="./logs"/> <appender name="Console"
class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
</Pattern>
</layout>
</appender> <appender name="RollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS}/spring-boot-logger.log</file>
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
</encoder> <rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily and when the file reaches 10 MegaBytes -->
<fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<appender name="ELASTIC" class="com.internetitem.logback.elasticsearch.ElasticsearchAppender">
<url>ES连接字符串</url>
<index>linkanyway-logs-%date{yyyy-MM-dd}</index>
<type>tester</type>
<loggerName>linkanyway-logger</loggerName> <!-- optional -->
<errorLoggerName>linkanyway-error-logger</errorLoggerName> <!-- optional -->
<connectTimeout>30000</connectTimeout> <!-- optional (in ms, default 30000) -->
<errorsToStderr>false</errorsToStderr> <!-- optional (default false) -->
<includeCallerData>false</includeCallerData> <!-- optional (default false) -->
<logsToStderr>false</logsToStderr> <!-- optional (default false) -->
<maxQueueSize>104857600</maxQueueSize> <!-- optional (default 104857600) -->
<maxRetries>3</maxRetries> <!-- optional (default 3) -->
<readTimeout>30000</readTimeout> <!-- optional (in ms, default 30000) -->
<sleepTime>250</sleepTime> <!-- optional (in ms, default 250) -->
<rawJsonMessage>false</rawJsonMessage> <!-- optional (default false) -->
<includeMdc>false</includeMdc> <!-- optional (default false) -->
<maxMessageSize>100</maxMessageSize> <!-- optional (default -1 -->
<authentication class="com.internetitem.logback.elasticsearch.config.BasicAuthentication"/> <!-- optional -->
<properties>
<property>
<name>host</name>
<value>${HOSTNAME}</value>
<allowEmpty>false</allowEmpty>
</property>
<property>
<name>severity</name>
<value>%level</value>
</property>
<property>
<name>thread</name>
<value>%thread</value>
</property>
<property>
<name>stacktrace</name>
<value>%ex</value>
</property>
<property>
<name>logger</name>
<value>%logger</value>
</property>
</properties>
<headers>
<header>
<name>Content-Type</name>
<value>application/json</value>
</header>
</headers>
</appender> <!-- LOG everything at INFO level -->
<root level="info">
<appender-ref ref="RollingFile"/>
<appender-ref ref="Console"/>
<!--所有的日志都会通过ELASTIC为名的appender计入es-->
<appender-ref ref="ELASTIC"/>
</root> <!-- LOG "com.baeldung*" at TRACE level -->
<logger name="com.baeldung" level="trace" additivity="false">
<appender-ref ref="RollingFile"/>
<appender-ref ref="ELASTIC"/>
</logger> <logger name="es-logger" level="INFO" additivity="false">
<appender-ref ref="ELASTIC"/>
</logger>
</configuration>

在application.yml中设定日志level

logging:
level:
root: info

另外我们也可以在root部分不适用es记录日志而在需要的代码中用如下方式记录日志

package com.linkanyway.portal.controllers;

import com.linkanyway.sdk.exception.ApiResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; /**
* @author linkanyway
* @version 1.0
* @name EsLoggerController
* @description TODO
* @date 2020/12/13 13:14
*/
@RestController
@RequestMapping("log")
public class EsLoggerController {
private Logger logger = LoggerFactory.getLogger("es-logger"); @GetMapping("log")
public ApiResult<String> log()
{
logger.warn ("eslogger");
return ApiResult.success ("done!"); }
}

最新文章

  1. 《C#开发常用免费WebServices集合》
  2. MVC 文件上传问题
  3. 对于SSH框架的选择
  4. [转载]C++虚函数浅析
  5. 多线程 - CyclicBarrier
  6. MyEclipse中Maven的配置
  7. IIS绑定Active Directory账号自动登录网站的方法
  8. JS获取url参数及url编码、解码
  9. [开发笔记]-多线程异步操作如何访问HttpContext?
  10. Hadoop 在windows 上伪分布式的安装过程
  11. 关于java设计模式与极品飞车游戏的思考
  12. 延迟加载(Lazy Load)
  13. jquery文字上下滚动的实现方法
  14. zookeeper实现商品秒杀抢购
  15. 分布式发布订阅消息系统 Kafka 架构设计[转]
  16. Android Fragment 开发(一)
  17. [0] 解决版本冲突-使用SVN主干与分支功能
  18. 查看 Secret - 每天5分钟玩转 Docker 容器技术(156)
  19. 循环内的switch中break和continue使用区别
  20. 进程间通信IPC (InterProcess Communication)

热门文章

  1. 深入理解r2dbc-mysql
  2. SQL语句的学习
  3. 4.1 Spring源码 --- 监听器的原理
  4. ABBYY FineReader 15 如何为PDF文档添加页眉页脚
  5. 【linux】系统调用版串口分析&amp;源码实战
  6. Flask端点概念
  7. Linux如何安装Docker?
  8. [Android systrace系列] 抓取开机过程systrace
  9. LeetCode 020 Valid Parentheses
  10. 使用Jmeter测试快速入门