Saat ini entri default terlihat seperti ini:
Oct 12, 2008 9:45:18 AM myClassInfoHere
INFO: MyLogMessageHere
Bagaimana saya membuatnya melakukan ini?
Oct 12, 2008 9:45:18 AM myClassInfoHere - INFO: MyLogMessageHere
Klarifikasi Saya menggunakan java.util.logging
logging.properties
, dengan adaptasi berdasarkan saran oleh @BrunoEberhard dan nama penebang yang dipersingkat:java.util.logging.SimpleFormatter.format=%1$tF %1$tT %4$.1s %2$s %5$s%6$s%n
1)
-Djava.util.logging.SimpleFormatter.format
Java 7 mendukung properti dengan
java.util.Formatter
sintaks format string.Lihat disini .
Favorit saya adalah:
yang menghasilkan keluaran seperti:
2) Menempatkannya ke IDE
Biasanya IDE memungkinkan Anda menyetel properti sistem untuk suatu proyek. Misalnya di NetBeans, alih-alih menambahkan -D ... = ... di suatu tempat, tambahkan properti di dialog tindakan, dalam bentuk
java.util.logging.SimpleFormatter.format=%1$tY-%1$tm-...
- tanpa tanda kutip. IDE harus mencari tahu.3) Menempatkan itu ke Maven - Pasti
Untuk kenyamanan Anda, Berikut adalah cara memasukkannya ke Surefire:
4) Buatan tangan
Saya memiliki perpustakaan dengan beberapa
java.util.logging
kelas terkait . Di antara mereka, ituSingleLineFormatter
. Jar yang dapat diunduh di sini .sumber
Mirip dengan Tervor, Tapi saya suka mengubah properti saat runtime.
Perhatikan bahwa ini perlu disetel sebelum SimpleFormatter pertama dibuat - seperti yang tertulis di komentar.
sumber
Seperti yang dikatakan Obediah Stane, Anda perlu membuat
format
metode Anda sendiri . Tetapi saya akan mengubah beberapa hal:Buat subclass yang diturunkan langsung dari
Formatter
, bukan dariSimpleFormatter
. TidakSimpleFormatter
ada lagi yang ditambahkan.Hati-hati saat membuat
Date
objek baru ! Anda harus memastikan untuk mewakili tanggalLogRecord
. Saat membuat baruDate
dengan konstruktor default, itu akan mewakili tanggal dan waktuFormatter
prosesLogRecord
, bukan tanggalLogRecord
dibuat.Kelas berikut dapat digunakan sebagai pemformat di a
Handler
, yang pada gilirannya dapat ditambahkan keLogger
. Perhatikan bahwa ini mengabaikan semua informasi kelas dan metode yang tersedia diLogRecord
.sumber
Inilah yang saya gunakan.
Anda akan mendapatkan sesuatu seperti ...
sumber
ofNullable(record.getThrown()).ifPresent(v -> v.printStackTrace());
tepat sebelum mengembalikan pesan yang telah diformat.Per screenshot, di Eclipse pilih "run as" lalu "Run Configurations ..." dan tambahkan jawaban dari Trevor Robinson dengan tanda kutip ganda, bukan tanda kutip. Jika Anda melewatkan tanda kutip ganda, Anda akan mendapatkan kesalahan "tidak dapat menemukan atau memuat kelas utama".
sumber
Saya telah menemukan cara yang berhasil. Anda dapat membuat subkelas SimpleFormatter dan mengganti metode format
Sedikit terkejut dengan API ini, saya mengira bahwa lebih banyak fungsionalitas / fleksibilitas akan disediakan di luar kotak
sumber
formatMessage(record)
daripadarecord.getMessage()
. Placeholder tidak akan berubah.Pencatatan log ini khusus untuk aplikasi Anda dan bukan fitur Java umum. Aplikasi apa yang Anda jalankan?
Mungkin ini berasal dari perpustakaan logging tertentu yang Anda gunakan dalam kode Anda sendiri. Jika demikian, harap posting detail mana yang Anda gunakan.
sumber
java.util.logging.Logger
Jika Anda masuk ke aplikasi web menggunakan tomcat tambahkan:
Tentang argumen VM
sumber
jika Anda menggunakan java.util.logging, maka ada file konfigurasi yang melakukan ini untuk mencatat konten (kecuali Anda menggunakan konfigurasi program). Jadi, pilihan Anda adalah
1) jalankan pasca-prosesor yang menghapus jeda baris
2) ubah konfigurasi log DAN hapus jeda baris darinya. Restart aplikasi Anda (server) dan Anda akan baik-baik saja.
sumber