web-dev-qa-db-fra.com

Comment enregistrer toutes les actions notify-send?

Je reçois des notifications très étranges qui disparaissent avant que je puisse les lire. Elles sont longues et apparaissent à des moments aléatoires. La dernière en date a été une mise à niveau du noyau. Ne parvenez pas à le lire car il était à l’écran si brièvement.

Je me demande donc s'il existe un journal qui enregistre tous les appels à notify-send qui enregistre le programme qui l'appelle, ainsi que tous les paramètres fournis. Ou si je peux mettre en place un tel journal pour savoir en quoi consistent ces notifications? J'utilise Ubuntu GNOME 15.10 avec GNOME 3.18.

4
user364819

Même pas besoin d'un script complet ...
... mais mettez-le sous forme de script:

#!/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

Pour l'exécuter

  • Copiez le "script" dans un fichier vide, enregistrez-le sous le nom keep_log.sh
  • Exécutez-le avec le fichier journal comme argument avec la commande

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

La réponse a été extraite d'un réponse précédente (pas une dupe), dans lequel cette application de la méthode a été mentionnée à titre d'exemple.

La réponse que j’y ai donnée à son tour était basée sur cette très jolie réponse dans laquelle il est expliqué que la méthode utilise dbus-monitor pour intercepter le contenu de notify-send. En modifiant l'exemple ici, nous pouvons lui faire écrire des messages notify-send dans un fichier (journal).

Ou plus élégant

... serait d'ajouter la date au fichier journal, produisant un fichier journal comme:

---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

Dans ce cas, le script serait:

#!/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