当前位置: 首页 > news >正文

Android写日志文件类

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import android.util.Log;

/**
 * 带日志文件输入的,又可控开关的日志调试
 * 
 * @author Dsw
 * @version 1.0
 * @data 2012-2-20
 */
public class DswLog {
	private static char    LOG_TYPE='v';							// 输入日志类型,w代表只输出告警信息等,v代表输出所有信息
	private static Boolean LOG_SWITCH = true; 						// 日志文件总开关
	private static Boolean LOG_WRITE_TO_FILE = true;				// 日志写入文件开关
	
	private static int  SDCARD_LOG_FILE_SAVE_DAYS = 0;				// sd卡中日志文件的最多保存天数

	private static String LOGFILENAME = "Log.txt";					// 本类输出的日志文件名称
	private static String LOG_PATH_SDCARD_DIR = "/sdcard/";			// 日志文件在sdcard中的路径
	
	private static SimpleDateFormat LogSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");	// 日志的输出格式
	private static SimpleDateFormat logfile = new SimpleDateFormat("yyyy-MM-dd");			// 日志文件格式

	public static void w(String tag, String text) {
		log(tag, text, 'w');
	}

	public static void e(String tag, String text) {
		log(tag, text, 'e');
	}

	public static void d(String tag, String text) {
		log(tag, text, 'd');
	}

	public static void i(String tag, String text) {
		log(tag, text, 'i');
	}

	public static void v(String tag, String text) {
		log(tag, text, 'v');
	}

	/**
	 * 根据tag, msg和等级,输出日志
	 * 
	 * @param tag
	 * @param msg
	 * @param level
	 * @return void
	 * @since v 1.0
	 */
	private static void log(String tag, String msg, char level) {
		if (LOG_SWITCH) {
			if ('i' == level) {
				Log.e(tag, msg);
			} else if ('e' == level) {
				Log.i(tag, msg);
			} else if ('w' == level) {
				Log.w(tag, msg);
			} else if ('d' == level) {
				Log.d(tag, msg);
			}else {
				Log.v(tag, msg);
			}
			
			if (LOG_WRITE_TO_FILE)
				writeLogtoFile(String.valueOf(level), tag, msg);
		}
	}

	/**
	 * 打开日志文件并写入日志
	 * 
	 * @return
	 * **/
	private static void writeLogtoFile(String mylogtype, String tag, String text) {
		Date nowtime = new Date();
		String needWriteFiel = logfile.format(nowtime);
		String needWriteMessage = LogSdf.format(nowtime) + " " + mylogtype + " " + tag + " " + text;
		
		File file = new File(LOG_PATH_SDCARD_DIR, needWriteFiel + LOGFILENAME);
		
		try {
			FileWriter filerWriter = new FileWriter(file, true);//后面这个参数代表是不是要接上文件中原来的数据,不进行覆盖
			BufferedWriter bufWriter = new BufferedWriter(filerWriter);
			bufWriter.write(needWriteMessage);
			bufWriter.newLine();
			bufWriter.close();
			filerWriter.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 删除制定的日志文件
	 * */
	public static void delFile() {
		String needDelFiel = logfile.format(getDateBefore());
		File file = new File(LOG_PATH_SDCARD_DIR, needDelFiel + LOGFILENAME);
		if (file.exists()) {
			file.delete();
		}
	}

	/**
	 * 得到现在时间前的几天日期,用来得到需要删除的日志文件名
	 * */
	private static Date getDateBefore() {
		Date nowtime = new Date();
		Calendar now = Calendar.getInstance();
		now.setTime(nowtime);
		now.set(Calendar.DATE, now.get(Calendar.DATE) - SDCARD_LOG_FILE_SAVE_DAYS);
		return now.getTime();
	}
}

  

相关文章:

  • 尚能饭否
  • 第九章 第一小节:打印机共享优先级
  • Linux下使用https访问站点
  • vSphere 5.0 新功能中文版说明
  • eclipse开启和去掉代码上面的快速导航栏(Toggle Breadcrumb)的方法
  • 获取矢量图层的属性值
  • wxWidgets利用tinyxml实现xml解析
  • 关于JAVA的常见误解
  • 乱起八糟用linux之快速查看进程pid
  • JS文件UTF-8格式的问题
  • 使用php mongodb扩展时比较需要注意的事项
  • [转载] 山楂树之恋——07-09
  • 计算硬盘分区使用的大小
  • as3 键盘事件多键同时按下
  • 关于ADSL宽带多重拨号的探究
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • AHK 中 = 和 == 等比较运算符的用法
  • Apache的基本使用
  • Brief introduction of how to 'Call, Apply and Bind'
  • Codepen 每日精选(2018-3-25)
  • eclipse的离线汉化
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • SpingCloudBus整合RabbitMQ
  • vue的全局变量和全局拦截请求器
  • 从重复到重用
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 聊聊redis的数据结构的应用
  • 模型微调
  • 三栏布局总结
  • 阿里云ACE认证之理解CDN技术
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 从如何停掉 Promise 链说起
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (02)vite环境变量配置
  • (33)STM32——485实验笔记
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (MATLAB)第五章-矩阵运算
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (分布式缓存)Redis持久化
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (理论篇)httpmoudle和httphandler一览
  • (一) springboot详细介绍
  • (一)appium-desktop定位元素原理
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .NET Core 项目指定SDK版本
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [ IO.File ] FileSystemWatcher
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [.net] 如何在mail的加入正文显示图片