web-dev-qa-db-ja.com

すべての通知送信アクションを記録するにはどうすればよいですか?

読む前に消える非常に奇妙な通知を受け取り続けます。それらは長く、ランダムに表示されます。最新の通知は、カーネルのアップグレード中に表示され、奇妙なアイコンがあり、長くなりましたが、それは画面上に非常に短い時間であったため、なんとか読むことはできません。

だから私はそれを呼び出しているプログラムを記録するnotify-sendへのすべての呼び出しを記録するログと、与えられたすべてのパラメータがあるのだろうか?または、これらの通知が何であるかを調べるためにそのようなログを設定できる場合はどうなりますか? Ubuntu GNOME 15.10とGNOME 3.18を実行しています。

4
user364819

完全なスクリプトも必要ありませんでした...
...ただし、スクリプトの形式で入力します。

#!/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の内容をインターセプトします。そこでサンプルを編集することにより、notify-sendメッセージを(log-)ファイルに書き込むことができます。

または、よりエレガント

...日付をログファイルに追加して、次のようなログファイルを作成します。

---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
3
Jacob Vlijm