【mac】macOS上的实用Log用法

【mac】macOS上的实用Log用法

自从Sierra开始苹果更新了Unified Log命令,感兴趣的可以打log help查看。尽管console做的还行,我还是觉得iterm里看log比较舒服。注意,有些易失的log只能在console查看,暂时没有找到用命令行查看的方法。

我们常用的命令通常逃不过

bash 复制代码
log show --start [] --end [] --last [] --predicate [] --style []

这个句式,以下命令均大小写敏感。

--start [] --end []

这个很好理解,就是填入要查询的log的UTC时间,例如:

bash 复制代码
 --start '2019-01-01 01:01:01' --end '2016-02-02 02:02:02'

--last []

这个也很好理解,指的是现在时间往前多少天,多少小时或者多少分钟,例如:

bash 复制代码
-last 23h

--predicate

predicate讲究就比较多了,其中常用的几个类

  • eventMessage
    这个是可以拿来搜索所有输出信息中包含设定字符的log,例如

    bash 复制代码
    --predicate 'eventMessage contains "System Wake"'
  • process
    用名称对应进程名,例如

    bash 复制代码
    --predicate 'process == "iterm2"'
  • subsystem
    用名称对应子系统名,具体你要查看log的应用使用了哪些subsystem可以先用process查询,或者直接在console里查看,注意同一个subsystem可以被很多应用使用,所有最好搭配process一起查询,举例:

    bash 复制代码
    --predicate 'subsystem == "com.apple.TimeMachine"'
  • messageType
    查看消息类型,一般与别的predicate配合使用,精简输出,举例:

    bash 复制代码
    --predicate 'messageType == error'
  • processID
    顾名思义,查询特定PID的log

--sytle

默认是syslog,也可以输出JSON然后用自己的程序来parse,对开发非常有用。其实不加也无所谓,iterm+ohmyzsh高亮看着舒服多了。

下面就来看几个Mac原生应用log的实战吧!

bash 复制代码
log show --last 1d --predicate '(process == "VDCAssistant") and (messageType == default)'

iSight相机被使用时会调用VDCAssistant,勉强能代替Micro Snitch和Oversight,看个大概。
2.

bash 复制代码
log show --last 1d --predicate 'eventMessage contains "screen is locked"'
bash 复制代码
log show --last 1d --predicate 'eventMessage contains "Screen is NOT locked"'

查看锁屏和解锁信息,比用

bash 复制代码
pmset -g log|grep -e " Sleep  " -e " Wake  "

看睡眠和唤醒要准确的多,因为锁屏时Mac不一定进入睡眠,具体看pmset中的设定。请注意命令大小写敏感,锁屏用的是LWScreenLock模块,是全小写的信息,解锁用的是LWAuthServiceManager,大小写就比较奔放了。
3. 如果对Mac的解锁过程感兴趣还可以用以下命令查看。

bash 复制代码
log show --last 1d --predicate 'process == "coreauthd"'
 log show --last 1d --predicate 'process == "loginwindow"'
 log show --last 1d --predicate 'eventMessage contains "LWAuthServiceManager"'
  1. 查看Time Machine到底在搞什么鬼:

    bash 复制代码
    log show --last 1d --predicate 'senderImagePath contains "TimeMachine"' --info

今天的分享先到这里,其实我的初衷是想做个简单点的类似Oversight的应用出来练练手,看能不能把命令行包装一下,现在看来实在不行,而且lsof的性能莫名的差,不知道怎么办了。

相关推荐
开开心心loky17 小时前
[iOS] GCD - 线程与队列
macos·ios·objective-c·cocoa
冷冷的菜哥19 小时前
21款m1 max升级到macOS 14——Sonoma
macos·苹果·sonoma·macos系统升级
laocaibulao19 小时前
mac电脑composer命令如何指定PHP版本
macos·php·composer
00后程序员张19 小时前
iOS 上架费用全解析 开发者账号、App 审核、工具使用与开心上架(Appuploader)免 Mac 成本优化指南
android·macos·ios·小程序·uni-app·cocoa·iphone
fukai77221 天前
OmniFocus:专为 macOS 与 iOS 打造的专业级任务管理利器
macos·ios
尽兴-1 天前
macOS 系统下 Chrome 浏览器安装 HTTPS 证书完整指南
chrome·macos·https·证书·ssl·pem·crt
专注于大数据技术栈1 天前
Mac本地安装python
macos
珊珊而川1 天前
MAC-SQL:SQL-Llama 的具体训练流程
sql·macos·llama
2501_915106322 天前
App 怎么上架 iOS?从准备资料到开心上架(Appuploader)免 Mac 上传的完整实战流程指南
android·macos·ios·小程序·uni-app·iphone·webview
青木狐2 天前
关闭 macOS 屏幕捕捉 在录制或截图时显示的「录制指示浮窗」。
macos·mac