log日志应用 自定义的log
package com.kxd.utils; import java.util.Hashtable; import android.util.Log; /**
* The class for print log
*
*/
public class MyLogger {
private final static boolean logFlag = true; // 调试模式 true 上线模式 false public final static String tag = "远程银行";// 日志打印 tag
private final static int logLevel = Log.VERBOSE; // 日志级别
// 集合
private static Hashtable<String, MyLogger> sLoggerTable = new Hashtable<String, MyLogger>();
private String mClassName; // 不同开发人员的日志使用对象
private static MyLogger djyLog; // 开发人员的名字
private static final String DJY = "djy"; private MyLogger(String name) {
mClassName = name;
} /**
*
* @param className
* @return
*/
@SuppressWarnings("unused")
private static MyLogger getLogger(String className) {
MyLogger classLogger = (MyLogger) sLoggerTable.get(className);
if (classLogger == null) {
classLogger = new MyLogger(className);
sLoggerTable.put(className, classLogger);
}
return classLogger;
} /**
* Purpose:Mark user djy
*
* @return
*/
public static MyLogger getDJYLog() {
if (djyLog == null) {
djyLog = new MyLogger(DJY);
}
return djyLog;
} /**
* Get The Current Function Name
*
* @return
*/
private String getFunctionName() {
StackTraceElement[] sts = Thread.currentThread().getStackTrace();
if (sts == null) {
return null;
}
for (StackTraceElement st : sts) {
if (st.isNativeMethod()) {
// 本地方法native jni
continue;
}
if (st.getClassName().equals(Thread.class.getName())) {
// 线程
continue;
}
if (st.getClassName().equals(this.getClass().getName())) {
// 构造方法
continue;
}
return mClassName + " [ 线程:" + Thread.currentThread().getName()
+ " - 文件名: " + st.getFileName() + " - 行数:"
+ st.getLineNumber() + " - 方法名:" + st.getMethodName()
+ " ]";
}
return null;
} /**
* The Log Level:i
*
* log等级:i
*
* @param str
*/
public void i(Object str) {
if (logFlag) {
if (logLevel <= Log.INFO) {
String name = getFunctionName();
if (name != null) {
Log.i(tag, name + " - " + str);
} else {
Log.i(tag, str.toString());
}
}
} } /**
* The Log Level:i
*
* log等级:i
*
* @param str
*/
public void i(String tag, Object str) {
if (logFlag) {
if (logLevel <= Log.INFO) {
String name = getFunctionName();
if (name != null) {
Log.i(tag, name + " - " + str);
} else {
Log.i(tag, str.toString());
}
}
} } /**
* The Log Level:d
*
* log等级:d
*
* @param str
*/
public void d(Object str) {
if (logFlag) {
if (logLevel <= Log.DEBUG) {
String name = getFunctionName();
if (name != null) {
Log.d(tag, name + " - " + str);
} else {
Log.d(tag, str.toString());
}
}
}
} /**
* The Log Level:V
*
* log等级:v
*
* @param str
*/
public void v(Object str) {
if (logFlag) {
if (logLevel <= Log.VERBOSE) {
String name = getFunctionName();
if (name != null) {
Log.v(tag, name + " - " + str);
} else {
Log.v(tag, str.toString());
}
}
}
} /**
* The Log Level:w
*
* log等级:w
*
* @param str
*/
public void w(Object str) {
if (logFlag) {
if (logLevel <= Log.WARN) {
String name = getFunctionName();
if (name != null) {
Log.w(tag, name + " - " + str);
} else {
Log.w(tag, str.toString());
}
}
}
} /**
* The Log Level:e
*
* log等级:e
*
* @param str
*/
public void e(Object str) {
if (logFlag) {
if (logLevel <= Log.ERROR) {
String name = getFunctionName();
if (name != null) {
Log.e(tag, name + " - " + str);
} else {
Log.e(tag, str.toString());
}
}
}
} /**
* The Log Level:e
*
* log等级:e
*
* @param ex
*/
public void e(Exception ex) {
if (logFlag) {
if (logLevel <= Log.ERROR) {
Log.e(tag, "error", ex);
}
}
} /**
* The Log Level:e
*
* log等级:e
*
* @param log
* @param tr
*/
public void e(String log, Throwable tr) {
if (logFlag) {
String line = getFunctionName();
Log.e(tag, "{Thread:" + Thread.currentThread().getName() + "}"
+ "[" + mClassName + line + ":] " + log + "\n", tr);
}
}
}
log日志应用 自定义的log的更多相关文章
- Android关于log日志,华为不输出log.v,log.d(zz)
[java] view plain copy 我用的是mate8,本来虚拟机测试一点日志一点问题没有 [java] view plain copy 但是真机测试发现log.d一直不输出,正好又试了lo ...
- Spring Boot Log 日志使用教程
我们编写任何 Spring Boot 程序,可能绕不开的就是 log 日志框架(组件). 在大多数程序员眼中日志是用来定位问题的.这很重要. 本项目源码下载 注意本项目提供的源码已在后期重新编写,有部 ...
- golang log日志
写入日志文件 func main() { file, err := os.Create("test.log") if err != nil { log.Fatalln(" ...
- scrapy框架之log日志
scrapy中的debug信息 在scrapy中设置log 1.在settings中设置log级别,在settings.py中添加一行: Scrapy提供5层logging级别: CRITICAL - ...
- JFinal - Log 日志
今天偶然发现 JFinal 的 Log 简单小巧.上代码. JFinal 在初始化的时候有初始化 Log. class Config { // ... static void configJFinal ...
- java中关于log日志
博:http://zhw2527.iteye.com/blog/1006302 http://zhw2527.iteye.com/blog/1099658 在项目开发中,记录错误日志是一个很有必要功能 ...
- 转 -Filebeat + Redis 管理 LOG日志实践
Filebeat + Redis 管理 LOG日志实践 小赵营 关注 2019.01.06 17:52* 字数 1648 阅读 24评论 0喜欢 2 引用 转载 请注明出处 某早上,领导怒吼声远远传来 ...
- C/C++log日志库比较
事实上,在C的世界里面没有特别好的日志函数库(就像Java里面的的log4j,或者C++的log4cxx).C程序员都喜欢用自己的轮子.printf就是个挺好的轮子,但没办法通过配置改变日志的格式或者 ...
- Log 日志工具类 保存到文件 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
随机推荐
- Mysql数据库--语句整理/提升/进阶/高级使用技巧
一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备 ...
- camera调试命令
问题:adb install -r Camera.apk 2864 KB/s (7603465 bytes in 2.592s)Failure [INSTALL_FAILED_UPDATE_INCOM ...
- 微信小程序内嵌网页能力开放 小程序支持内嵌网页文档说明
为了方便开发者灵活配置微信小程序,张小龙现在开放了小程序的内嵌网页功能,这是一个非常大的惊喜啊,以后意味着你只要开放一个手机端网站,就可以制作一个小程序了哦.操作方法1.开发者登录微信小程序后台,选择 ...
- Bean的基于注解的配置方式
Boss.class import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.a ...
- Eclipse用Runnable JAR file方式打jar包,并用该jar包进行二次开发
目录: 1.eclipse创建Java项目(带jar包的) 2. eclipse用Export的Runnable JAR file方式打jar包(带jar包的) 打jar包 1)class2json1 ...
- hdu5861【线段树】
题意: 有n个点,每个两两之间有一条路,给出每条路开放的花费,每条路只能打开关闭一次,然后m天里给出一个区间代表这条路必须在该天开放,求每天需要的花费. 思路: 这是一题纯粹用线段树搞的题. 我们可以 ...
- [Xcode 实际操作]九、实用进阶-(26)对Storyboard(故事版)中的文字标签(Label)进行本地化处理
目录:[Swift]Xcode实际操作 对Storyboard(故事版)中的文字标签(Label)进行本地化处理. 点击项目名称[DemoApp]进入项目信息面板. [Build Setting]-& ...
- IT兄弟连 JavaWeb教程 Servlet会话跟踪 Session技术
Servlet提供了HttpSession接口,该接口提供了一种跨多个页面请求或访问网站时识别用户以及存储有关用户信息的方式. Servlet容器使用这个接口来创建一个HTTP客户端和HTTP服务器之 ...
- boot接入elasticsearch
boot接入elasticsearch 参考博客:https://blog.csdn.net/li521wang/article/details/83792552 项目源码demo:https://g ...
- Spring源码(一)
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</lis ...