3.1 Dhaptar tingkat acara

Logging minangka proses ngrekam acara apa wae sing kedadeyan nalika program lagi mlaku. Tugas sampeyan minangka programmer record everything importantamarga banjur, nalika productionana kesalahan aneh lan / utawa serius, sampeyan ora bakal duwe apa-apa liyane kajaba log iki.

Sembarang kesalahan bakal diilangi kaping pirang-pirang luwih cepet yen sampeyan duwe kabeh informasi babagan iki lan kabeh riwayat telpon. Nanging kesimpulan prasaja nderek saka kene - kanggo log kabeh ing umum: nelpon kabeh cara, nilai kabeh paramèter.

Iki uga dudu pilihan - kakehan informasi uga ala banget. We kudu pinter logging. Digawe dening manungsa kanggo manungsa. Lan ing kene kita teka ing kasunyatan pisanan babagan logging - kabeh entri ing log dipérang dadi kategori sanajan nalika digawe.

Dhaptar tingkat acara

Programmer, nalika nulis acara ing log, kudu mutusake dhewe carane penting informasi iki. Tingkat keruwetan acara kasebut dipilih dening penulis pesen. Ana log4j5 tingkat pentinge informasi log:

  • DEBUG
  • INFO
  • WARN
  • ERROR
  • FATAL

Ing ngisor iki kita bakal nyritakake babagan kasebut kanthi luwih rinci.

3.2 DEBUG

Tingkat kasebut DEBUGdianggep paling ora penting. Informasi sing ditulis ing log kanthi tingkat wigati iki mung dibutuhake sajrone debugging aplikasi. Kanggo nyathet informasi sing dibutuhake sajrone debugging, cara kasebut digunakake debug().

Tuladha:

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;
        }
    }
}

Wigati, metode kasebut debugana ing wiwitan metode (metode kasebut durung duwe wektu kanggo nindakake apa-apa) lan nulis nilai variabel sing diterusake menyang metode menyang log. Iki minangka kasus panggunaan sing paling umum kanggo metode kasebut debug().

3.3 INFO lan WARN

Loro tingkat sabanjure yaiku INFOlan WARN. Ana rong cara kanggo wong-wong mau - info()lan warn().

Tingkat INFOdigunakake mung kanggo pesen informasi: iki lan sing mengkono. Nalika sampeyan miwiti parsing kesalahan ing log, bisa migunani banget kanggo maca latar mburi. Cara iki sampurna kanggo iki info().

Tingkat WARNdigunakake kanggo nulis bebaya (saka tembung bebaya ). Biasane, kanthi tingkat penting iki, informasi ditulis yen ana sing salah, nanging program kasebut ngerti apa sing kudu ditindakake ing kahanan iki.

Contone, ing proses nulis file menyang disk, ternyata file kasebut wis ana. Ing kene program bisa log warning (warning), nanging nuduhake pangguna kothak dialog lan nawakake kanggo milih jeneng berkas beda.

Tuladha:

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

    public boolean saveFile(FileData file) {
        logger.info(“save the file ” + file.getName());
        boolean resultOK = SaveUtils.save(file);
        if (resultOK) return true;

        logger.warn(“file writing problem ” + file.getName());
        String filename = Dialog.selectFile();
        boolean result = SaveUtils.save(file, filename);
        return result;
    }

3.4 ERROR lan FATAL

Pungkasan, rong tingkat logging sing paling penting yaiku ERRORlan FATAL. Kanggo wong-wong mau, ana uga cara khusus kanthi jeneng sing padha: error()lan fatal().

Dheweke uga mutusake kanggo mbagi kesalahan dadi rong kategori - kesalahan biasa lan kesalahan fatal . Kesalahan fatal sing paling kerep nyebabake kacilakan aplikasi (kanggo aplikasi desktop) utawa kacilakan layanan web (kanggo aplikasi web).

Conto apik liyane yaiku sistem operasi Windows. Yen program sampeyan mung nabrak, banjur saka sudut pandang sistem operasi, iki Error. Lan yen sistem operasi dhewe wis tiba lan sampeyan ndeleng layar biru Windows pati, banjur iki wis Fatal error.

Ing aplikasi Java, acara Errorpaling kerep Fataldigandhengake karo pangecualian sing diangkat. Tuladha:

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;
        }
    }
}

3.5 Apa kanggo log

Mesti wae, iku ora worth logging kabeh ing saurutan. Ing kasus-kasus sing paling umum, iki bakal ngrusak maca log, lan sawise kabeh, log kasebut ditulis ing wiwitan supaya bisa diwaca.

Kajaba iku, sampeyan ora bisa nulis macem-macem informasi pribadhi lan finansial menyang log. Saiki kanthi ketat lan gampang sampeyan bisa ngalami denda utawa tuntutan hukum. Cepet utawa mengko, log kasebut bakal bocor ing sisih lan ora ana masalah.

Dadi apa sing kudu dicathet?

Pisanan, sampeyan kudu mlebu log wiwitan aplikasi . Sawise aplikasi diwiwiti, disaranake log mode operasi lan macem-macem setelan penting - iki bakal luwih gampang maca log kasebut ing mangsa ngarep.

Kapindho, sampeyan kudu nyathet status kabeh layanan pihak katelu sing digunakake aplikasi sampeyan: sistem surat, layanan eksternal apa wae. Paling ora, sampeyan kudu ngamanake wayahe sambungan kanggo mesthekake yen padha bisa mlaku.

Katelu, kabeh pangecualian kudu dicathet . Yen dikarepake, informasi kasebut bisa ditulis kanthi kompak. Informasi lengkap babagan pengecualian menehi 50%-80% informasi penting nalika nggoleki bug.

Sampeyan uga kudu mlebu log mati aplikasi . Aplikasi kasebut kudu mandheg kanthi normal lan ora mbuwang puluhan kesalahan menyang log. Asring ing panggonan iki sampeyan bisa nemokake tugas macet, masalah karo blumbang thread, utawa masalah karo mbusak file sauntara.

Pesthekake nyathet kabeh sing ana gandhengane karo keamanan lan wewenang pangguna . Yen pangguna nyoba mlebu utawa ngreset tembung sandhi 10 kaping saurutan, informasi iki kudu dicethakaké ing log.

Log informasi sabisa babagan tugas sing ora sinkron - pangecualian asring ilang ing benang kasebut. Kanggo tugas sing ora sinkron, pesthekake log wiwitan lan pungkasane. Rampung sing sukses kudu dicathet kanthi cara sing padha karo masalah.

opo maneh? Mbukak tugas wektu, mbukak tugas sing disimpen SQL-procedures, nyinkronake data, kabeh sing ana gandhengane karo transaksi sing disebarake. Aku wis cukup kanggo miwiti. Sampeyan bakal nambah dhaptar iki ing mangsa ngarep.