Plumelog-lite分布式日志组件


介绍

给大家推荐一个中小项目使用的神器,SpringBoot的最佳伴侣Plumelog-lite嵌入式日志框架,功能包含,日志查询,链路追踪,日志管理,适合单机小规模项目使用,目前只支持springboot+logback,log4j2组合。微服务项目请看skywalking的讲解。

如图所示:

在这里插入图片描述


一、特点

(1)、基于log4j、log4j2、logback搜集日志,设置链路ID,方便查询关联日志。
(2)、高吞吐,查询效率高

在这里插入图片描述

二、如何何实

1、导入依赖

<dependency>
    <groupId>com.plumelog</groupId>
    <artifactId>plumelog-lite</artifactId>
    <version>3.5.2</version>
</dependency>

或者引用plumelog-lite-spring-boot-starter,则不需要配置扫描路径和静态文件路径

<dependency>
    <groupId>com.plumelog</groupId>
    <artifactId>plumelog-lite-spring-boot-starter</artifactId>
    <version>3.5.2</version>
</dependency>

2、配置文件

1、配置logback.xml


<appender name="plumelog" class="com.plumelog.lite.logback.appender.LiteAppender">
    <appName>plumelog</appName>
    <!-- 日志存储位置 -->
    <logPath>/plumelog/lite</logPath>
    <!-- 日志保留天数 -->
    <keepDay>30</keepDay>
</appender>
        
        <!-- 添加 ref-->
    <root level="INFO">
    <appender-ref ref="plumelog"/>
    </root>

2、扫描配置

在springboot启动类里添加扫描路径,注意:如果原来你的项目没有扫描路径,不要只加这个,也要把你自己的项目的加了,不然只扫描plumelog的路径了

@ComponentScan("com.plumelog")

情况一:如果你的项目访问plumelog页面空白,说明没有配置可以访问静态文件请做如下配置 在application.properties配置:

spring.mvc.static-path-pattern=/**
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/

情况二:拦截器会覆盖spring.resources.static-locations,如果项目中有拦截器,需要在拦截器里配置静态文件访问

import com.plumelog.core.PlumeLogTraceIdInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class TraceIdInterceptorsConfig extends WebMvcConfigurerAdapter{
    private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {"classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/"};
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //就是这句addResourceLocations,加上静态文件访问路径
        registry.addResourceHandler("/**").addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS);
    }
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new PlumeLogTraceIdInterceptor());
        super.addInterceptors(registry);
    }

}

3、链路追踪设置

1、引入依赖

			<dependency>
				<groupId>com.plumelog</groupId>
				<artifactId>plumelog-trace</artifactId>
				<version>3.5</version>
			</dependency>

2、需要自己的项目引入aop的 (这里默认scope 为 provided)

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-aop</artifactId>
                <version>2.1.11.RELEASE</version>
                <scope>provided</scope>
                <!-- scope 为 provided 是为了不与使用者的版本冲突-->
            </dependency>

3、手动打点在需要记录的方法上加入@Trace就可以记录链路日志了
4、默认是开启扫描的,如果你的启动类放在自己的包路径下,要加上如下配置。

@ComponentScan({"com.plumelog","你项目的路径"})使得项目包含com.plumelog
//例子
@ComponentScan(basePackages = {"com.le.**", "com.system.**","com.plumelog"})

5、全局拦截配置链路日志

    @Aspect
    @Component
    public class AspectConfig extends AbstractAspect {
    
        @Around("within(com.xxxx..*))")//这边写自己的包的路径
        public Object around(JoinPoint joinPoint) {
            return aroundExecute(joinPoint);
        }
    }

6、如果不想再自己的控制台或者文件输出里看到trace日志可以通过添加过滤器过滤掉,logback的例子如下

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <!--此过滤器过滤掉所有的trace日志,3.4.1版本logback自带的过滤类-->
        <filter class="com.plumelog.logback.util.FilterSyncLogger">
            <level>info</level>
            <filterPackage>com.plumelog.trace.aspect.AbstractAspect</filterPackage>
        </filter>
        <encoder>
            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>\
            <charset>UTF-8</charset>
        </encoder>
    </appender>

在这里插入图片描述

4、访问日志

启动你的项目:输入你的项目地址+plumelog/#/访问,例如:http://localhost:8083/plumelog/#/ 一定要加这个/#/后缀

5、提示

其他的功能就各位自己去使用熟悉,根据下面的开源地址学习。

plumelog-lite开源地址(https://gitee.com/RemoteControl/plumelog-me/tree/master/plumelog-lite)

有些用3.5版本会报错:org.apache.lucene.store.LockObtainFailedException: Lock held by this virtual machine
情况一:springcloud-alibaba需要在你的启动类里面加:System.setProperty(“spring.cloud.bootstrap.enabled”, “false”);

示例:

public static void main(String[] args) {
        System.setProperty("spring.cloud.bootstrap.enabled", "false");
        SpringApplication.run(LogServerStart.class, args);
        }

情况二:如果用的logback.xml 改成logback-spring.xml;
情况三:用3.5.1以后版本-项目不是根目录导致,滚动日志无法连接


总结

  以上就是今天要讲的内容,本文简单介绍了plumelog-lite的使用,更加有效率的使用日志来解决问题,希望能帮助到大家。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值