golang监控Mac系统活动的插件库mac-activity-tracker的使用
golang监控Mac系统活动的插件库mac-activity-tracker的使用
简介
mac-activity-tracker是一个Golang库,可以监控您机器上的特定活动,并以可配置的周期发送包含该时间段内所有活动变化的"心跳"数据。您可以通过可插拔的处理器(handler)来监控想要跟踪的活动。
安装
go get -u github.com/prashantgupta24/activity-tracker
使用示例
package main
import (
"github.com/prashantgupta24/activity-tracker/tracker"
"github.com/prashantgupta24/activity-tracker/pkg/logging"
)
func main() {
heartbeatInterval := 60 // 单位秒
workerInterval := 5 // 单位秒
activityTracker := &tracker.Instance{
HeartbeatInterval: heartbeatInterval,
WorkerInterval: workerInterval,
LogLevel: logging.Info,
}
// 启动所有已实现的处理器
heartbeatCh := activityTracker.Start()
// 如果只想跟踪特定处理器,可以使用StartWithHandlers
// heartbeatCh := activityTracker.StartWithHandlers(handler.MouseClickHandler(), handler.MouseCursorHandler())
select {
case heartbeat := <-heartbeatCh:
if !heartbeat.WasAnyActivity {
logger.Infof("过去%v秒内未检测到活动", int(heartbeatInterval))
} else {
logger.Infof("过去%v秒内检测到活动", int(heartbeatInterval))
logger.Infof("活动类型:\n")
for activityType, times := range heartbeat.ActivityMap {
logger.Infof("活动类型: %v 次数: %v\n", activityType, len(times))
}
}
}
}
输出示例
上面的代码创建了一个跟踪器,激活了所有处理器(鼠标点击、鼠标移动、屏幕变化和机器睡眠)。心跳间隔设置为60秒,即每60秒会收到一个心跳,其中包含捕获的所有活动信息。
INFO[2019-03-30T15:52:01-07:00] 启动活动跟踪器,心跳间隔60秒,工作间隔5秒...
INFO[2019-03-30T15:53:01-07:00] 过去60秒内检测到活动
INFO[2019-03-30T15:53:01-07:00] 活动类型:
INFO[2019-03-30T15:53:01-07:00] 活动类型: mouse-click 次数: 10
INFO[2019-03-30T15:53:01-07:00] 活动类型: cursor-move 次数: 12
INFO[2019-03-30T15:53:01-07:00] 活动类型: screen-change 次数: 7
INFO[2019-03-30T15:53:01-07:00] 活动类型: machine-sleep 次数: 1
INFO[2019-03-30T15:53:01-07:00] 活动类型: machine-wake 次数: 1
工作原理
跟踪器有两个主要配置参数:
HeartbeatInterval
- 心跳间隔(秒,默认60秒)WorkerInterval
- 在心跳间隔内进行检查的频率(秒,默认5秒)
对于基于拉取(pull)的处理器,跟踪器会每隔WorkerInterval
秒询问处理器是否有活动发生。对于基于推送(push)的处理器,活动发生时处理器会自动通知跟踪器。
心跳数据结构
type Heartbeat struct {
WasAnyActivity bool // 该时间段内是否有任何活动
ActivityMap map[activity.Type][]time.Time // 活动类型及其发生时间
Time time.Time // 心跳时间
}
当前支持的活动和处理器
活动类型
MouseCursorMovement Type = "cursor-move" // 鼠标移动
MouseClick Type = "mouse-click" // 鼠标点击
ScreenChange Type = "screen-change" // 屏幕变化
MachineSleep Type = "machine-sleep" // 机器睡眠
MachineWake Type = "machine-wake" // 机器唤醒
对应的处理器
mouseCursorHandler // 鼠标移动处理器
mouseClickHandler // 鼠标点击处理器
screenChangeHandler // 屏幕变化处理器
machineSleepHandler // 机器睡眠处理器
创建自定义处理器
要添加新的活动处理器,只需实现以下接口:
type Handler interface {
Start(*log.Logger, chan *activity.Instance)
Type() activity.Type
Trigger(system.State) // 用于激活基于拉取的处理器
Close()
}
使用场景
- 监控用户活动频率
- 检测机器空闲状态
- 防止系统进入睡眠模式
- 记录用户交互行为
这个库特别适合需要监控用户活动或系统状态的应用程序。
更多关于golang监控Mac系统活动的插件库mac-activity-tracker的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复