1.1 Pambuka kanggo log

Log minangka dhaptar acara sing wis kedadeyan. Meh kaya jurnal nautical utawa diary. Dadi, logger minangka obyek sing bisa sampeyan log. Ing pemrograman, umume nyathet meh kabeh. Lan ing Jawa, kabeh kaya ngono lan luwih sithik.

logger jawa

Kasunyatane yaiku program Java asring banget aplikasi server gedhe tanpa UI, konsol, lan liya-liyane. Dheweke ngolah panjaluk saka ewonan pangguna ing wektu sing padha lan asring ana macem-macem kesalahan. Utamane nalika benang sing beda-beda mulai ngganggu saben liyane.

Lan, ing kasunyatan, siji-sijine cara kanggo nemokake kesalahan lan kegagalan sing jarang digawe ing kahanan kasebut yaiku nulis menyang log / file kabeh sing kedadeyan ing saben thread.

Paling asring, informasi ditulis ing log babagan paramèter metode sing diarani, kabeh kesalahan sing dicegat, lan akeh informasi penengah. Sing luwih lengkap log, luwih gampang kanggo mulihake urutan acara lan nglacak panyebab kegagalan utawa kesalahan.

Nanging luwih gedhe log, luwih angel digarap. Kadhangkala log tekan sawetara gigabyte saben dina. Iki apik.

1.2 Log gagal

Minangka log pisanan, pangembang digunakake mung output kanggo console . Iku trep kanggo nindakake iki sajrone debugging aplikasi - nalika kabeh informasi penting lan nilai variabel ditulis ing console. Nanging log kasebut ora bisa ditrapake sajrone operasi normal aplikasi kasebut.

Sepisanan, aplikasi bisa uga pengin output soko kanggo console dhewe, lan pangguna ora pengin ndeleng informasi layanan dimaksudaké kanggo programmer ing kabeh.

Sareh, ukuran console buffer diwatesi, sampeyan ora bisa nulis akeh ana.

Lan pungkasane, kaping telune, informasi babagan kesalahan program sing diklumpukake sajrone wektu sing suwe kudu dikirim menyang pangembang program. Lan paling trep kanggo nulis kabeh informasi iki bebarengan menyang file.

Pangembang kanthi cepet ngatasi masalah pisanan - padha teka karo stream output liyane - System.err. Sampeyan bisa nulis pesen lan bakal dikirim menyang thread kapisah, lan ora kanggo console standar.

Malah masalah nulis menyang file wis ditanggulangi:

// Define the file to which we will write the log
System.setErr(new PrintStream(new File("log.txt")));
// Display messages
System.err.println("Message 1");
System.err.println("Message 2");
// Display an error message
try {
    throw new Exception("Error message");
} catch (Exception e) {
    e.printStackTrace();
}

Nanging sanajan ing wangun iki, ora ngrampungake kabeh masalah, mula diputusake nggawe perpustakaan khusus sing bakal nulis pesen log menyang file. Dheweke nindakake kanthi cara sing cerdas lan ngidini keluwesan kanggo ngatur saringan kanggo acara lan data sing mlebu.

Kabeh proses logging, nyatane, kasusun saka telung bagean:

  • Pérangan pisanan yaiku ngumpulake informasi .
  • Bagian kapindho yaiku nyaring informasi sing diklumpukake.
  • Bagian katelu yaiku rekaman informasi sing dipilih.

1.3 Pambuka kanggo log4j logger

Penebang kayu populer pisanan ing masyarakat Jawa yaiku log4j. Kalebu ing proyek kasebut gampang banget, mula sampeyan kudu nambah sawetara baris menyang pom.xml sampeyan.

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>2.2.17</version>
</dependency>

Interaksi program sampeyan karo logger kaya mangkene:

class Manager {
   private static final Logger logger = LoggerFactory.getLogger(Manager.class);

   public boolean processTask(Task task) {
        logger.debug("processTask id = " + task.getId());
        try {
            task.start();
            task.progress();
            task.complete();
            return true;
        } catch (Exception e) {
            logger.error("Unknown error", e);
            return false;
        }
    }
}

Telung perkara sing kedadeyan ing kene:

Penciptaan obyek kasebut disorot nganggo warna ijo Logger . Objek kasebut disimpen ing variabel statis supaya luwih gampang digunakake. Lan uga getLogger()informasi babagan kelas sing dikumpulake informasi kasebut diterusake menyang metode kasebut.

Baris sing disorot biru yaiku ing ngendi kita nyathet informasi nilai mung sajrone debugging . Kanggo iki, cara khusus digunakake -debug()

Lan pungkasanipun , baris ing ngendi kita nyimpen pangecualian sing wis muncul ing log disorot abang . Pangecualian minangka kesalahan potensial, saengga error().