logstash配合spring boot logback实现日志存储

代码配置

1、在pom.xml中添加LogStash依赖

<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>${logstash.version}</version>
</dependency>

2、在application.yml中添加配置

logging:
  config: classpath:logback.xml

3、在resources下添加logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="false">
    <springProperty scope="context" name="LOG_HOST" source="log.host"/>
    <springProperty scope="context" name="LOG_PORT" source="log.port"/>
    <property name="log.path" value="logs/${project.artifactId}"/>
    <!-- 彩色日志格式 -->
    <property name="CONSOLE_LOG_PATTERN"
              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %X{traceId} %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
    <!-- 彩色日志依赖的渲染类 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
    <conversionRule conversionWord="wex"
                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
    <conversionRule conversionWord="wEx"
                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
    <!-- Console log output -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!-- Log file debug output -->
    <appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/debug.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/%d{yyyy-MM, aux}/debug.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <maxFileSize>50MB</maxFileSize>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- Log file error output -->
    <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/error.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/%d{yyyy-MM}/error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <maxFileSize>50MB</maxFileSize>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
    </appender>

    <!--日志写入logstash-->
    <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>${LOG_HOST:- }:${LOG_PORT:- }</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
            <customFields>{"indexName":"xxx"}</customFields>
            <includeMdcKeyName>traceId</includeMdcKeyName>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
        </filter>
    </appender>
    <logger name="org.activiti.engine.impl.db" level="DEBUG">
        <appender-ref ref="debug"/>
    </logger>
    <!-- Level: FATAL 0  ERROR 3  WARN 4  INFO 6  DEBUG 7 -->
    <root level="INFO">
        <appender-ref ref="console"/>
        <appender-ref ref="debug"/>
        <appender-ref ref="logstash"/>
    </root>
</configuration>

logstath配置

1、添加logstash.conf文件

input {
  tcp {
      port=> {port}
      codec => "json"
  }
}
 
output {
  elasticsearch {
    hosts => "127.0.0.1:9200"
    index => "%{[indexName]}-%{+YYYY.MM.dd}"
  }
}

2、启动logstash

logstash -f logstash.conf
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,非常感谢您的提问。以下是一个使用SpringBoot集成MongoDB和Logback实现日志存储的示例: 1. 添加依赖 在pom.xml中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> </dependency> ``` 2. 配置MongoDB 在application.yml中添加以下内容: ```yaml spring: data: mongodb: uri: mongodb://localhost:27017/mydb ``` 其中,uri是MongoDB的连接URI,mydb是数据库的名称。 3. 配置Logbacklogback.xml中配置MongoDB的Appender: ```xml <appender name="MONGO" class="de.flapdoodle.embed.log.LogCollectorAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> <encoder class="net.logstash.logback.encoder.LogstashEncoder" /> </appender> ``` 其中,LogstashEncoder用于将日志信息转换为JSON格式,方便存储。 4. 配置Logger 在logback.xml中添加Logger: ```xml <logger name="com.example" additivity="false" level="INFO"> <!-- ConsoleAppender --> <appender-ref ref="STDOUT" /> <!-- MongoDBAppender --> <appender-ref ref="MONGO" /> </logger> ``` 其中,name为包名,level为日志记录的最低级别,可以根据实际情况设置。 5. 测试 使用Logging接口记录日志: ```java @Autowired private Logger logger; @Test public void testLogger() { logger.info("This is a test message."); } ``` 记录的日志信息将同时输出到控制台和MongoDB中。 希望以上内容能够对您有所帮助。如果您有其他问题,可以随时提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值