我如何记录所有通知发送操作?

我如何记录所有通知发送操作?

我不断收到非常奇怪的通知,这些通知在我能够阅读之前就消失了,它们很长,并且在随机时间出现,最近出现的通知是在内核升级期间,它有一个奇怪的图标,并且很长,但我没有设法阅读它,因为它在屏幕上出现的时间太短了。

所以我想知道是否有任何日志记录所有调用,notify-send记录调用它的程序以及给定的所有参数?或者我是否可以设置这样的日志来找出这些通知的内容?我正在运行带有 GNOME 3.18 的 Ubuntu GNOME 15.10。

答案1

甚至不需要完整的脚本......
而是以脚本的形式呈现:

#!/bin/bash

file=$1

dbus-monitor "interface='org.freedesktop.Notifications'" |\
 grep --line-buffered "string" |\
 grep --line-buffered -e method -e ":" -e '""' -e urgency -e notify -v |\
 grep --line-buffered '.*(?=string)|(?<=string).*' -oPi |\
 grep --line-buffered -v '^\s*$' |\
 xargs -I '{}' echo {} >> $file

运行它

  • 将“脚本”复制到一个空文件中,另存为keep_log.sh
  • 使用日志文件作为命令的参数运行它

    /bin/bash /path/to/keep_log.sh /path/to/log.txt
    

答案来自先前的答案(不是重复的),其中提到了该方法的应用作为示例。

我在那里给出的答案是基于这个答案非常好,其中解释了dbus-monitor拦截通知发送内容的方法。通过编辑那里的示例,我们可以让它将notify-send消息写入(日志)文件。

或者更优雅

...将把日期添加到日志文件,生成如下日志文件:

---di 10 mei 2016 17:37:20 CEST---
SOme kind of a message!
---di 10 mei 2016 17:37:20 CEST---
The last message was misspelled so here i9s another one

在这种情况下,脚本将是:

#!/bin/bash

logfile=$1

dbus-monitor "interface='org.freedesktop.Notifications'" |\
grep --line-buffered "string" |\
grep --line-buffered -e method -e ":" -e '""' -e urgency -e notify -v |\
grep --line-buffered '.*(?=string)|(?<=string).*' -oPi |\
grep --line-buffered -v '^\s*$' |\
xargs -I '{}' \
printf "---$( date )---\n"{}"\n" >> $logfile

相关内容