代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
java的jdk生成日志信息
作者:
/ 发布于
2018/4/8
/
642
第一个类: 分析引擎sdk java服务器端数据收集--AnalyticsEngineSDK2 package com.my.util; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; /** * 分析引擎sdk java服务器端数据收集 * * @version 1.0 * */ public class AnalyticsEngineSDK2 { // 日志打印对象 private static final Logger log = Logger.getGlobal(); // 请求url的主体部分 public static final String accessUrl = "http://192.168.142.116/log.jpg"; private static final String platformName = "java_server"; private static final String sdkName = "jdk"; private static final String version = "1"; /** * 触发订单支付成功事件,发送事件数据到服务器 * * @param orderId * 订单支付id * @param memberId * 订单支付会员id * @return 如果发送数据成功(加入到发送队列中),那么返回true;否则返回false(参数异常&添加到发送队列失败). */ public static boolean onChargeSuccess(String orderId, String memberId) { try { if (isEmpty(orderId) || isEmpty(memberId)) { // 订单id或者memberid为空 log.log(Level.WARNING, "订单id和会员id不能为空"); return false; } // 代码执行到这儿,表示订单id和会员id都不为空。 Map<String, String> data = new HashMap<String, String>(); data.put("u_mid", memberId); data.put("oid", orderId); data.put("c_time", String.valueOf(System.currentTimeMillis())); data.put("ver", version); data.put("en", "e_cs"); data.put("pl", platformName); data.put("sdk", sdkName); // 创建url String url = buildUrl(data); // 发送url&将url加入到队列 SendDataMonitor2.addSendUrl(url); return true; } catch (Throwable e) { log.log(Level.WARNING, "发送数据异常", e); } return false; } /** * 触发订单退款事件,发送退款数据到服务器 * * @param orderId * 退款订单id * @param memberId * 退款会员id * @return 如果发送数据成功,返回true。否则返回false。 */ public static boolean onChargeRefund(String orderId, String memberId) { try { if (isEmpty(orderId) || isEmpty(memberId)) { // 订单id或者memberid为空 log.log(Level.WARNING, "订单id和会员id不能为空"); return false; } // 代码执行到这儿,表示订单id和会员id都不为空。 Map<String, String> data = new HashMap<String, String>(); data.put("u_mid", memberId); data.put("oid", orderId); data.put("c_time", String.valueOf(System.currentTimeMillis())); data.put("ver", version); data.put("en", "e_cr"); data.put("pl", platformName); data.put("sdk", sdkName); // 构建url String url = buildUrl(data); // 发送url&将url添加到队列中 SendDataMonitor2.addSendUrl(url); return true; } catch (Throwable e) { log.log(Level.WARNING, "发送数据异常", e); } return false; } /** * 根据传入的参数构建url * * @param data * @return * @throws UnsupportedEncodingException */ private static String buildUrl(Map<String, String> data) throws UnsupportedEncodingException { StringBuilder sb = new StringBuilder(); sb.append(accessUrl).append("?"); for (Map.Entry<String, String> entry : data.entrySet()) { if (isNotEmpty(entry.getKey()) && isNotEmpty(entry.getValue())) { sb.append(entry.getKey().trim()).append("=").append(URLEncoder.encode(entry.getValue().trim(), "utf-8")) .append("&"); } } return sb.substring(0, sb.length() - 1);//去掉最后& } /** * 判断字符串是否为空,如果为空,返回true。否则返回false。 * * @param value * @return */ private static boolean isEmpty(String value) { return value == null || value.trim().isEmpty(); } /** * 判断字符串是否非空,如果不是空,返回true。如果是空,返回false。 * * @param value * @return */ private static boolean isNotEmpty(String value) { return !isEmpty(value); } } 第二个类:发送url数据的监控者,用于启动一个单独的线程来发送数据----SendDataMonitor2 package com.my.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; import java.util.logging.Level; import java.util.logging.Logger; /** * 发送url数据的监控者,用于启动一个单独的线程来发送数据 * * */ public class SendDataMonitor2 { // 日志记录对象 private static final Logger log = Logger.getGlobal(); // 队列,用户存储发送url private BlockingQueue<String> queue = new LinkedBlockingQueue<String>(); // 用于单列的一个类对象 private static SendDataMonitor2 monitor = null; private SendDataMonitor2() { // 私有构造方法,进行单列模式的创建 } /** * 获取单列的monitor对象实例 * * @return */ public static SendDataMonitor2 getSendDataMonitor() { if (monitor == null) { synchronized (SendDataMonitor2.class) { if (monitor == null) { monitor = new SendDataMonitor2(); Thread thread = new Thread(new Runnable() { @Override public void run() { // 线程中调用具体的处理方法 SendDataMonitor2.monitor.run(); } }); // 测试的时候,不设置为守护模式 // thread.setDaemon(true); thread.start(); } } } return monitor; } /** * 添加一个url到队列中去 * * @param url * @throws InterruptedException */ public static void addSendUrl(String url) throws InterruptedException { getSendDataMonitor().queue.put(url); } /** * 具体执行发送url的方法 * */ private void run() { while (true) { try { String url = this.queue.take(); // 正式的发送url HttpRequestUtil.sendData(url); } catch (Throwable e) { log.log(Level.WARNING, "发送url异常", e); } } } /** * 内部类,用户发送数据的http工具类 * */ public static class HttpRequestUtil { /** * 具体发送url的方法 * * @param url * @throws IOException */ public static void sendData(String url) throws IOException { HttpURLConnection con = null; BufferedReader in = null; try { URL obj = new URL(url); // 创建url对象 con = (HttpURLConnection) obj.openConnection(); // 打开url连接 // 设置连接参数 con.setConnectTimeout(5000); // 连接过期时间 con.setReadTimeout(5000); // 读取数据过期时间 con.setRequestMethod("GET"); // 设置请求类型为get System.out.println("发送url:" + url); // 发送连接请求 in = new BufferedReader(new InputStreamReader(con.getInputStream())); // TODO: 这里考虑是否可以 } finally { try { if (in != null) { in.close(); } } catch (Throwable e) { // nothing } try { con.disconnect(); } catch (Throwable e) { // nothing } } } } } 第三个类:测试类 package com.my.test; import com.my.util.AnalyticsEngineSDK2; public class Test2 { /** * * @Title: main * @Description: 测试本地连接nginx,访问nginx的资源:"http://192.168.142.116/log.jpg";然后生成日志信息 * @param @param args * @return void * @throws */ public static void main(String[] args) { AnalyticsEngineSDK2.onChargeSuccess("orderid123", "laoxiao123"); AnalyticsEngineSDK2.onChargeRefund("orderid456", "laoxiao456"); } }
试试其它关键字
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
贡献的其它代码
Label
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3