Logcat中显示的时间

46

我需要以hh:mm:ss:SS的格式获取安卓设备的时间戳。我可以在Eclipse的Logcat中查看显示的时间。这是计算机的时间还是安卓设备的时间?


1
在我获取的所有logcat日志中,都有Android设备的日期和时间。 - Michael
6个回答

92

logcat文档中可以看到,有一个选项可以指定输出格式(-v)。

要获取时间戳,您可以使用以下命令

logcat -v time

这将在每条消息前加上时间戳。

这不是时间戳。 - maszter

21

在终端中使用adb logcat -v threadtime来获取设备的日志,它将包括日期和时间。

如果您想将这些日志重定向到文本文件中,请使用终端中的命令。

 adb logcat -v threadtime > folder_path_in_the_computer/filename.txt

有趣的是,这个命令现在已经消失了。在2019年,我得到了以下信息:adb logcat -v threadtimeadb:用法:未知命令threadtime - Warren P

9

使用logcat -v <format>命令以longthreadtimetime格式查看日志

logcat提供了多种格式选项,可以通过命令行中的-v标志传递。您可以在此处的文档中查看所有格式。

以下是每个选项的示例,以便您决定哪个选项最适合您的需求:


brief

显示发出消息的进程的优先级、标记和PID。

D/StatusBar.NetworkController( 1222): refreshNwBoosterIndicator - setNWBoosterIndicators(false)
D/StatusBar.NetworkController( 1222): refreshNwBoosterIndicator - setNWBoosterIndicators(false)

长整型

显示所有元数据字段并用空行分隔消息。

(我最喜欢这个,但我对空格有点着迷。)

[ 01-27 13:17:07.703  1222: 1222 D/StatusBar.NetworkController ]
refreshNwBoosterIndicator - setNWBoosterIndicators(false)

[ 01-27 13:17:07.703  1222: 1222 D/StatusBar.NetworkController ]
refreshNwBoosterIndicator - setNWBoosterIndicators(false)

进程

仅显示进程的PID。

D( 1222) refreshNwBoosterIndicator - setNWBoosterIndicators(false)  (StatusBar.NetworkController)
D( 1222) refreshNwBoosterIndicator - setNWBoosterIndicators(false)  (StatusBar.NetworkController)

raw

显示原始日志信息,不包含其他的元数据字段。

refreshNwBoosterIndicator - setNWBoosterIndicators(false)
refreshNwBoosterIndicator - setNWBoosterIndicators(false)

tag

只显示优先级和标签。

D/StatusBar.NetworkController: refreshNwBoosterIndicator - setNWBoosterIndicators(false)
D/StatusBar.NetworkController: refreshNwBoosterIndicator - setNWBoosterIndicators(false)

线程

一种旧格式,显示发出消息的线程的优先级、PID和TID。

D( 1222: 1222) refreshNwBoosterIndicator - setNWBoosterIndicators(false)
D( 1222: 1222) refreshNwBoosterIndicator - setNWBoosterIndicators(false)

threadtime

显示发出消息的线程的日期、调用时间、优先级、标记、PID和TID。

(文档中说这是默认值,但在我的情况下并不是。)

01-27 13:17:07.703  1222  1222 D StatusBar.NetworkController: refreshNwBoosterIndicator - setNWBoosterIndicators(false)
01-27 13:17:07.703  1222  1222 D StatusBar.NetworkController: refreshNwBoosterIndicator - setNWBoosterIndicators(false)

时间

显示消息发出的日期、调用时间、优先级、标签和进程的PID。

01-27 13:17:07.703 D/StatusBar.NetworkController( 1222): refreshNwBoosterIndicator - setNWBoosterIndicators(false)
01-27 13:17:07.703 D/StatusBar.NetworkController( 1222): refreshNwBoosterIndicator - setNWBoosterIndicators(false)

注意:如果您在应用程序中使用此功能来以编程方式收集用户设备日志并发送给支持团队或其他人,您需要省略-vformat之间的空格,如下所示:

commandLine.add( "-vlong" )

我不确定为什么会这样,但希望这能节省某人尝试弄清楚的时间。


有没有办法以“-v time”格式获取日期和年份?请帮忙。 - Kashif K.

9

如果您正在Android设备上运行应用程序,则会打印设备的时间;如果在模拟器上运行,则会显示计算机的时间。

要确保,请使用日志时间与设备时间和计算机时间进行匹配,您将找到答案。


2
至少自Android 5.x以来,情况已经不再如此。 - zamber

1

以下内容来自开发者网站上的读写日志页面:

"time — 显示发出消息的进程的日期、调用时间、优先级/标记和 PID。"

在模拟器上,它将显示您计算机的时间,在设备上,它将显示您设备的时间...


0

如果你需要以编程的方式获取设备日期:

 SimpleDateFormat s = new SimpleDateFormat("hh:mm:ss");
    String format = s.format(new Date());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接