Saya Mencoba Menulis Log ke File Custom Log.txt pada File Android menggunakan kode Tambang ini tetapi kemudian metode ini membuat file tetapi tidak mengandung apa pun. Pada dasarnya saya ingin membaca konten file sebelumnya dan kemudian menambahkan data saya dengan konten yang ada.
Kode tersebut adalah sebagai berikut:
public static void write(String str)
{
InputStream fileInputStream = null;
FileOutputStream fileOutpurStream = null;
try
{
fileInputStream = new FileInputStream(file);
fileOutpurStream = new FileOutputStream(file);
if(file.exists())
{
int ch = 0;
int current = 0;
StringBuffer buffer = new StringBuffer();
while((ch = fileInputStream.read()) != -1)
{
buffer.append((char) ch);
current++;
}
byte data[]=new byte[(int)file.length()];
fileInputStream.read(data);
fileOutpurStream.write(data);
fileOutpurStream.write(str.getBytes(),0,str.getBytes().length);
fileOutpurStream.flush();
}
else
{
file.createNewFile();
fileOutpurStream.write(str.getBytes(),0,str.getBytes().length);
fileOutpurStream.flush();
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
try
{
fileInputStream.close();
fileOutpurStream.flush();
fileOutpurStream.close();
fileOutpurStream = null;
fileInputStream = null;
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
buf.close()
ada di dalamfinally
blok.<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
itulah yang dimaksud @ virusss8, tentu saja.Bagi mereka yang baru masuk Java pada umumnya dan Android logging
Beberapa opsi untuk masuk ke txt di Android ada di bawah ini
logcat -f
seperti dalam jawaban ini untuk masuk ke file. Perhatikan bahwa dari Android 4.2, izin READ_LOGS tidak memiliki dampak apa pun dan setiap Aplikasi (kecuali telepon di-rooting) hanya dapat membaca lognya sendiri. Kerugiannya di sini adalah buffer logcat berbentuk lingkaran dan memiliki batas ukuran. Anda mungkin tidak mendapatkan log sebelumnya.Gunakan Log4j dengan android-logging-log4j . Apa yang dilakukan android-logging-log4j? Itu membuat Log4j lebih mudah digunakan di Android dengan memberikan dua fungsi.
Contoh sederhana di bawah ini. Perhatikan bahwa
logger
objek dalam contoh di bawah ini adalah objek Log4j yang dikembalikan dan bukan kelas android-logging-log4j. Jadi android-logging-log4j hanya digunakan untuk mengkonfigurasi Log4j.Langkah-langkah untuk menggunakan Log4j di Android.
Tambahkan kedua log4j-1.2.x.jar dan android-logging-log4j-1.0.3.jar ke folder libs.
Tambahkan izin hanya jika menggunakan penyimpanan eksternal
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Tulis
Log4j
kelas pembantuDi kelas aktivitas
Sumber Contoh . Perhatikan bahwa, log4j 2.x (peningkatan fungsionalitas) yang ditulis ulang dari awal tidak kompatibel dengan log4j 1.x. Jadi, Anda harus menggunakan jar log4j 1.2.x dengan jar android-logging-log4j. Saya dapat masuk ke file internal aplikasi dan kemudian mengirim email file tersebut
setReadable(true, false)
sumber
microlog4android bekerja untuk saya tetapi dokumentasinya sangat buruk. Yang perlu mereka tambahkan adalah ini tutorial cepat .
Ini adalah tutorial singkat yang saya temukan.
Tambahkan variabel statis berikut dalam Aktivitas utama Anda:
Tambahkan yang berikut ke
onCreate()
metode Anda :Buat file dengan nama
microlog.properties
dan simpan diassets
direktoriEdit
microlog.properties
file sebagai berikut:Tambahkan pernyataan logging seperti ini:
Untuk setiap kelas Anda membuat objek logger seperti yang ditentukan dalam 1)
6. Anda dapat menambahkan izin berikut:
Inilah sumber untuk tutorial
sumber
Peringatan: Saya mungkin benar-benar salah paham dengan Anda, tetapi jika semua yang Anda inginkan adalah file log, mengapa berkeringat?
Masukkan ini ke file bat (ubah path ke direktori tools Anda, dan namaanda Anda tentu saja nama aplikasi Anda):
Kemudian dalam kode Anda lakukan sesuatu yang mirip dengan ini:
Untuk membuat log, sambungkan kabel USB dan jalankan file bat Anda.
Salam
sumber
Gunakan slf4android lib.
Ini implementasi sederhana dari slf4j api menggunakan android java.util.logging. *.
Fitur:
LoggerConfiguration.configuration().addHandlerToLogger
slf4android dikelola terutama oleh @miensol .
Baca lebih lanjut tentang slf4android di blog kami:
sumber
Anda harus melihat microlog4android. Mereka memiliki solusi yang siap untuk masuk ke file.
http://code.google.com/p/microlog4android/
sumber
Ini mungkin terlambat tetapi harap ini dapat membantu .. Coba ini ....
di sini
bfwritter.newline
menulis teks Anda ke dalam file. Dan tambahkan izinnyadalam file manifes Anda tanpa gagal.
sumber
Saya memecahkan masalah ini dengan potongan kode berikut dalam cara baris perintah:
Di mana opsi "waktu" menambahkan rincian bidang metadata untuk tanggal, waktu pemanggilan, prioritas / tag, dan PID dari proses mengeluarkan pesan.
Kemudian dalam kode Anda lakukan sesuatu yang mirip dengan ini (menggunakan android.util.Log):
sumber
adb
terhubung, tetapi tidak berfungsi ketika perangkat dalam mode mandiri. Saya tidak akan menggunakannya dalam produksi, tetapi ini adalah solusi sederhana dalam mode debug.Secara umum, Anda harus memiliki pegangan file sebelum membuka aliran. Anda memiliki pegangan fileOutputStream sebelum createNewFile () di blok lain. Aliran tidak membuat file jika tidak ada.
Tidak terlalu spesifik untuk Android, tapi itu banyak IO untuk tujuan ini. Bagaimana jika Anda melakukan banyak operasi "tulis" satu demi satu? Anda akan membaca seluruh konten dan menulis seluruh konten, meluangkan waktu, dan yang lebih penting, masa pakai baterai.
Saya sarankan menggunakan java.io.RandomAccessFile, cari () sampai akhir, kemudian tulisChars () untuk menambahkan. Ini akan menjadi kode yang jauh lebih bersih dan kemungkinan jauh lebih cepat.
sumber
Saya telah membuat kelas yang sederhana dan ringan (sekitar 260 LoC) yang memperluas implementasi standar android.util.Log dengan pencatatan berbasis file:
Setiap pesan log dicatat melalui android.util.Log dan juga ditulis ke file teks pada perangkat.
Anda dapat menemukannya di github:
https://github.com/volkerv/FileLog
sumber
Setelah lama penyelidikan saya menemukan bahwa:
android.util.Log
secara default digunakanjava.util.logging.Logger
logger
dengan nama""
, untuk mendapatkan contoh penggunaannyaLogManager.getLogManager().getLogger("")
logger
instance LogCatcom.android.internal.logging.AndroidHandler
setelah menjalankan aplikasi debugcom.android.internal.logging.AndroidHandler
mencetak pesan ke logcat hanya dengan level lebih darijava.util.logging.Level.INFO
seperti (Level.INFO, Level.WARNING, Level.SEVERE, Level.OFF
)Jadi untuk menulis log ke file hanya dengan
rootLogger
""
menambahkanjava.util.logging.FileHandler
:Untuk mencetak semua penebang di aplikasi Anda gunakan:
sumber
Varian ini jauh lebih pendek
sumber
Anda dapat menggunakan perpustakaan yang saya tulis. Ini sangat mudah digunakan:
Tambahkan ketergantungan ini ke file gradle Anda:
Inisialisasi perpustakaan di kelas Aplikasi:
Ini adalah bagaimana Anda menggunakan perpustakaan:
Dan inilah cara mengambil log:
Berikut ini tautan ke halaman github dengan informasi lebih lanjut: https://github.com/danylovolokh/AndroidLogger
Semoga ini bisa membantu.
sumber
Banyak versi sebelumnya pada log4j tidak berfungsi sekarang (20/519). Tetapi Anda dapat menggunakan Hyperlog - Saya dapat memastikan itu berfungsi.
Tambahkan baris ini ke proyek dependensi & sinkronisasi Anda
Buat kelas aplikasi baru (buat kelas java baru dan perluas Aplikasi). Kemudian dalam metode onCreate tambahkan baris ini:
Ubah file manifes untuk menetapkan file aplikasi.
Berbagai cara untuk login:
Temukan file log Anda. Navigasi ke
sumber