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. keyboard添加down按钮

    self.textView.inputAccessoryView = [self addToolbar]; - (UIToolbar *)addToolbar { UIToolbar *toolbar ...

  2. 我的学习记录JAVA第二天

  3. JAVA MONGODB group查询的UTC时间问题

    BasicDBList dateList = new BasicDBList(); dateList.add("$t"); dateList.add(28800000); DBOb ...

  4. 在cmd中连接数据库

    1.进入mysql安装路径的 mysql/bin 目录(即mysqld.exe所在目录) 2.在cmd中输入mysql进入mysql操作环境(mysql -u root -p )链接mysql并输入密 ...

  5. Inversions After Shuffle

    Inversions After Shuffle time limit per test 1 second memory limit per test 256 megabytes input stan ...

  6. java多线程并发编程

    Executor框架 Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService ...

  7. 寒假学干货之------android开发环境

    1.下载安装jdk(http://www.oracle.com/technetwork/java/javase/downloads/index.html)装se版的就可以了,复制jdk目录路径,之后配 ...

  8. CentOS 下网络报错 Device eth0 does not seem to be present

    在执行network服务重启后,出现Device eth0 does not seem to be present  问题,主要是因为系统之前有多个网卡配置,和配置文件不匹配造成的. 解决这种问题,思 ...

  9. prototype原型解析

    每个对象都有原型, prototype能够实现实例共享,节约使您有能力向对象添加属性和方法. 如 <script type="text/javascript"> fun ...

  10. js数组、对象、正则

    1.根据给定的条件在原有的数组上,得到所需要的新数组var a = [-1, -1, 1, 2, -2, -2, -3, -3, 3, -3];function f(s, e) {    var re ...