package com.pt.platform.core.common;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; public class JYLoggerUtil
{
private static final Logger log = LoggerFactory.getLogger(JYLoggerUtil.class); private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private static ThreadLocal<Map<String, Date>> threadMap = new ThreadLocal(); public static <T> void info(Class<T> clazz, String message)
{
Logger logger = LoggerFactory.getLogger(clazz);
logger.info(message);
} public static <T> void info(Class<T> clazz, String message, Throwable t) {
Logger logger = LoggerFactory.getLogger(clazz);
logger.info(message, t);
} public static <T> void debug(Class<T> clazz, String message) {
Logger logger = LoggerFactory.getLogger(clazz);
logger.debug(message);
} public static <T> void error(Class<T> clazz, String message)
{
Logger logger = LoggerFactory.getLogger(clazz);
logger.error(message);
} public static <T> void error(Class<T> clazz, String message, Exception ex) {
Logger logger = LoggerFactory.getLogger(clazz);
logger.error(message, ex);
} public static <T> void logCurrentTime(String key, boolean isStart, Class<T> cls)
{
if (!log.isInfoEnabled()) return; Map timeMap = (Map)threadMap.get();
if (timeMap == null) {
timeMap = new HashMap();
threadMap.set(timeMap);
} String mapKey = cls.getName() + ":" + key;
Date curDate = new Date();
if (isStart) {
timeMap.put(mapKey, curDate);
} else {
Date lastDate = (Date)timeMap.get(mapKey);
if (lastDate != null) {
timeMap.remove(mapKey);
StringBuilder logInfo = new StringBuilder("========="); logInfo.append(",(位置:").append(cls.getName());
logInfo.append(",内容:").append(key).append(")");
logInfo.append(",间隔:").append(curDate.getTime() - lastDate.getTime());
logInfo.append(",开始start:").append(sdf.format(lastDate));
logInfo.append(",结束end:").append(sdf.format(curDate)).append("========="); log.info(logInfo.toString());
threadMap.remove();
}
}
}
}

log工具类的更多相关文章

  1. Android开发中有用工具之--Log工具类

    在开发的过程中.我们常常会使用Log来输出日志,帮助我们来调试程序 可是有时候并不能全然满足我们的须要 ,比方我想知道这个日志信息是来自于哪一个包 哪一个类 所以我们封装一个这个Log类.方便我们的使 ...

  2. Android util.Log 工具类

    Android中的日志工具类是Log(android.util.Log),这个类中提供了如下5个方法来供我们打印日志. Log.v().用于打印那些最为琐碎的.意义最小的日志信息.对应级别verbos ...

  3. 封装Log工具类

    public class LogUtil { public static final int VERBOSE = 1; public static final int DEBUG = 2; publi ...

  4. Android Log工具类

    import java.text.SimpleDateFormat; import java.util.Date; import android.util.Log; public class LogU ...

  5. 封装一个简单好用的打印Log的工具类And快速开发系列 10个常用工具类

    快速开发系列 10个常用工具类 http://blog.csdn.net/lmj623565791/article/details/38965311 ------------------------- ...

  6. Android常见工具类封装

    MD5加密 import android.annotation.SuppressLint; import java.security.MessageDigest; public class MD5 { ...

  7. android的Log日志打印管理工具类(一)

    android的Log日志的打印管理工具类: package com.gzcivil.utils; import android.util.Log; /** * 日志打印管理 * * @author ...

  8. Log 日志工具类 保存到文件 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  9. Android开发之封装log打印日志的工具类,实用logutils详细代码

    public final class LogUtil { /** all Log print on-off */ private final static boolean all = true; /* ...

随机推荐

  1. Logstash学习之路(二)Elasticsearch导入json数据文件

    一.数据从文件导入elasticsearch 1.数据准备: 1.数据文件:test.json 2.索引名称:index 3.数据类型:doc 4.批量操作API:bulk {"index& ...

  2. 2021升级版微服务教程3—Eureka完全使用指南

    2021升级版SpringCloud教程从入门到实战精通「H版&alibaba&链路追踪&日志&事务&锁」 默认文件1610014380163 教程全目录「含视 ...

  3. MFC3 基本对话框的使用(三) 滑块与进度条(sdnu)(C++大作业)

    一.完成界面 运行前: 运行后: 二.工具 (1)滑块 (2)进度条 (3)文本框 (4)文本示例 (5)按钮 三.添加变量 四.添加事件 右键单击主对话框空白部分,打开类向导,选择"消息& ...

  4. 使用vs code搭建Q#开发环境 (Mac)

    Q# 是微软几年前发布的一门用于模拟量子编程的语言. 3年前我在当时风靡的博客网站 ITEYE 上发布过如何在windows上搭建其开发环境:Q#开发环境搭建.时过境迁,不但iteye不知何处去,连Q ...

  5. 敏捷史话(三):笃定前行的勇者——Ken Schwaber

    很多人之所以平凡,并不在于能力的缺失,而是因为缺乏迈出一步的勇气.只有少部分的人可以带着勇气和坚持,走向不凡.Ken Schwaber 就是这样的人,他带着他的勇气和坚持在敏捷的道路上不断前行,以实现 ...

  6. 区间合并 C++

    #include <iostream> #include <vector> #include <algorithm> using namespace std; ty ...

  7. 八:架构,搭建,WAF

    WAF防护分析 什么是WAF应用 如何快速识别WAF 识别WAF对于安全测试的意义 CMS识别技术 源码获取技术 架构信息获取 站点搭建分析 搭建习惯-目录型站点 sti.blcu-bbs 目录型站点 ...

  8. 18.java设计模式之中介者模式

    基本需求 智能家庭包括各种设备,闹钟.咖啡机.电视机.窗帘等 要看电视时,各个设备可以协同工作,自动完成看电视的准备工作,比如流程为:闹铃响起->咖啡机开始做咖啡->窗帘自动落下-> ...

  9. leetcode 321. 拼接最大数(单调栈,分治,贪心)

    题目链接 https://leetcode-cn.com/problems/create-maximum-number/ 思路: 心都写碎了.... 也许就是不适合吧.... 你是个好人... cla ...

  10. CWE 4.3:强化你的数据自我保护能力

    摘要:如何通过软件自动的检查法规中涉及的数据保护, 新版的CWE 4.3 给出了一个解决途径. 1. 按照惯例,先说故事 用12月初在深圳参加的"全球C++及系统软件技术大会"里C ...