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日志管理工具类的更多相关文章

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

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

  2. Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!

    Go/Python/Erlang编程语言对比分析及示例   本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性, ...

  3. LogCook 一个简单实用的Android日志管理工具

    众所周知,日志的管理是软件系统很重要的一部分,千万不可忽略其重要性.完整的日志将会在系统维护中起着异常重要的作用,就好像磨刀不误砍柴工一样,日志就像对系统进行分析的工具,工具便捷了,对系统分析起来就能 ...

  4. 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil

    封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创 ...

  5. 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,nloglogutil

    封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创 ...

  6. web项目中日志管理工具的使用

    在web项目中,很多时候会用到日志管理工具,常见的日志管理用具有:JDK logging(配置文件:logging.properties) 和log4j(配置文件:log4j.properties) ...

  7. CentOS7日志管理工具 journalctl

    1.简介 日志管理工具journalctl是centos7上专有的日志管理工具,该工具是从message这个文件里读取信息. Systemd统一管理所有Unit的启动日志.带来的好处就是,可以只用jo ...

  8. Java程序员须知的七个日志管理工具(转)

    Splunk vs. Sumo Logic vs. LogStash vs. GrayLog vs. Loggly vs. PaperTrails vs. Splunk>Storm 英文原文:T ...

  9. 日志管理工具之logrotate

    Logrotate配置和测试 logrotate软件是一个日志管理工具,用于非分隔日志,删除旧的日志文件,并创建新的日志文件,起到“转储作用”,可以为系统节省磁盘空间.logrotate是基于cron ...

随机推荐

  1. Linux 网络性能tuning向导

    本文的目的不完全在于提供调优信息,而是在于告诉读者了解Linux kernel如何处理数据包,从而能够在 自己的实践中发挥Linux 内核协议栈最大的性能 The NIC ring buffer 接收 ...

  2. intellig idea 快捷键

    可以在设置中更改为 eclipse 风格的快捷键. 默认 按住 ctlr + 左键,会调整到对应的声明处, 如果有实现类,eclipse中给予了选择. 在idea 中如果想直接调整到实现类,那么采用快 ...

  3. 阿里云 CentOS7.2 配置FTP+Node.js环境

    本人小白,写下这篇博客意在记录踩过的坑,大神请绕道~ 准备工作 安装自己喜欢的连接软件(一般是putty或者xshell),本人选择的是xshell,软件如图 : 通过软件中的ssh连接连接上已经购买 ...

  4. 解决“在UBUNTU下打开windows中创建的文本文件,中文显示乱码”的问题 。

    在UBUNTU下打开windows中用notepad等工具创建的txt或程序源码等文本文件,中文显示乱码,原因是windows中的txt文件编码方式为GBK,UBUNTU中为utf-8. 解决办法:在 ...

  5. java 枚举类型和数据二进制等问题思考

    .以下代码的输出结果是什么? int X=100; int Y=200; System.out.println("X+Y="+X+Y); System.out.println(X+ ...

  6. HashMap,HashTable ,LinkedHashMap,TreeMap的区别

    Map:主要是存储键值对,不允许键重复,但可以值重复. HashMap:根据键的HashCode值来存储数据,根据键直接获取值.具有很快的访问速度,遍历时,取得的数据值的顺序都是随机的.hashMap ...

  7. HDU 5861 Road

    首先要计算出每一条路最早开始的那一天,然后最晚结束的那一天. 这些天之间这条边都必须$open$,然后就变成一个线段树区间$+val$的问题了,最后询问一个每个点的$val$是多少. 注意:数据中有$ ...

  8. Debug / Inspect WebSocket traffic with Fiddler【转】

    Introduction I have recently written a project using SignalR, which supports HTML 5 WebSocket.  Howe ...

  9. Node.js:模块

    概要:本篇博客主要介绍node.js的模块 1.创建模块 在node.js中创建一个模块非常简单,因为一个文件就是一个模块.我们只需要明白如何从其他文件中获取这个模块.Node.js提供了 expor ...

  10. MySQL的NULL值处理

    我们已经知道MySQL使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作. 为了处理这种情况,MySQL提供了 ...