因为软件是在机器上跑的,不是在手机上跑的,所以就需要生成日志文件来记录一些比较重要的操作或者状态。
首先用到的是两个相关的工具类:

LocalLog.java

import android.annotation.SuppressLint;import java.text.SimpleDateFormat;
import java.util.Date;/*** Created by zcf on 2020/9/18.*/
final class LocalLog {private Date mLogTime;private String mLogTag;private String mLogMessage;public LocalLog(String logTag, String logMessage) {mLogTag = logTag;mLogMessage = logMessage;mLogTime = new Date();}@SuppressLint("SimpleDateFormat")private SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");@Overridepublic String toString() {String date = format1.format(mLogTime);return "[" + date + "] [" + mLogTag + "] " + " " + mLogMessage;}
}

LogHandler.java

import android.text.TextUtils;
import android.util.Log;import org.apache.commons.io.FileUtils;import java.io.File;
import java.io.IOException;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;/*** Created by zcf on 2020/9/18.*/public class LogHandler {private static final Lock sLock = new ReentrantLock();private static ExecutorService mService = Executors.newFixedThreadPool(2);private static ConcurrentLinkedQueue<String> mQueue = new ConcurrentLinkedQueue<>();private static File mLogFile;private LogHandler() {}public static void initLogFile(File file) {//删除目录if (file.exists() && file.isDirectory()) {try {FileUtils.deleteDirectory(file);} catch (IOException e) {}}//创建文件if (!file.exists()) {try {file.getParentFile().mkdirs();file.createNewFile();Log.i("LOGHANDLER","创建日志文件成功");LogHandler.writeFile("LOGHANDLER","创建日志文件成功");} catch (IOException e) {LogHandler.writeFile("LOGHANDLER","创建日志文件失败" + e.getMessage());}}if (file.exists() && file.isFile()) mLogFile = file;else throw new RuntimeException("is not file :" + file);}public static void writeFile(String tag, String string) {mQueue.add(new LocalLog(tag, string).toString() + "\r\n");mService.execute(mRunnable);}private static Runnable mRunnable = new Runnable() {@Overridepublic void run() {sLock.lock();try {StringBuilder msg = new StringBuilder();while (!mQueue.isEmpty()) {msg.append(mQueue.poll());}if (!TextUtils.isEmpty(msg.toString())) {FileUtils.writeStringToFile(mLogFile, msg.toString(), true);msg.delete(0, msg.length());}} catch (IOException e) {e.printStackTrace();LogHandler.writeFile("LOGHANDLER","创建日志文件失败" + e.getMessage());} finally {sLock.unlock();}}};}

主要就是用到了这两个类。
然后要在你的应用的Application类中(没有的,自己写一个继承Application)。

public static final String LOG_FILE = Environment.getExternalStorageDirectory() + "/logs/goods/goods_" + DateUtils.getDate1() + ".log";

这个是生成的日志文件。

在这个类的onCreate()方法中:
加入

LogHandler.initLogFile(new File(LOG_FILE));

这里是初始化,生成日志文件。

然后就可以在需要的地方写入了:

这个是初始化,每次只调用一次。


这个是往日志文件里写,每次都要调用。

例:

就会在日志文件里看到这句话了。

我这里写的是,每次 重启软件,就是每次调用Application的onCreate()方法,才会去判断是否是新的一天,才会去判断是否要生成新的日志文件。

Android运行程序生成日志文件相关推荐

  1. 另一种办法直接在宿主机上的文件夹内查看Docker镜像运行的日志文件

    我们可以用docker ps首先找到某个Docker容器的id,再使用关键字docker logs <容器id>打印出该容器产生的日志: 同样,在宿主机目录/var/lib/docker/ ...

  2. android查看报错日志,android运行错误日志帮看下 不懂啊

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 xmlns:tools="http://schemas.android.com/tools" android:id="@id ...

  3. android怎么看错误日志,android运行错误日志帮看下 不懂啊

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 xmlns:tools="http://schemas.android.com/tools" android:id="@id ...

  4. c++日志文件中文显示乱码的问题及解决办法

    近段时间在做战斗系统,昨天观察日志时发现中文显示乱码,而且奇怪的是有些中文日志是正常的,有些中文日志乱码 就是下面这种表现 Debug - Thu Oct 24 20:42:35 2019 : sys ...

  5. linux启动jar包指定日志输出目录下,linux 启动jar包 指定yml配置文件和输入日志文件...

    命令为: nohup java -jar project.jar  --spring.config.location=/home/project-conf/application.yml >  ...

  6. Android APP测试的日志文件抓取

         1    log文件分类简介 实时打印的主要有:logcat main,logcat radio,logcat events,tcpdump,还有高通平台的还会有QXDM日志 状态信息的有: ...

  7. Android 捕获异常,并打印日志文件到本地

    开发过程中或多或少肯定会出现异常问题,有的可以百分百复现,可以很快的定位到问题,但有的只是偶尔出现一次,定位问题会困难很多,可以使用CrashHandlerManager(主要定位会造成崩溃的异常)和 ...

  8. Android捕捉崩溃日志并输出日志文件

    Android捕捉崩溃日志并输出日志文件 当程序与运行时发生崩溃,可以捕捉到当前崩溃的日志信息并写入文件保存到指定的目录下.这里还做了最大文件数量限制,超过数量即删除旧日志文件. import jav ...

  9. Android中对Log日志文件的分析[转]

    一,Bug出现了, 需要"干掉"它 bug一听挺吓人的,但是只要你懂了,android里的bug是很好解决的,因为android里提供了LOG机制,具体的底层代码,以后在来分析,只 ...

最新文章

  1. iframe 数据传递
  2. 三、【SAP-PM模块】PM模块主数据
  3. elementui表格-改变某一列的样式
  4. php 去掉实体,用PHP删除除5个预定义HTML实体之外的所有实体的最佳方法-用于XHTML5输出...
  5. vscode open in browser 默认浏览器
  6. Scihub永久链接
  7. cadence电阻在哪个库_cadence元件库介绍
  8. java根据位置信息切割图片
  9. android仿钉钉日程日历,Flutter仿钉钉考勤日历的示例代码
  10. line-height绝对值和相对值的区别
  11. 使用Dubbo实现简单的RPC调用(Spring配置文件版)
  12. SCOI2012 Blinker的仰慕者 BZOJ 2757
  13. 【Java 数据结构 算法】宁可累死自己, 也要卷死别人 18 贪心算法
  14. 6.3 收敛性与稳定性
  15. 手机主板ESD设计注意事项
  16. Win7 安装最新版本Process Monitor失败,“无法加载驱动”
  17. error: could not create 'xxxxxx': Permission denied
  18. 内置式永磁电机maxwell2d_基于ANSYSMaxwell2D分析异步起动永磁同步电机
  19. 分享两个百度网盘提速方法
  20. 【103期分享】4款小清新PPT模板免费下载

热门文章

  1. Qt Creator删除toolbar中多余的“分隔符”
  2. 2022年美容师(中级)找解析及美容师(中级)模拟试题
  3. tiny4412 驱动 (16)aplay问题
  4. HTML 中 id、name、class 区别
  5. 格雷码编码与二进制的关系
  6. 拉里·佩奇:创新就是“漠视不可能”
  7. xml字符串转换为json对象
  8. Chrome插件之批量获取淘宝视频URL工具
  9. adwcleaner_AdwCleaner中文版
  10. 知网文件CAj转pdf(可选中文字)的开源工具