Logger日志管理工具类
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Date; import org.apache.commons.lang3.time.DateFormatUtils; import android.os.Environment;
import android.util.Log; public class Logger {
private static int LOGLEVEL = 6;
private static int VERBISE = 1;
private static int DEBUG = 2;
private static int INFO = 3;
private static int WARN = 4;
private static int ERROR = 5; // 根据需要将Log存放到SD卡中
private static String path;
private static File file;
private static FileOutputStream outputStream;
private static String pattern = "yyyy-MM-dd HH:mm:ss"; static {
if (Utils.checkSD()) {
File externalStorageDirectory = Environment
.getExternalStorageDirectory();
path = externalStorageDirectory.getAbsolutePath() + "/Log/";
File directory = new File(path);
if (!directory.exists()) {
directory.mkdirs();
}
file = new File(new File(path), "Log.txt");
try {
outputStream = new FileOutputStream(file, true);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
} public static void v(String tag, String msg) {
if (LOGLEVEL > VERBISE) {
Log.v(tag, msg);
}
} public static void d(String tag, String msg) {
if (LOGLEVEL > DEBUG) {
Log.d(tag, msg);
}
} public static void i(String tag, String msg) {
if (LOGLEVEL > INFO) {
Log.i(tag, msg);
}
} public static void w(String tag, String msg) {
if (LOGLEVEL > WARN) {
Log.w(tag, msg);
}
} public static void e(String tag, String msg) {
if (LOGLEVEL > ERROR) {
Log.e(tag, msg);
}
} /**
* 将错误信息保存到SD卡中去!可选的操作!
*
* @param msg
* 传递的String类型
*/
public static void save2Sd(String msg) {
Date date = new Date();
String time = DateFormatUtils.format(date, pattern);
save(time, msg);
} /**
* 将错误信息保存到SD卡中去!可选的操作!
*
* @param e
* 传递的是Exception类型
*/
public static void save2Sd(Exception e) {
Date date = new Date();
String time = DateFormatUtils.format(date, pattern);
StringWriter writer = new StringWriter();
PrintWriter pw = new PrintWriter(writer);
e.printStackTrace(pw);
String msg = writer.toString();
save(time, msg);
} /**
* 保存的核心方法
* @param time 保存的时间
* @param msg 保存的信息
*/
private static void save(String time, String msg) {
if (Utils.checkSD()) {
if (outputStream != null) {
try {
outputStream.write(time.getBytes());
outputStream.write("\r\n".getBytes());
outputStream.write(msg.getBytes());
outputStream.write("\r\n".getBytes());
outputStream.flush();
} catch (IOException ex) {
ex.printStackTrace();
}
} else {
android.util.Log.i("SDCAEDTAG", "file is null");
}
}
}
}
Logger日志管理工具类的更多相关文章
- android的Log日志打印管理工具类(一)
android的Log日志的打印管理工具类: package com.gzcivil.utils; import android.util.Log; /** * 日志打印管理 * * @author ...
- Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!
Go/Python/Erlang编程语言对比分析及示例 本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性, ...
- LogCook 一个简单实用的Android日志管理工具
众所周知,日志的管理是软件系统很重要的一部分,千万不可忽略其重要性.完整的日志将会在系统维护中起着异常重要的作用,就好像磨刀不误砍柴工一样,日志就像对系统进行分析的工具,工具便捷了,对系统分析起来就能 ...
- 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil
封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创 ...
- 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,nloglogutil
封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创 ...
- web项目中日志管理工具的使用
在web项目中,很多时候会用到日志管理工具,常见的日志管理用具有:JDK logging(配置文件:logging.properties) 和log4j(配置文件:log4j.properties) ...
- CentOS7日志管理工具 journalctl
1.简介 日志管理工具journalctl是centos7上专有的日志管理工具,该工具是从message这个文件里读取信息. Systemd统一管理所有Unit的启动日志.带来的好处就是,可以只用jo ...
- Java程序员须知的七个日志管理工具(转)
Splunk vs. Sumo Logic vs. LogStash vs. GrayLog vs. Loggly vs. PaperTrails vs. Splunk>Storm 英文原文:T ...
- 日志管理工具之logrotate
Logrotate配置和测试 logrotate软件是一个日志管理工具,用于非分隔日志,删除旧的日志文件,并创建新的日志文件,起到“转储作用”,可以为系统节省磁盘空间.logrotate是基于cron ...
随机推荐
- jquery获取radio的值
Html代码是 <label><input type="radio" name="proofing" value="1"& ...
- php和node高并发 大数据量怎么处理
有的时候可能因为疏忽忘记注册Service直接就使用了,使用那个Service时会报异常.这种情况项目都是可以编译通过的,是一个不太容易发现的BUG,如果那个Service在测试时没有覆盖到这个BUG ...
- CSS行高line-height的一些深入理解及应用
一.一些字面意思. “行高”大约是指:一行文字的高度.具体来说是指两行文字间基线之间的距离.基线是在英文字母中用到的一个概念,我们刚学英语使用的那个英语本子每行有四条线,其中底部第二条线就是基线,是a ...
- LightOJ 1095 Arrange the Numbers-容斥
给出n,m,k,求1~n中前m个正好有k个在原来位置的种数(i在第i个位置) 做法:容斥,先选出k个放到原来位置,然后剩下m-k个不能放到原来位置的,用0个放到原来位置的,有C(m-k,0)*(n-k ...
- C++实现中缀表达式转前、后缀
#include<iostream> #include<string> #include<stack> using namespace std; bool isIn ...
- Salesforce apex标签的有关内容
局部刷新标签: apex:actionSupport event="onchange" action="{!changeSelect}" rerender=&q ...
- openstack添加数据库
输入:neutron-db-manage revision -m "表的名称" neutron-db-manage upgrade head 如果遇到版本名找不到的情 ...
- linux中fork()函数详解(转)
转自:http://blog.csdn.net/jason314/article/details/5640969 一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过 ...
- ios 实现在tableViewCell上面添加长按手势 删除该条cell以及列表后台数据等
自己的代码 需要 把属性更改成自己要使用的 //创建长按手势 在cellForRowAtIndexPath代理方法中 UILongPressGestureRecognizer *longPres ...
- ios打开系统自带APP
打开系统自带app 打开系统设置: [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root= ...