2016-11-21 1 views
5

J'écris des journaux en utilisant slf4android (https://github.com/bright/slf4android) mais il n'est pas évident comment les lire (idéalement, je voudrais juste les télécharger sur mon ordinateur). Le stockage interne de l'application n'est pas accessible aux autres applications. Puis-je configurer slf4android pour se connecter à un répertoire partagé? Je l'ai essayé, mais je me NOENT:Lecture du fichier connecté via slf4android?

FileLogHandlerConfiguration fileHandler = LoggerConfiguration.fileLogHandler(this); 
File lol = this.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS); 
fileHandler.setFullFilePathPattern(fileHandler.toString() + "/my_log.%g.%u.log"); 
LoggerConfiguration.configuration().addHandlerToRootLogger(fileHandler); 
+0

Quelle erreur avez-vous eu? –

+0

Est-ce que ma réponse a résolu votre problème? – mklimek

Répondre

0

Dans l'exemple de code votre condition que vous ne l'utilisez pas réellement « Fichier lol » que vous avez défini. Il échoue donc probablement parce que vous essayez de créer un autre journal au-dessus du premier (par exemple dans "/sdcard/your.package/my_log.%g.%u.log/my_log.%g.%u.log") ;

Essayez:

File lol = this.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS); 
fileHandler.setFullFilePathPattern(lol.getAbsolutePath() + "/my_log.%g.%u.log"); 

Mais vous pouvez aussi simplement ajouter une cliquant option de menu qui trouverait les journaux, peut être les zip (avec db ou autre) et send by email, télécharger vers le serveur ou tout simplement copier un autre dossier.

1

La documentation officielle dit que vous pouvez faire ceci:

FileLogHandlerConfiguration fileHandler = LoggerConfiguration.fileLogHandler(this); 

fileHandler.setFullFilePathPattern(SOMEPATH); 

LoggerConfiguration.configuration().addHandlerToRootLogger(fileHandler); 

et le fichier journal serait situé dans somepath. Je vous recommande d'utiliser un répertoire régulier de l'environnement au lieu d'une chaîne arbitraire, comme

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).getPath()+File.pathSeparator+"appLogs" 

Maintenant, si vous voulez copier des journaux existants vers une destination outher, vous pouvez simplement copier les fichiers. Enfin, gardez à l'esprit que rien ne fonctionnera si vous n'obtenez pas les permissions de stockage appropriées!

Espérons que ça aide. Codage heureux!

9

Une fois que vous l'enregistrement configuré dans un fichier par:

FileLogHandlerConfiguration fileHandler = LoggerConfiguration.fileLogHandler(this); 
fileHandler.setFullFilePathPattern("/sdcard/your.package/my_log.log"); 
LoggerConfiguration.configuration().addHandlerToRootLogger(fileHandler); 

Il y a deux (deux simples) façons d'obtenir un fichier journal:

  1. En utilisant NotifyDeveloperHandler (mon préféré)

    slf4android a une très belle fonctionnalité (pour une raison non documentée) qui permet d'envoyer un e-mail à une adresse donnée avec journaux et capture d'écran inclus dans une pièce jointe.

    NotifyDeveloperHandler handler = LoggerConfiguration.configuration().notifyDeveloperHandler(this, "[email protected]"); 
    handler.notifyWhenDeviceIsShaken(); 
    LoggerConfiguration.configuration().addHandlerToRootLogger(handler); 
    

il est vraiment pratique à utiliser (littéralement) parce que vous pouvez déclencher une action d'envoi en secouant votre appareil.

enter image description hereenter image description here

  1. En utilisant adb

    Run adb pull /sdcard/your.package/my_log.log ~/my_log.log dans le terminal pour copier le fichier journal du périphérique dans le répertoire de la maison.