简单的Android日志文件记录类
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.text.SimpleDateFormat;
import java.util.Date;
public class MusicLog
{
private static MusicLog mMusicLog;
/**日志保存路径*/
private static final String LOG_SAVE_PATH = "sdcard/StackTraceLog/";
/**日志开关*/
private static final boolean LOG_SWITCH = false;
public static MusicLog MusicLogInstance(){
if(mMusicLog == null){
mMusicLog = new MusicLog();
}
return mMusicLog;
}
/**插入日志*/
public void addLog(String logStr){
if(LOG_SWITCH){
File file = checkLogFileIsExist();
if(file == null)
return;
FileOutputStream fos = null;
try
{
fos = new FileOutputStream(file, true);
fos.write((new Date().toLocaleString() + " " + logStr).getBytes("gbk"));
fos.write("\r\n".getBytes("gbk"));
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
finally{
try
{
if(fos != null){
fos.close();
fos = null;
}
}
catch (IOException e)
{
e.printStackTrace();
}
fos = null;
file = null;
}
}
}
/**检查日志文件是否存在*/
private File checkLogFileIsExist(){
if(!MemorySpaceManager.isSDExist()){
return null;
}
File file = new File(LOG_SAVE_PATH);
if(!file.exists()){
file.mkdirs();
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = sdf.format(new Date());
file = new File(LOG_SAVE_PATH + dateStr + ".txt");
if(!isLogExist(file)){
try
{
file.createNewFile();
}
catch (IOException e)
{
e.printStackTrace();
}
}
sdf = null;
return file;
}
/**
* 检查当天日志文件是否存在
* @param file
* @return
*/
private boolean isLogExist(File file){
File tempFile = new File(LOG_SAVE_PATH);
File[] files = tempFile.listFiles();
for(int i = 0; i < files.length; i++){
if(files[0].getName().trim().equalsIgnoreCase(file.getName())){
return true;
}
}
return false;
}
/**
* 打印异常堆栈信息
* @param e
* @return
*/
public static String getExceptionStackTrace(Throwable e){
if(e != null){
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
return sw.toString();
}
return "";
}
}
分享到:
相关推荐
Android日志打印类LogUtils.rar android端_手机端日志查看工具.rar app打印日志保存到手机上传服务器.rar javaapk.com文件列表生成.bat 动态错误提示效果Android.rar 实现抓取系统所有app的崩溃错误的log信息...
MAUtils 安卓常用工具类 查询联系人 插入联系人 查询短信 插入短信
创建格式化日期的日志文件,里面涉及到的一些日志获取和保存类,可学习参考,可用于其它的Android开发异常消息处理中。 包括有以下几个操作类: 日期工具类:实现了日期格式转化、获取各种日期的常用操作; ...
如果不想用一个日志文件,也支持每天建立一个日志文件,主要用作跟硬件相互通讯的程序中,当然其它类型的安卓程序一样可以使用,这是个一个kotlin版本的工具,java语言和kotlin都通用。希望能减少开发耗时,轮子哥的...
HyperLog Android概述日志格式下载初始化使用情况获取文件中的日志使用RequestBin示例测试端点将文件推送到远程服务器示例测试端点Django HyperLog Android概述日志格式下载初始化使用情况获取文件中的日志将日志...
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
LOG相关工具类(ToolLog.java) 功能待续-->切入记录异常日志,并存储文件或上传至服务器 已封装/收集自定义控件: 兼容低版本的SwitchButton 追加自定义属性Value的CheckBox/RadioButton/RadioGroup/SingleSpinner...
它基于Android Log类接口,但通过具有多个配置文件的自定义记录器和功能强大的String Clog零配置Kotlin多平台日志记录实用程序进行了改进,支持的平台/功能平台记录目标ANSI颜色标记推断SLF4J集成JVM控制台/ stdout:...
LOG相关工具类(ToolLog.java) 功能待续-->切入记录异常日志,并存储文件或上传至服务 器 已封装/收集自定义控件: 兼容低版本的SwitchButton 追加自定义属性Value的CheckBox/RadioButton/RadioGroup/...
-verbose # 混淆时是否记录日志 #混淆时所采用的算法 -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -keep public class * extends android.app.Activity # 保持哪些类不被混淆 -keep ...
切入记录异常日志,并存储文件或上传至服务器 已封装/收集自定义控件: 兼容低版本的SwitchButton 追加自定义属性Value的CheckBox/RadioButton/RadioGroup/SingleSpinner 圆角提示信息TipsView 圆角图片...
APK 文件通过 Travis CI 自动生成并上传,用户可在每个 GitHub 版本发行 中找到编译日志来校验文件 sha1 及 md5。 3. 请避免限制主应用及插件请求的权限。如出现来电时不显示悬浮窗,请先检查权限设置、权限管理...
在开头的某处)来打开调试日志记录。 打开此功能(当然还有重建)后,测试 lint 规则的项目必须在非守护进程模式下运行,否则不会显示日志: gradle --no-daemon lint包含的探测器SocketUsageDetectorAst:来自“在...
在模拟器和自己的机器上运行得好好的程序,不知道为什么在别人的机器上就会抛...为此我写了个LogDog类,可以和Log一样记录所有的日志,直到例外发生的时候。每个例外和日志一起记录在一个文件里,所有的信息一目了然。
使用API记录整个通信的简单机制。 所有请求和响应的参数都包括在内:标题,时间戳,状态码,cookie,主体描述等。 用于显示日志的预定义视图。 库使用James Smith( )编写的PersistentCookieStore和...
日志记录-用于调试和错误日志记录的详细信息 Intent和putExtra将消息发送到配方类,接收Intent并提取消息 通过扩展PrefernceActivity以及如何实现onPreferenceChangeListener来进行设置页面 通过首选项xml文件并使用...
TimeNote为珍惜时间,珍惜往事的人潜心开发的软件,一款具有独立文件与事件预测的跨平台日程管理软件(支持Android、IPhone与各PC平台)。本软件采用独家原创数据解码格式,支持云端异步操作,并能对普遍使用的ICS文件...
Qt支持 Windows、Linux/Unix、Mac OS X、Android、BlackBerry、QNX等多种平台,并为这些不同的平台提供了统一的开发环境。 面向对象 C++是完全面向对象的,这一点和Objective-c等在开发很相似。而Qt又是基于C++一...
切入记录异常日志,并存储文件或上传至服务器 已封装/收集自定义控件: 兼容低版本的SwitchButton 追加自定义属性Value的CheckBox/RadioButton/RadioGroup/SingleSpinner 圆角提示信息TipsView 圆角图片...