2017-04-02 3 views
3

Mac OS possède une application appelée Console, qui contient les messages, les erreurs et les erreurs consignés. Je crois que l'équivalent de Windows est l'Observateur d'événements. J'imagine qu'il y en a aussi sur Linux, mais je ne sais rien de tout ça ou de l'endroit où il se trouve.Comment écrire sur le système d'exploitation se connecter en Java?

Est-il possible d'obtenir un message de la sortie Java vers un journal système comme celui-ci? J'écris une application basée sur une interface graphique, donc rien ne fonctionne depuis la ligne de commande. La norme System.out ou System.err ne sera probablement pas très utile dans ce cas, sauf si quelque chose me manque. J'ai écrit un simple service de journalisation pour mon application qui écrit dans un fichier journal dédié, mais je souhaite disposer d'une sorte de sécurité au cas où une erreur d'E/S se produirait lors d'une tentative d'écriture dans ce fichier.

Je sais que l'IDE va ​​afficher la sortie via System.out et System.err très bien, mais c'est pour si l'utilisateur final rencontre un problème comme celui-ci. Par exemple: J'ai écrit des "modules de langage codeless" pour l'application TextWrangler sur le Mac. Ces modules sont lus par TW au démarrage de l'application, et s'il y a une erreur lors du traitement, les erreurs sont consignées et peuvent être visualisées dans l'application Console Mac.

Répondre

1

Sous Linux, il s'appelle syslog. L'un des moyens que vous pouvez utiliser pour consigner sur Mac sera d'utiliser log4j 'org.apache.log4j.net.SyslogAppender'.

Je pense que this link devrait vous donner un peu de recul dans cette direction.

1

Vous pouvez rediriger System.out vers un fichier journal et l'application Console de Mac est la visionneuse par défaut pour les fichiers se terminant par ".log".

L'une des méthodes couramment utilisées consiste à utiliser un script shell qui appelle votre programme Java. Dans cet exemple Java 7, la sortie de l'invocation de la classe principale MyClass est redirigée vers mylogfile.log. Tout ce qui est écrit avec System.out sera dans mylogfile.log.

#!/bin/bash 

for a in /path/to/my/jars/* 
do 
CLASSPATH=$CLASSPATH:$a 
done 

java -Xms128M -Xmx128M -XX:MaxPermSize=128M -cp ${CLASSPATH} com.example.package.MyClass >> mylogfile.log