Skip to content

xlongwei/logserver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

logserver

项目简介

使用logback和light-4j构建的简单日志服务,参考项目logbackserverlight4j。logserver的设计初衷是聚合日志,解决登录多个linux主机查找日志的痛点。日志量大时使用grep方式有性能瓶颈,因此可选使用light-search创建索引和搜索。

本地测试
  1. 项目构建:mvn package dependency:copy-dependencies -DoutputDirectory=target
  2. 运行服务:start.bat,打开首页index,点开tail跟踪日志
  3. client测试:client.bat,输入测试内容,浏览器会输出最新日志
  4. light-search索引服务:-Dlight-search=http://localhost:9200 -DuseIndexer=true -DuseSearch=true
  5. logger页签:可以动态变更应用日志级别,-Dlogger=name@url静态配置其他应用,logserver-spring-boot-starter支持自动注册,变更时需要密码
  6. trace跟踪日志:提供请求头X-Traceability-Id即可,后端通过MyCorrelationHandler写入MDC,并会在跨应用请求时传递此请求头
  7. sift分开存储:-Dsift,根据contextName分开存储日志,不参与搜索和索引,因此-Dlogfile依然需要,如果在root去掉ASYNC_FILE,则需要修改sift内的notify=true,以便向浏览器输出日志。
  8. my.pwd保存私密信息,-Dlogback.configurationFile=/home/logback.xml可以指定外部日志配置,编辑此文件即可变更日志级别。
线上部署
  1. 项目打包:sh start.sh deploy,打包为单独的fat-jar
  2. 运行服务:sh start.sh start,也可以java -jar target/logserver.jar
  3. 其他项目的日志配置参考client.xml,或者参考light4j,通过/etc/hosts指定logserver
  4. -Dlogfile=logs/all.logs 日志路径,logserver自身日志输出到Console,其他client应用日志输出到logfile
  5. -Djava.compiler=none,禁用JIT可节约内存,默认启用JIT可提高性能
  6. 定时压缩日志(logserver不再搜索),56 23 * * * sh /soft/shells/tgz_logs.sh >> /var/log/mycron_clears.log,
  7. filebeat模式:vi start.sh,打开filebeat注释,用于跟踪多个日志文件,并发送日志内容到logserver,也支持redis媒介
  8. 可选redis媒介:打开-Dredis注释,支持pubsub发布订阅和pushpop消息队列,日志发送方参考logback.xml,并且需要复制RedisAppender类到正确的包下面
  9. -Dfiles=false关闭files页签,-Dlogger=logserver@log配置logger页签,-Dmask=password(3,8)配置日志脱敏(password之后的第3至8个字符加星*)
<dependency>
    <groupId>com.xlongwei.logserver</groupId>
    <artifactId>logserver-spring-boot-starter</artifactId>
    <version>0.0.3</version>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

-Dlogserver.token=xlongwei
-Dlogserver.remoteHost=192.168.1.99
-Dmanagement.endpoints.web.exposure.include=logserver

logserver:
  remoteHost: 192.168.1.99 #指定logserver
  token: xlongwei #安全校验,需要与logserver的lajax.token一致
management: #需要依赖spring-boot-starter-actuator
  endpoints:
    web:
      exposure:
        include: logserver #开启LogserverEndpoint,让logserver变更日志级别

前端日志

  1. lajax:var logger = new Lajax(url); logger.info(arg1,...args);
  2. logserver.js:Lajax.logLevel='info'; Lajax.logServer=false; Lajax.logConsole=true; Lajax.token='xlongwei';
  3. uni-app:var logger = require('../../common/logserver.js').logger; logger.info('onReady index.vue');
var logger = new Lajax({
	url:'/lajax',//日志服务器的 URL
	autoLogError:false,//是否自动记录未捕获错误true
	autoLogRejection:false,//是否自动记录Promise错误true
	autoLogAjax:false,//是否自动记录 ajax 请求true
	//logAjaxFilter:function(ajaxUrl, ajaxMethod) {
	//	return false;//ajax 自动记录条件过滤函数true记录false不记录
	//},
	stylize:true,//是否要格式化 console 打印的内容true
	showDesc:false,//是否显示初始化描述信息true
	//customDesc:function(lastUnsend, reqId, idFromServer) {
	//	return 'lajax 前端日志模块加载完成。';
	//},
	interval: 5000,//日志发送到服务端的间隔时间10000毫秒
	maxErrorReq:3 //发送日志请求连续出错的最大次数
});
整体设计

设计图:底层使用logback+socket、lajax+http传输日志,后端推荐logback.xml方式,可选starter依赖,前端支持web和uni-app形式,logserver可选使用light-search+lucene创建索引,详细用法见wiki

logserver

演示地址:https://log.xlongwei.com/

search

Nginx配置

登录认证见pass.db生成命令,nginx配置参考log.conf

About

使用logback和light-4j构建的简单日志服务。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published