`
xutao5641745
  • 浏览: 227012 次
  • 性别: Icon_minigender_1
  • 来自: 汨罗
社区版块
存档分类
最新评论

JAVA 日志埋点

 
阅读更多

 

 JAVA 日志埋点使用总结:

环境:jdk1.7、tomcat7、win10、maven 3.2.5

 

一、  删除应用中所有的log jar包

二、  导入unslog jar包

  

<dependency>
     <groupId>com.uns.inf</groupId>
     <artifactId>unslog</artifactId>
     <version>1.0.0</version>
</dependency>

 

三、  在resource目录下追加unslog.properties(可选)

内容如下:

#项目名称(工程化项目自动获取,无需修改)
app_name=${projectName}
#日志级别
#log_level=info
#日志存放天数
#maxHistory=30
#业务埋点是否输出( true输出 false关闭 默认是关闭)
#bizlog=true
#控制台日志关闭 (true 打印 false关闭 默认是关闭)
#console=false

 

日志文件存放路径(在unslog.jar包中写死的路径):

windos在d://logs/应用名称/日期/日志文件

linux在 在/opt/ci/logs/应用名称/日期/日志文件

 

四、  日志打印实例

// 一般日志打印

    logger.info("test start");

 

// 日志规则ID(可统一编排)
     longbzId = 10000;
     // 创建日志对象
     UnsLogInfo uli = new UnsLogInfo(bzId);
     // 设置日志信息
     uli.put("userid", 12434);
     uli.put("userName", "name001");
     uli.put("startDt", new Date());
     // 打印业务日志
     logger.info(uli.toString());

 // 一般日志打印

 

     logger.info("test end");

五、  说明

日志规则ID:是业务埋点的唯一标示,不同的业务埋点不同,可以根据需要统一编制。

后台进行业务统计分析时重要的标示(日志规则ID对应后台的报警规则ID一个或多个,监控平台并进行统计分析)

 

注:如果日志采用slf4j的都可以灰度替换,其他的需要自己修改下LoggerFactory的获取方式(也是很简单的)

 

 

六、实践

1.导入unslog.jar包,在pom.xml文件中加入如下代码:

 

<dependency>
     <groupId>com.uns.inf</groupId>
     <artifactId>unslog</artifactId>
     <version>1.0.0</version>
</dependency>

2. 使用slf4j的Logger,因为它可以在log4j和logback之间随意切换,根据你使用的logjar包,代码如下:

 

 

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public final Logger log = LoggerFactory.getLogger(getClass());

 3.编写一个日志埋点的公用方法,代码如下:

 

 

/**
	 * 日志埋点
	 * @param curtran
	 * @param flag 1:成功,0:失败;bzId 日志规则ID
	 * @return
	 */
	public static String monitoring(Long bzId, Curtran curtran,String flag) {
	    // 创建日志对象
	    UnsLogInfo uli = new UnsLogInfo(bzId);
	    // 设置日志信息
	    if (Constant.TRUE.equals(flag)) {
	    	uli.setSuccess(1);
		} else {
			uli.setFailure(1);
		}
	    if (curtran != null) {
	    	uli.put("merchantId", curtran.getMerchantid());
	    	uli.put("terminalid", curtran.getTerminalid());
	    	uli.put("orderId", curtran.getTrannumber());
	    	uli.put("cardNo", curtran.getCard());
	    	uli.put("amount", curtran.getAmount());
		}
	    return uli.toString();
	}

 4.项目中应用,代码如下:

 

 

// 日志埋点
log.info("Monitoring unspay start");
// 打印业务日志
log.info(Common.monitoring(20005L, curtran, Constant.TRUE));
log.info("Monitoring unspay end");

 

 

 5.如果是WEB项目,想将控制台的日志输出在catalina.out文件中,则需要新建一个配置文件unslog.properties

在文件中添加如下内容:

#项目名称(工程化项目自动获取,无需修改)  
app_name=${projectName}
#日志级别  
#log_level=info  
#日志存放天数  
#maxHistory=30  
#业务埋点是否输出( true输出 false关闭 默认是关闭)  
bizlog=true
#控制台日志关闭 (true 打印 false关闭 默认是关闭)  
console=true

6.如果部署到Linux服务器,需要确认服务器上,是否有预先建立目录/opt/ci/logs 目录

 

7.注意要点:本次日志埋点使用的是logback,作为日志输出

 

8.JAR包下载(见附件) 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    log4web websocket实现埋点记录

    Log4web是一个基于Java的日志管理框架,它提供了强大的日志收集、存储和分析能力。而WebSocket则是一种在客户端和服务器之间建立长时间连接的协议,为实时通信提供了便利。将这两者结合起来,可以实现前端操作的实时...

    基于埋点日志数据的网络流量统计 - PV、UV

    PV、UV统计用到的数据文件

    浙政钉埋点:深入解析与应用实践.zip

    浙政钉埋点

    第二课:调用链核心技术-Agent采集埋点实现1

    4. **收集与传输数据**:埋点生成的数据应被收集并发送到日志系统或专门的追踪服务器,如 Zipkin 或 Jaeger。 5. **可视化展示**:在追踪服务器上,这些调用链数据可以被可视化展示,帮助开发者理解系统内部的工作...

    Android实现无埋点

    AspectJ是一个强大的面向切面编程(AOP)工具,它扩展了Java语言,允许开发者编写"切面",即关注点的模块化,如日志、事务管理或性能监控。在Android开发中,AspectJ可以用来拦截方法调用,方便地在不修改原有代码的...

    Android字节码插件,编译期间动态修改代码,改造添加全埋点日志采集功能模块

    本文将深入探讨如何利用Android字节码插件在编译期间动态修改代码,实现全埋点日志采集功能模块的添加,以及如何对常见控件进行监听处理。 首先,了解什么是字节码插件。在Android应用开发中,Gradle插件广泛用于...

    统一监控平台方案(日志监控、方法监控、调用链路监控)

    - **日志监控**:收集系统运行过程中的各类日志信息。 - **方法监控**:监测应用程序内部的方法执行情况,如执行时间、调用频率等。 - **JVM监控**:跟踪Java虚拟机的运行状态,包括内存使用情况、垃圾回收等。 - **...

    Android-埋点计时Gradle插件利用ASM插入字节码

    在Android应用开发中,埋点计时是一种常见的性能优化手段,它可以帮助开发者了解应用程序的关键操作执行的时间消耗,以便找出性能瓶颈。"Android-埋点计时Gradle插件利用ASM插入字节码"是一个专为Android开发设计的...

    基于Java和Vue的用户行为分析画像系统设计源码

    该项目是一个商用产品开源,包括用户埋点数据采集、用户标签分群和画像、智慧运营、营销等。项目采用Nginx+Flume+kafka实现日志收集,Flink进行实时流处理,ClickHouse作为实时数仓,HDFS作为数据备份。适合用于学习...

    司徒放:鹰眼下的淘宝

    鹰眼是淘宝的分布式日志跟踪系统,通过收集和分析在不同的网络调用中间件上的日志埋点,可以得到同一次请求上的各个系统的调用链关系,有助于梳理系统间的依赖来源关系、容量规划,也有助于分析系统调用瓶颈、定位...

    skywalking java agent包,用于注入java探针

    SkyWalking 的 Java Agent 就是利用了这种机制,通过在 JVM 启动时添加 `-javaagent` 参数,使得 SkyWalking 能够自动对目标应用进行探针埋点,收集服务间调用的链路信息以及各种性能指标。 以下是关于 SkyWalking ...

    一个轻量级的分布式日志标记追踪神器,10分钟即可接入,自动对日志打标签完成微服务的链路追踪

    TLog是一个轻量级的分布式日志标记追踪...支持日志标签的自定义模板的配置,提供多个系统级埋点标签的选择。支持异步线程的追踪,包括线程池,多级异步线程等场景。几乎无性能损耗,快速稳定,经过压测,损耗在0.01%

    AspecProject.rar

    【AspectJDemo埋点】项目是一个使用AspectJ技术进行日志埋点的示例工程,旨在展示如何通过面向切面编程(AOP)来实现应用中的监控与数据分析。AspectJ是一种强大的Java语言扩展,它引入了切面的概念,使得我们可以将...

    java开发推荐简历模板.docx

    - **技术实现**:例如,使用SpringAop进行日志埋点,Spring Security + JWT实现RBAC权限控制,Docker+Jenkins进行持续集成和部署等。 5. **项目经历**: - **项目描述**:简述项目背景、技术架构和主要功能,这能...

    java版ss源码-SkyEye:对java、scala等运行于jvm的程序进行实时日志采集、索引和可视化,对系统进行进程级别的监控,对系统内

    kafka的监控消费组,app在日志中进行各种event埋点(如:第三方异常报警、请求耗时异常报警等) business-group: kafka的业务消费组 trace-group: 通过日志进行rpc调用trace跟踪(dapper论文) es: 日志存储db,并...

    基于Dubbo埋点的分布式调用跟踪系统.zip

    1. **Dubbo**:Dubbo是阿里巴巴开源的一款高性能、轻量级的Java RPC框架,它提供了服务注册、服务发现、负载均衡、流量控制、熔断等核心功能,是构建分布式系统的关键组件。在本项目中,Dubbo负责服务之间的通信,...

    AOP编程之AspectJ实战

    AOP通过将关注点(如日志记录、事务管理、安全性检查等)分离到单独的模块,称为“切面”(Aspects),来简化应用程序的设计和维护。AspectJ是Java平台上的一个开源框架,它提供了强大的AOP支持,使得开发者能够方便...

    TLog分布式日志标记追踪器-其他

    支持日志标签的自定义模板的配置,提供多个系统级埋点标签的选择 支持异步线程的追踪,包括线程池,多级异步线程等场景 几乎无性能损耗,快速稳定 TLog 更新日志: v1.3.1 bug: #I3RROF:xxljob的依赖会强制传递

    java7源码-android:安卓

    同时,还可对手机进行基于Monkey原理的压力测试,针对某一款app进行控件遍历测试,埋点统计,接口测试等,此外,还可以对手机的CPU、内存、电池温度、CPU温度、流量使用情况进行检测,返回包括日志和截图的详细测试...

Global site tag (gtag.js) - Google Analytics