Sobes.tech
Junior

Trace дар контексти логгирӣ чист?

sobes.tech AI

Ҷавоб аз AI

Trace - ин яке аз сатҳҳои сабт кардани хост, ки маълумоти хеле муфассалро дар бораи иҷрои барнома пешниҳод мекунад, аз ҷумла фаро гирифтани функсияҳо, арзишҳои тағирёбандаҳо ва дигар ҳодисаҳои пастсуръат. Он барои таҳлили амиқ ва ислоҳи мушкилоти мураккаб, ки дар сатҳҳои баландтар (Debug, Info, Warn, Error, Fatal) намебошанд, истифода мешавад.

Маслиҳатҳои истифодаи trace-logging:

  • пайгирии ҷараёни иҷро дар барномаҳои бисёрсоҳавӣ.
  • назорати вақти иҷрои амалҳо ё блокҳои коди алоҳида.
  • ошкор кардани сабабҳои шикастани хотира ё дигар мушкилоти иҷроиш.
  • таҳлили муфассал дар бораи муоширати шабакавӣ ё кор бо базаи додаҳо.

Дар муқоиса бо сатҳҳои дигар:

Сатҳ Тавсиф Истифода
Trace Маълумоти хеле муфассал Таҳлили амиқ ва ислоҳоти қатъӣ
Debug Маълумоти барои ислоҳи хатогиҳо, камтар муфассал Ҷустуҷӯи хатоҳо дар таҳия
Info Маълумоти умумӣ дар бораи кори барнома Мониторинг ва аудит
Warn Ҳушдорҳо дар бораи мушкилоти эҳтимолӣ ошкор кардани ҳолатҳои нокритикӣ
Error Паёмҳои хато сабт кардани норасоиҳо дар кор
Fatal Хатогиҳои ҷиддӣ, ки ба қатъ шудани барнома оварда мерасонанд ошкор кардани нобудии пурра

Объекти trace-logging одатан дар муҳити истеҳсолӣ ғайрифаъол аст, зеро он миқдори зиёди маълумотро тавлид мекунад ва метавонад ба иҷроиш таъсир расонад. Он танҳо дар ҳолатҳои зарурӣ барои таҳлили амиқ фаъол карда мешавад.

Маслиҳати код дар Java бо истифода аз SLF4J барои trace-logging:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Example {

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

    public void doSomething() {
        logger.trace("Воридшавӣ ба метод doSomething"); // сабт кардани trace дар дохили метод

        int result = calculate();

        logger.trace("Натиҷаи ҳисоб: {}", result); // сабт кардани арзиши тағирёбанда

        logger.trace("Баромад аз метод doSomething"); // сабт кардани trace дар хориҷи метод
    }

    private int calculate() {
        logger.trace("Воридшавӣ ба метод calculate");
        int x = 10;
        int y = 20;
        int sum = x + y;
        logger.trace("Ҳамҷамъӣ ҳисобшуда: {}", sum);
        logger.trace("Баромад аз метод calculate");
        return sum;
    }

    public static void main(String[] args) {
        Example example = new Example();
        example.doSomething();
    }
}