sentry开发
来源:互联网 发布:106短信平台软件 编辑:程序博客网 时间:2024/06/05 14:08
需求
按照文档需求,需要获取的信息如下:
ID
一个32位的数字,包含前后端标识4位(28~31)、模块名8位(20~27)、事件类型2位(18~19)、ID 编码8位(0~7)等信息级别
调试日志分为ERROR、WARN、INFO、DEBUG 两类jiffis
CPU当前的jiffs值时间
当前操作发生的时间User
当前操作的用户内容
采用谓+宾结构典型如“Succeed in doing something ”、“Fail to do
something”模块
调试日志所归属的模块和信息
获取
sentry收集到的信息中都包含上述信息,所有只要找到sentry向服务器发送的位置,然后获取这些信息,在写入本地即可。
创建LogInfo.java记录所需要的信息,里面包括上述的所有内容。
package com.getsentry.bean;public class LogInfo { String Id; String Level; String Jiffs; String Time; String User; String Message; String LineNumber; String FuncName; String ModelName; public String getId() { return Id; } public String getLevel() { return Level; } public String getJiffs() { return Jiffs; } public String getTime() { return Time; } public String getUser() { return User; } public String getMessage() { return Message; } public String getModelName() { return ModelName; } public void setId(String id) { Id = id; } public void setLevel(String level) { Level = level; } public void setJiffs(String jiffs) { Jiffs = jiffs; } public void setTime(String time) { Time = time; } public void setUser(String user) { User = user; } public void setMessage(String message) { Message = message; } public void setModelName(String modelName) { ModelName = modelName; } public String generateString() { return '[' + Id + ']' + '[' + Level + ']' + '[' + Jiffs + ']' + '[' + Time + ']' + '[' + User + ']' + '[' + Message + ']' + '[' + ModelName + ']' + '\n' ; }}
当在发送处获取信息之后,利用LogInfo创建对象info,调用info的get方法,将信息保存到该对象中,最后把该对象写入本地
判断链接
按照需求,需要的是sentry连接不上服务器的时候才需要将所需信息写入本地,所以还需要在源码中找到判断链接的地方
判断链接的代码路径是 :
raven-log4j/src/main/java/com/getsentry/raven/connection/AsyncConnection.java
代码的判断部分如下
public void run() { RavenEnvironment.startManagingThread(); try { // The current thread is managed by raven actualConnection.send(event); } catch (LockedDownException e) { lockdownLogger.warn("AsyncConnection The connection to Sentry is currently locked down.", e); } catch (Exception e) { logger.error("AsyncConnection An exception occurred while sending the event to Sentry.", e); // add by fangbc start 链接失败,就将日志写入本地 AsyncConnection.writeContent(SentryAppender.logInfo.generateString()); // add by fangbc end } finally { RavenEnvironment.stopManagingThread(); } }
该部分是判断链接是否成功的,在该方法中将获取的信息写入本地
写入本地
写入本地还需要指定写入的路径,为了方便后续,在配置文件log4j.properties中指定该路径
下面的代码从配置文件中读取路径,并将获取到的信息写入本地
// add by fangbc start 将获取到的信息写到本地。路径在log4j.properties中的LOG_PATH变量中指定。 public static void writeContent(String content) { String fileName = "log4j.properties"; Properties props = new Properties(); try { props.load(AsyncConnection.class.getClassLoader().getResourceAsStream(fileName)); } catch (IOException e) { e.printStackTrace(); } String PATH = props.getProperty("LOG_PATH"); FileOutputStream fop = null; File file; try { file = new File(PATH); fop = new FileOutputStream(file, true); if (!file.exists()) { file.createNewFile(); } byte[] contentInBytes = content.getBytes(); fop.write(contentInBytes); fop.flush(); fop.close(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (fop != null) { fop.close(); } } catch (IOException e) { e.printStackTrace(); } } } // add by fangbc end
这里的就是写入本地的方法
阅读全文
0 0
- sentry开发
- sentry
- 关于Sentry
- Sentry Robots
- sentry配置
- sentry配置
- Sentry 介绍
- sentry使用方法
- Sentry简介
- UVAlive 6156 Sentry Robots
- Sentry UDFWhiteList bug分析
- Impala Kerberos Sentry Doas
- Sentry介绍及使用
- log4j 集成sentry
- sentry搭建过程
- 纯净centOs 安装sentry
- Apache Sentry 初识
- CDH启用 sentry
- 尾调用
- SVN---主干到分支的详细操作!
- 应用统计学与R语言实现学习笔记(十一)——判别分析
- 转载自xiaoluo501395377的动态代理机制详解
- java复习笔记1
- sentry开发
- 内存块设备
- 18届校招准备中之前端面试题汇总
- 自制处理器OpenMIPS移植ucos-II过程之2——OpenMISP实践版及SOPC搭建
- java基础
- 用JS制作一个信息管理平台
- 人脸特征点检测(Facial landmark detection)
- 单例和多线程
- 机器学习相似度度量