一个对安卓日志输出功能的优化
来源:互联网 发布:mac照片图库照片路径 编辑:程序博客网 时间:2024/06/18 15:12
日志在程序设计和调试中所起的作用不言而喻,因此一份保存完好的日志对于问题的发现和解决往往起着决定性的作用
在app中一般将日志输出到设备的data区保存为文本文档格式,方便后期导出查看
问题:当长时间不去清理这些日志文档时,文档会显得非常庞大臃肿,占用设备空间资源
思路:可以对输出的文本大小做一个限制,当输出到的文本大小超过设定限制,就将日志重新输出到新的文本中。
解决方法:始终保持向某一路径下的文本进行输入,当该路径下的文本大小超过限制,首先重命名该文本,然后重新生成默认的输出文本。
代码:
测试MainActivity.java
import android.content.Intent;import android.os.Environment;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.TextView;import com.ecity.android.log.LogUtil;public class MainActivity extends AppCompatActivity { private TextView mTextView; private static final String testString = "文章,1984年6月26日出生于陕西省西安市,中国内地男演员、导演。2006年毕业于中央戏剧学院表演系。2004年参演电视剧《与青春有关的日子》,开始在影视圈崭露头角。2005年拍摄古装剧《锦衣卫》。2007年主演赵宝刚导演的青春剧《奋斗》."; public static final String LOG_NAME = "MyTestProject"; public static final String LOG_SUFFIX = ".log"; private static String SINGLE_FILE_MAX_SIZE = "2KB"; private String mLogPath; private int index; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); initLogger(); initListener(); } @Override protected void onResume() { super.onResume(); initData(); } private void initLogger() { LogUtil.init(mLogPath, LOG_NAME, LOG_SUFFIX, LogUtil.LOG_LEVEL_INFO); int i = 0; while (i < 500) { LogUtil.i(this, testString); i++; } } private void initView() { mTextView = (TextView) findViewById(R.id.tv); } private void initData() { mLogPath = Environment.getExternalStorageDirectory().getPath() + "//MyTestProject//TestLog_17//"; } private void initListener() { mTextView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, TestActivity.class); startActivity(intent); } }); }}
自定义的文件路径生成器MyFilePathGenerator.java
public static class MyFilePathGenerator extends FilePathGenerator { private long mMaxSize; public MyFilePathGenerator(String dir, String filename, String suffix, long maxSize) { super(dir, filename, suffix); this.mMaxSize = maxSize; this.dir = dir; } @Override public String generateFilePath() { String path = null; if (TextUtils.isEmpty(dir)) { return path; } File logDir = new File(dir); if (!logDir.exists()) { logDir.mkdirs(); } Date myDate = new Date(); SimpleDateFormat fdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); String myDateString = fdf.format(myDate); StringBuffer buffer = new StringBuffer(); buffer.append(filename); //buffer.append("-"); //buffer.append(myDateString); buffer.append(suffix); file = new File(logDir, buffer.toString()); if (!file.exists()) { try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } return file.getAbsolutePath(); } @Override public boolean isGenerate() { if (file != null && file.length() >= mMaxSize) { generateFileWithTime(); file.renameTo(fileNew); } return (file == null) || !file.exists() || file.length() >= mMaxSize; } @Override public void onGenerate(String newPath, String oldPath) { } private String generateFileWithTime() { String path = null; if (TextUtils.isEmpty(dir)) { return path; } File logDir = new File(dir); if (!logDir.exists()) { logDir.mkdirs(); } Date myDate = new Date(); SimpleDateFormat fdf = new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss"); String myDateString = fdf.format(myDate); StringBuffer buffer = new StringBuffer(); buffer.append(filename); buffer.append("-"); buffer.append(myDateString); buffer.append(suffix); fileNew = new File(logDir, buffer.toString()); if (!fileNew.exists()) { try { fileNew.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } return fileNew.getAbsolutePath(); }}
日志库文件见附件Loglib
0 0
- 一个对安卓日志输出功能的优化
- 安卓日志输出-logger
- adb logcat输出安卓日志
- 安卓studio打印出日志输出
- 打造一个基于OSGi的Web Application——增加日志输出功能
- Resin中对日志输出的配置
- Resin中对日志输出的配置
- resin 配置对日志的输出
- Resin中对日志输出的配置
- [一个星期自学安卓]带排序功能的ListView
- 安卓之实现一个简单的电话拨号功能
- 安卓之实现一个简单的短信发送功能
- 安卓之实现一个简单的短信发送功能
- 安卓反编译:推荐一个最新反编译功能的工具
- 一个日志输出系统的设计
- 安卓使用log4j输出日志到文件
- 安卓 as 4.4机型 Logcat无法输出日志
- 一个很简单的日志类ZPLog, 用于输出日志
- codeforces788A —— Functions again —— dp
- 杭电oj(Java版)—— 1002 A + B Problem II
- 在CSS中对背景图片进行设置相关属性
- 单例模式之懒汉模式(延迟加载)
- MySQL必知必会
- 一个对安卓日志输出功能的优化
- PAT乙级(Basic Level)练习题 >童年生活二三事
- js运动-淡入淡出
- STM8S_001_GPIO基础知识
- Python Pylint编码规范学习笔记-1
- NoSQL数据库概述
- vi编辑器
- Maven私服Nexus3.X搭建
- lcd 画线函数原理