导航:首页 > 操作系统 > android日志保存到文件

android日志保存到文件

发布时间:2023-04-30 20:32:59

‘壹’ microlog4android如何将Android Log日志写到SD

我们在进行Android开发时,经常会有这种粗薯体会,由于客户的设备型号各不相同,从而导致出现多种问题,但对于研发人员,因为没有log日志文件,不太容易定位问题的具体位置。所以我们急需一个能将程序日志写到SD卡文件里的工具,类似web的log4j那样。这时microlog4android进入我们的视野,虽然它尚有不足,但也已能满足大部分需求。

使用microlog4android的步骤如下:

1、下载

到http://code.google.com/p/microlog4android/downloads/list 下载microlog4android-1.0.0.jar和microlog.properties文件。

2、建立使用logger对象

private static final Logger logger = LoggerFactory.getLogger(main.class);

3、在程序的第一个activity的oncreate方法里初始化方法

PropertyConfigurator.getConfigurator(this).configure();

4、把microlog.properties文件放到assets文件夹

注意:assets文件夹是与res文件夹平级的。

然后更改microlog.properties文件为以下内容:

microlog.level=DEBUG microlog.appender=LogCatAppender;FileAppender microlog.formatter=PatternFormatter microlog.formatter.PatternFormatter.pattern=%c [%P] %m %T

5、写日志记录

logger.debug("这是debug信息");

6、在AndroidManifest.xml 添加写sd卡的权限

运行程序,然后到SD卡根目录,可以发现有一个microlog.txt的'文件,里面就是我们的日志了。

更改日志问价的路径和名称

有朋友问如何更改日志文件的路径和名称,在网上找了一通的资料,没找到答案,只好到https://github.com/johanlkarlsson/microlog4android 下载源代码,经过查看源代码的PropertyConfigurator类,发现源代码里有这么蔽凳清一个配置参数microlog.appender.FileAppender.File,这样应该就可以更改日志文件的路径和名称了。

配置文件如下:

microlog.level=DEBUG microlog.appender=FileAppender;LogCatAppender microlog.appender.FileAppender.File=mylog.txt microlog.formatter=PatternFormatter microlog.formatter.PatternFormatter.pattern=%c [%P] %m %T

运行程序,发现日志文件还是叫microlog.txt,更改名称无效,找了各种原因都无法解决,只好反编译我们之前下载的microlog4android-1.0.0.jar包,发现PropertyConfigurator这个类和刚刚从GIT下载的源代码PropertyConfigurator类不一样,microlog4android-1.0.0.jar包里的PropertyConfigurator类没有这样的一个宏前参数microlog.appender.FileAppender.File,只好把从GIT下载下来的源代码,重新打个包,暂时打成microlog4android-1.1.jar,然后重新运行程序,OK,搞定,日志文件名称变成了我们配置的mylog.txt。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

‘贰’ 安卓如何将log保存到文件中

相信大家在做应用调试的时候,不可能时时通过USB线连着电脑去查看log信息,所以,将应用的log信息保存到手机本地就很有必要了,有助我们从这些log信息中提取有用的部分,以解决一些bug,下面我把网上分享的代码中作了一些精简,作为开发者使用,个人觉得没必要通过用户上传给我们,用户上传的不需要这么庞大的log信息,仅仅那部分崩溃的log信息即可,可参考我的另外一篇blog:http://blog.csdn.net/weidi1989/article/details/7927273。
好了,废话不多说,直接分享封装好的log信息类:LogcatHelper
package com.way.util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;

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

/**
* log日志统计保存
*
* @author way
*
*/

public class LogcatHelper {

private static LogcatHelper INSTANCE = null;
private static String PATH_LOGCAT;
private LogDumper mLogDumper = null;
private int mPId;

/**
*
* 初始化目录
*
* */
public void init(Context context) {
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {// 优先保存到SD卡中
PATH_LOGCAT = Environment.getExternalStorageDirectory()
.getAbsolutePath() + File.separator + "miniGPS";
} else {// 如果SD卡不存在,就保存到本应用的目录下
PATH_LOGCAT = context.getFilesDir().getAbsolutePath()
+ File.separator + "miniGPS";
}
File file = new File(PATH_LOGCAT);
if (!file.exists()) {
file.mkdirs();
}
}

public static LogcatHelper getInstance(Context context) {
if (INSTANCE == null) {
INSTANCE = new LogcatHelper(context);
}
return INSTANCE;
}

private LogcatHelper(Context context) {
init(context);
mPId = android.os.Process.myPid();
}

public void start() {
if (mLogDumper == null)
mLogDumper = new LogDumper(String.valueOf(mPId), PATH_LOGCAT);
mLogDumper.start();
}

public void stop() {
if (mLogDumper != null) {
mLogDumper.stopLogs();
mLogDumper = null;
}
}

private class LogDumper extends Thread {

private Process logcatProc;
private BufferedReader mReader = null;
private boolean mRunning = true;
String cmds = null;
private String mPID;
private FileOutputStream out = null;

public LogDumper(String pid, String dir) {
mPID = pid;
try {
out = new FileOutputStream(new File(dir, "GPS-"
+ MyDate.getFileName() + ".log"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

/**
*
* 日志等级:*:v , *:d , *:w , *:e , *:f , *:s
*
* 显示当前mPID程序的 E和W等级的日志.
*
* */

// cmds = "logcat *:e *:w | grep \"(" + mPID + ")\"";
// cmds = "logcat | grep \"(" + mPID + ")\"";//打印所有日志信息
// cmds = "logcat -s way";//打印标签过滤信息
cmds = "logcat *:e *:i | grep \"(" + mPID + ")\"";

}

public void stopLogs() {
mRunning = false;
}

@Override
public void run() {
try {
logcatProc = Runtime.getRuntime().exec(cmds);
mReader = new BufferedReader(new InputStreamReader(
logcatProc.getInputStream()), 1024);
String line = null;
while (mRunning && (line = mReader.readLine()) != null) {
if (!mRunning) {
break;
}
if (line.length() == 0) {
continue;
}
if (out != null && line.contains(mPID)) {
out.write((MyDate.getDateEN() + " " + line + "\n")
.getBytes());
}
}

} catch (IOException e) {
e.printStackTrace();
} finally {
if (logcatProc != null) {
logcatProc.destroy();
logcatProc = null;
}
if (mReader != null) {
try {
mReader.close();
mReader = null;
} catch (IOException e) {
e.printStackTrace();
}
}
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
out = null;
}

}

}

}

}

记得加上权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_LOGS" />

另外把那个时间的工具类也分享一下:
package com.way.util;

import java.text.SimpleDateFormat;
import java.util.Date;

public class MyDate {
public static String getFileName() {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String date = format.format(new Date(System.currentTimeMillis()));
return date;// 2012年10月03日 23:41:31
}

public static String getDateEN() {
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date1 = format1.format(new Date(System.currentTimeMillis()));
return date1;// 2012-10-03 23:41:31
}

}

OK,所有事情做完之后,在我们的应用中start一下就OK了,使用完之后,记得调用一下stop:
public class GPSApplication extends Application {

@Override
public void onCreate() {
// TODO Auto-generated method stub
LogcatHelper.getInstance(this).start();
}
}

‘叁’ 安卓手机日志在哪里看

安卓的手机日志需要在手机文件管凯运理中查看。

1、首先在桌面上找到【文件管理器】图标,点击进入文件浏览页面。

2、在文件浏览页面,找到手机的系统文件夹。

3、在系统的文件夹中,找到带有【debug_log】字符的文件。这是手机的日志文件存放的位置,中文意思是【手机调试日志】。

4、进入文件夹后,可以文件夹中存放着以数字串命名的文件。这就是手机的日志文件。一般以手机日志生成日期命名,【、log】是日志的文件格式后缀。

5、打开任意一个日宽返志文件即可进行查看,日志文件中记录了手机许多信息,其中也包括一些隐私信息慎孙饥,用户操作需要注意隐私保护。

‘肆’ Android log4j如何把每条报错的日志存到文件里去

以DailyRollingFileAppender为例:假设每天一个日志文件有以下设置:log4j.appender.A1=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.A1.File=app.loglog4j.appender.A1.DatePattern='.'yyyy-MM-ddlog4j.appender.A1.layout=org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern=%d%5p-%c-%-4r[%t]-%m%n此时生成日志文件将位于tomcat的bin目录下,如要将日志文件保存在:根目肆岩录/web-info/logs/下,个人有以下4种解决方案:1绝对路径log4j.appender.A1.File=D:\apache-tomcat-6.0.18/webapps/项目/WEB-INF/logs/app.log但这种写法灵备歼活性很差以下3中使用相同的设置原理:jvm的环境变量2:spring的Log4jConfigListener通过以下配置:webAppRootKeywebApp.:log4j.propertiesorg.springframework.web.util.Log4jConfigListenerlog4j.appender.logfile.File=${webApp.root}/WEB-INF/logs/app.log来解决2:使用已有jvm变量:例如:log4j.appender.logfile.File=${user.home}/logs/app.log日志将位于:例如windows:C:\DocumentsandSettings\joe\logs\app.log3自己设置目录,也就是在项目启动时通过System.setProperty设置通过实现ServletContextListener来解决:例如{="log4jdir";publicvoidcontextDestroyed(){System.getProperties().remove(log4jdirkey);}publicvoidcontextInitialized(){Stringlog4jdir=servletcontextevent.getServletContext().getRealPath("/");//System.out.println("log4jdir:"+log4jdir);System.setProperty(log4jdirkey,log4jdir);}}web.xml配仿雹冲置:com.log4j.log4jlistenerlog4j.prtperties配置:log4j.appender.A1.File=${log4jdir}/WEB-INF/logs/app1.log来解决。

‘伍’ 如何获取 android 的系统日志 logcat

直接在命令行重定向即可将logcat中输出的日志保存到文件中。
android开发中如果如果要将logcat中输出信息的保存到文件中,按以下步骤:
1. 示例1: adb logcat > /sdcard/mylogcat.txt,表示将logcat的输出重定向到/sdcard/mylogcat.txt文件中。
2. 示例2: db logcat > D:/Temp/1.txt(1.txt必须存在,才能写入logcat内容),表示将logcat输出的日志保存到电脑D盘Temp目录下的1.txt中。

‘陆’ android logcat日志在哪个文件夹里面

如果使用的是 Eclipse 作为 IDE 的话,用 ADT 所提供的 logcat 显示界面可以直接做到你的需求。 在编辑的位置输入 app:your.package.name 便可以自动过滤包名为 your.package.name 的软件输出信息啦,如果在编写软件时注意了 Log.X 的使用,通过旁边的下拉菜单还可以根据日志的等级进行再一次进行的过滤。 TODO: 1. 打开 LogCat 2. 输入需要的包名,如图上的 com.android.phone 3. 根据需要选择日志等级,当然,如果没有细致的 Log.X 输出的话,推荐使用 verbose(详细) 4. 查看过滤后的结果 5. 待解决问题后,记得将 app:com.android.phone 删除,否则过滤会持续生效 后话:如果不嫌麻烦,在左边的 Saved Filters 字样旁边有一个加号,通过它可以手动生成一个可以保存的过滤器,可涉及的过滤范围诸如:日志等级、进程ID、包名等。

‘柒’ 安卓项目如何把日志输出到指定文件

你们公司这样的测试人员也要?测试人员要能抓出bug,导出log,最好能基本定位bug的出错位置。还要写得一手好脚本。你们这测试人员不专业啊。建议你写个脚本吧,就几行代码,用busybox执行

‘捌’ 如何把android开发的时候把LogCat里的内容复制出来如果不能复制,要是转储到文件中请说明详细步骤

logcat是android中用于输出日志用的

log可以保存到一个文件中,保存方式:

  1. 直接在logcat中 按 Ctlr + C 复制 注意,右键是没有复制粘

  2. 使用adb命令,将logcat重定向

  3. adb shell 进入shell模式

  4. 执行 logcat > c:log.txt 表示将logcat定向到这个文件中

‘玖’ Android Studio保存log到本地

很多android的开发者都有过使用cmd+adb logcat痛苦的输入输出指令来保存android的日志文件的经历(maybe exaggerate),Android studio使用软件内的终端避免了输入cmd指令打开系统终端,在键入adb的麻烦。

首先确认电脑系统的环境变量已经配置adb,如果没有配置,会出现以下的错误提示。

解决办法是将在电脑系统的系统变量“path”中对abd进行配置,找到adb.exe所在的路径并复制,然后将此路径添加到系统变量的“path”中,确认后,点击重启Android studio即可。

当环境配置完毕后,在AS的terminal窗口中,输入以下命令行:

如下图示

点击enter即开始保存log到本地,在完成log的保存后,按下ctrl+C即保存完毕。

‘拾’ android开发。我希望能实时的把log写到本地文件,请问如何实现

首先重新写一个Log类(比如MyLog,把Log外面在封装一遍)
第二步就是再封装的方法里把log信息写到本地文件

具体如下
public class MyLog {
public static void d(String msg) {
Log.d(sTag, msg);
print("d", sTag, msg);//写入本地文件的方法
}
}

阅读全文

与android日志保存到文件相关的资料

热点内容
zip内存压缩 浏览:311
阿里云99元服务器不可以退款 浏览:337
linux下安装vnc 浏览:656
微信图片加密编辑可见 浏览:704
江恩操盘术pdf 浏览:929
本机构所属的服务器是什么意思 浏览:783
c编译器有哪些段 浏览:862
qq原创表情在哪个文件夹 浏览:624
点点赚app现在怎么不能用了 浏览:363
网红阿里程序员事件 浏览:203
算法设计心得体会 浏览:117
java修改ip 浏览:150
php不需要编译吗 浏览:135
特斯拉新车如何用app控制 浏览:186
文档拖到文件夹就不见了 浏览:815
标致308压缩比是多少 浏览:750
服务器和备用服务器地址 浏览:928
程序员加班跳槽 浏览:708
青年员工在工作中如何化解压力 浏览:604
包子解压神器怎么玩才爽 浏览:735