Android中如何安全地js打印日志志详解

android打印log日志怎么打_百度知道
android打印log日志怎么打
我有更好的答案
在命令行输入adb logcat,这里输出的是所有的LOG,可以加一些参数过滤你的LOG,如 -s TAG
采纳率:75%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。点击这里,将文章分享到自己的动态
在Android界面上显示和获取Logcat日志输出
在Android界面上显示和获取Logcat日志输出
一、首先我们要获取Logcat中的日志
如何获取呢?
首先我们要先定义一个String[]数组,里面的代码是
//第一个是Logcat ,也就是我们想要获取的log日志
//第二个是 -s 也就是表示过滤的意思
//第三个就是 我们要过滤的类型 W表示warm ,我们也可以换成 D :debug, I:info,E:error等等
String[] running = new String[]{"logcat","-s","adb logcat *: W"};
当我们设置好之后,我们还需要一个process类,作用通俗来讲就是用Java代码来进行adb命令行操作代码是:
Process exec = Runtime.getRuntime().exec(running);
通过以上的方法我们就可以获得和过滤Logcat中的方法。
二、接下来开始使用IO流进行字符操作,把数据保存在Android SDCard中
首先:我们定义一个InputStream,
final InputStream is = exec.getInputStream
接下来开启一个线程,线程中的方法就是通过IO流先读取Logcat中的数据,然后再把数据通过OutPutStream方法写入到SDCard中。
new Thread() {
public void run() {
FileOutputStream os =
//新建一个路径信息
os = new FileOutputStream("/sdcard/Log/Log.txt");
int len = 0;
byte[] buf = new byte[1024];
while (-1 != (len = is.read(buf))) {
os.write(buf, 0, len);
os.flush();
} catch (Exception e) {
Log.d("writelog",
"read logcat process failed. message: "
+ e.getMessage());
} finally {
if (null != os) {
os.close();
} catch (IOException e) {
// Do nothing
}.start();
} catch (Exception e) {
Log.d("writelog",
"open logcat process failed. message: " + e.getMessage());
当我们这个类写完之后,我们再把权限添加进去就可以了。
&!-- 读取Log权限 --&
&uses-permission android:name="android.permission.READ_LOGS" /&
&!-- 在SDCard中创建与删除文件权限 --&
&uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /&
&!-- 往SDCard写入数据权限 --&
&uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&
&!-- 从SDCard读出数据权限 --&
&uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /&
添加完权限,我们运行试试。
然后我们再打开我们的SDCard中的文件目录:
这样我们就已经获取到了Logcat中的日志(可以和控制台的对比一下):
由于我开启了两次所以打印出了两次的log.
三、之后我们先创建页面,然后在按行读取Txt文本中的内容
首先我们开始编写XMl视图文件:
&LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" &
&LinearLayout
android:layout_width="match_parent"
android:layout_weight="7"
android:orientation="vertical"
android:id="@+id/ListLog"
android:layout_width="match_parent"
android:layout_height="match_parent"
&&/ListView&
&/LinearLayout&
&LinearLayout
android:layout_width="match_parent"
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal" &
android:layout_gravity="center"
android:gravity="center"
android:id="@+id/BtnLog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="清空日志"
&/LinearLayout&
&/LinearLayout&
编写完成后,我们开始在MainActivity里面初始化我们的类
private ListView listV
listView = (ListView) findViewById(R.id.ListLog);
btn = (Button) findViewById(R.id.BtnLog);
之后,我们开始编写我们的读取TXT文件的方法
* 根据行读取内容
public List&String& Txt() {
//将读出来的一行行数据使用List存储
String filePath = "/sdcard/Log.txt";
List newList=new ArrayList&String&();
File file = new File(filePath);
int count = 0;//初始化 key值
if (file.isFile() && file.exists()) {//文件存在
InputStreamReader isr = new InputStreamReader(new FileInputStream(file));
BufferedReader br = new BufferedReader(isr);
String lineTxt =
while ((lineTxt = br.readLine()) != null) {
if (!"".equals(lineTxt)) {
String reds = lineTxt.split("\\+")[0];
//java 正则表达式
newList.add(count, reds);
isr.close();
br.close();
Log.e("tag", "can not find file");
} catch (Exception e) {
e.printStackTrace();
return newL
我们看d的代码,其实也就是IO读写操作
if (file.isFile() && file.exists()) //这一行是判断是否有文件存在
然后我们用InputStreamReader读取我们SDCard中的文件;
使用BufferedReader方法读取我们获取的字符流;
最后我们用While循环和正则表达式来把每一行都给放入List中;
最后我们返回List;
InputStreamReader isr = new InputStreamReader(new FileInputStream(file));
BufferedReader br = new BufferedReader(isr);
String lineTxt =
while ((lineTxt = br.readLine()) != null) {
if (!"".equals(lineTxt)) {
String reds = lineTxt.split("\\+")[0];
//java 正则表达式
newList.add(count, reds);
还有一个XML视图文件,名称log_list_item.xml
&TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textColor="#000000"
android:gravity="left"
android:paddingLeft="20dp"
android:textSize="20sp"
android:singleLine="true"
接下来就是把List放入ListView中:
ArrayAdapter&String& adapter = new ArrayAdapter&String&(this, R.layout.log_list_item,Txt());
listView.setAdapter(adapter);
好让我们运行一下看看效果:
好了,我们的显示日志也已经成功了。接下来就是要可以清空日志;
最后、清空日志
如何清空日志呢?
其实非常简单
* 删除Log文件
* @param fileName 文件路径和名称
public static void delFile(String fileName){
File file = new File(fileName);
if(file.isFile()){
file.delete();
file.exists();
我们只需要把路径传过去,进行判断,如果有就直接删除。
然后我们对ListView进行刷新就可以了。
本文原创发布于慕课网 ,转载请注明出处,谢谢合作
若觉得本文不错,就分享一下吧!
评论加载中...
看过此文的用户,还看了以下文章
正在加载中
移动开发工程师
作者相关文章深入了解android平台的jni---jni中的日志输出到LOGCAT
在Java环境下使用JNI时可以方便的使用printf函数打印信息,在Eclipse控制台Console视图可以方便的观察到,可在Android环境下使用JNI的话,printf函数就无效了,LogCat视图和Console视图里看不到任何输出.但在android编程java代码中,我们使用Log.v等一些将日志输出到logcat,在LogCat视图中可以看到日志输出信息。
android NDK完全支持JNI本地方法调试。它提供4个android_log_XXX函数供我们使用。
路径:/build/platforms/android-8/arch-arm/usr/include/android/log.h
在这个头文件中,会看到以下定义:
typedef enum android_LogPriority {
ANDROID_LOG_UNKNOWN = 0,
ANDROID_LOG_DEFAULT,&&&
ANDROID_LOG_VERBOSE,
ANDROID_LOG_DEBUG,
ANDROID_LOG_INFO,
ANDROID_LOG_WARN,
ANDROID_LOG_ERROR,
ANDROID_LOG_FATAL,
ANDROID_LOG_SILENT,&&&&
} android_LogP
int __android_log_write(int prio, const char *tag, const char
int __android_log_print(int prio, const char
*tag,& const char *fmt, ...)
#if defined(__GNUC__)
__attribute__ ((format(printf, 3, 4)))
int __android_log_vprint(int prio, const char *tag,
&&&&&&&&&&&&&&&&&&&&&&&&
const char *fmt, va_list ap);
void __android_log_assert(const char *cond, const char *tag,
const char *fmt,
介绍一下设置输出log信息的步骤,然后我们就可以通过log去调试jni代码了
1 添加ndk对log支持
若需要添加ndk对log的支持,只需要通过以下2步即可实现。
修改Android.mk如生成的库文件是“.so文件”,则在Android.mk中添加如下内容:
LOCAL_LDLIBS:=-L$(SYSROOT)/usr/lib -llog
如生成的库文件是“.a文件”,则在Android.mk中添加如下内容:
LOCAL_LDLIBS:=-llog
1.2 在.c或.cpp文件中引用log头文件添加如下内容:
// 引入log头文件
#include &
// log标签
"hello_load"
// 定义info信息
#define LOGI(...)
__android_log_print(ANDROID_LOG_INFO,TAG,__VA_ARGS__)
// 定义debug信息
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, TAG,
__VA_ARGS__)
// 定义error信息
#define LOGE(...)
__android_log_print(ANDROID_LOG_ERROR,TAG,__VA_ARGS__)
ANDROID_LOG_INFO:是日志级别;
TAG:是要过滤的标签,可以在LogCat视图中过滤。
__VA_ARGS__:是实际的日志内容。
完成上面2步之后,我们就可以在.c/cpp文件中添加LOGI、LOGD、LOGE去打印信息!使用LOGI、LOGD、LOGE的方法和使用printf一样
1.3日志类型
1)Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思,平时使用就是Log.v(,);
2)Log.d的输出颜色是蓝色的,仅输出debug调试的意思,但他会输出上层的信息,过滤起来可以通过DDMS的Logcat标签来选择
3)Log.i的输出为绿色,一般提示性的消息information,它不会输出Log.v和Log.d的信息,但会显示i、w和e的信息
4)Log.w的意思为橙色,可以看作为warning警告,一般需要我们注意优化Android代码,同时选择它后还会输出Log.e的信息。
5)Log.e为红色,可以想到error错误,这里仅显示红色的错误信息,这些错误就需要我们认真的分析,查看栈的信息了。
本文欢迎转载,转载请注明出处与作者&
出处:http://blog.sina.com.cn/staratsky
作者:流星
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。豆丁微信公众号
君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
Android 本地代码怎么输出日志
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口Android应用程序开发,调试时需要辅助日志文件中的输出信息。
一、Android应用程序调试
&&&&&& 默认Android应用程序不能调试,(eclipse)会提示如下信息:“Application “xxx” does not have the attribute 'debuggable' set to TRUE in its manifest and cannot be debugged”
&&&&& 需要修改Manifest文件中的debuggable属性,使其值为true,这时才可以调试。
二、日志信息
1、输出日志信息
Android提供一个静态Log类,提供五个静态方法Log.v()(详细),Log.d()(debug),Log.i()(information),Log.w()(warning) ,Log.e()(error),用来将消息写入模拟器上的日志文件中。如果在DDMS上运行logcat可以就实时查看消息
(1)日志信息级别
o&&&&&&&& Log.v() -------------------- VERBOSE
o&&&&&&&& Log.d() -------------------- DEBUG
o&&&&&&&& Log.i() -------------------- INFO
o&&&&&&&& Log.w() -------------------- WARN
o&&&&&&&& Log.e() -------------------- ERROR
以上log的级别依次升高,DEBUG信息应当只存在于开发中,INFO, WARN,ERROR这三种log将出现在发布版本中。
(2)输出日志信息
在应用程序中添加 import android.util.L
使用该类的静态方法,
1.&&&&&&& Log.d(String tag, String msg);&
1.&&&&&&& Log.i(String tag, String msg);&
2.&&&&&&& Log.w(String tag, String msg);&
3.&&&&&&& Log.e(String tag, String msg);&
o其中: tag是一个标识,可以是任意字符串(一般将tag设置成一个静态常量或使用类名+方法名)用来在查看日志时提供一个筛选条件,以方便的追踪信息的输出。
o&&&&&&&&& Msg 是log信息的内容。
在应用程序中使用 System.out.println();语句将信息输出到日志文件(而不是将信息输出到控制台)。
2、eclipse中查看日志
设置步骤如下:
(1)windows ==& Preferences ==& Android ==& DDMS& ==& Logging Level
(设置日志级别,选中之下的将被显示,选中之上的不被显示。)
(2)windows ==& Show View ==& Android ==& LogCat
(3)显示LogCat栏目。
3、使用logcat命令行工具查看日志
&&&& logcat是Android中的一个命令行工具,可以用其得到程序的log信息。
logcat使用方法如下:
&&&&&&&&& logcat [options] [filterspecs]
options包括:
o& -s&&&&&&&&&&&&&&&&&&& 设置过滤器,例如指定 '*:s'
o& -f &filename&&& 输出到文件,默认情况是标准输出。
o& -r [&kbytes&]&& Rotate log every kbytes. (16 if unspecified). Requires -f
o& -n &count&&&&&& Sets max number of rotated logs to &count&, default 4
o& -v &format&&&&& 设置log的打印格式,& &format& 是下面的一种:brief process tag thread raw time threadtime long
o& -c&&&&&&&&&&&&&&&&&&&& 清除所有log并退出
o& -d&&&&&&&&&&&&&&&&&&& 得到所有log并退出 (不阻塞)
o& -g&&&&&&&&&&&&&&&&&&& 得到环形缓冲区的大小并退出
o& -b &buffer&&&&& 请求不同的环形缓冲区&&& ('main' (默认), 'radio', 'events')
o& -B&&&&&&&&&&&&&&&&&&& 输出log到二进制中。
o过滤器的格式:&tag&[:priority],其中&tag&表示log的component,
priority 如下:
o& V&&& Verbose---------------------------------------Log.v()
o& D&&& Debug-----------------------------------------Log.d()
o& I&&&& Info---------------------------------------------Log.i()
o& W&& Warn-----------------------------------------Log.w()
o& E&&& Error------------------------------------------Log.e()
o& F&&& Fatal
o& S&&& Silent
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dyufei/archive//5844956.aspx
christy_fang
浏览: 63853 次
来自: 北京
&div class=&quote_title ...
谢谢这个很有用
sam_kee 写道英文很重要啊!!!!!嗯 还真不是一般的重 ...
英文很重要啊!!!!!
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 python 打印日志 的文章

 

随机推荐