分享一个将Log记录到文件中的工具类

本文介绍了一款名为Log2File的Android工具类,该工具能够帮助开发者在无法通过USB连接进行调试的情况下,将应用程序的日志记录到外部存储的文件中。文章详细介绍了Log2File的实现原理、使用步骤及应用场景。

本人博客地址: www.grackertalk.com ,欢迎收藏和访问


1.Log2File工具类的作用

这个工具类是用于Android程序将Log记录到文件中的类,类很简单,复制粘贴过去就可以直接用。
应用场景:
  1. 无法连接电脑进行调试(usb线被usbotg占用)
  2. Log不容易被抓取
  3. Bug出现很随机,不是必出现
  4. 其他自己脑补

2.Log2File工具类源码

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;

import android.content.Context;
import android.os.Environment;

public class Log2File
{
    private static boolean  logInit;
    private static BufferedWriter writer;
    
    private Log2File()
    {
        
    }
    
    /**
     * 初始化Log,创建log文件
     * @param ctx
     * @param fileName
     * @return
     */
    public static boolean init(Context ctx, String fileName)
    {
        if(!logInit)
        {           
            String state = Environment.getExternalStorageState();
            if (Environment.MEDIA_MOUNTED.equals(state))
            {
                File sdDir = Environment.getExternalStorageDirectory();
                File logDir = new File(sdDir.getAbsolutePath() + "/log2file/" + 
                        ctx.getPackageName() + "/");
                
                try {
                    if(!logDir.exists())
                    {
                        logDir.mkdirs();
                    }
                    
                    File logFile = new File(logDir, fileName);
                    logFile.createNewFile();
                    
                    writer = new BufferedWriter(new FileWriter(logFile, true));
                    logInit = true;
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
            }
            
        }
        
        return logInit;
    }
    
    /**
     * 写一条log
     * @param msg
     */
    public static void w(String msg)
    {
        if(logInit)
        {
            try {
                Date date = new Date();
                writer.write("[" + date.toLocaleString() + "] " + msg);
                writer.newLine();
                writer.flush();
            } catch (IOException e) {
                // TODO Auto-generated catch block
            }
        }
    }
    
    /**
     * 关闭log
     */
    public static void close()
    {
        if(logInit)
        {
            try {
                writer.close();
                writer = null;
                
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            logInit = false;
        }
    }
}

3.Log2File工具类的使用

这个工具类的使用比较简单,
1.首先调用init进行初始化
<pre code_snippet_id="158203" snippet_file_name="blog_20140115_2_2856205" name="code" class="java">public static boolean init(Context ctx, String fileName)
 
 
 

2.调用w写入log

   public static void w(String msg)
3.使用完毕后,记得要关闭Log

    public static void close()

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值