3.1 ఈవెంట్ స్థాయిల జాబితా

లాగింగ్ అనేది ప్రోగ్రామ్ నడుస్తున్నప్పుడు సంభవించే ఏదైనా ఈవెంట్‌లను రికార్డ్ చేసే ప్రక్రియ. ప్రోగ్రామర్‌గా మీ కర్తవ్యం ఏమిటంటే record everything important, productionవింత మరియు / లేదా తీవ్రమైన లోపాలు ఉన్నప్పుడు, ఈ లాగ్‌లు తప్ప మీకు మరేమీ ఉండదు.

మీకు దాని గురించి మరియు కాల్‌ల చరిత్ర గురించి మొత్తం సమాచారం ఉంటే ఏదైనా లోపం చాలా రెట్లు వేగంగా తొలగించబడుతుంది. కానీ ఇక్కడ నుండి ఒక సాధారణ ముగింపు అనుసరిస్తుంది - సాధారణంగా ప్రతిదీ లాగ్ చేయడానికి: అన్ని పద్ధతుల కాల్స్, అన్ని పారామితుల విలువలు.

ఇది కూడా ఒక ఎంపిక కాదు - ఎక్కువ సమాచారం చాలా తక్కువగా ఉన్నంత చెడ్డది. మాకు స్మార్ట్ లాగింగ్ అవసరం. మనిషి కోసం మనిషి తయారు చేశాడు. మరియు ఇక్కడ మేము లాగింగ్ గురించి మొదటి వాస్తవానికి వచ్చాము - లాగ్‌లోని అన్ని ఎంట్రీలు వాటి సృష్టి సమయంలో కూడా వర్గాలుగా విభజించబడ్డాయి.

ఈవెంట్ స్థాయిల జాబితా

ప్రోగ్రామర్, లాగ్‌కు ఈవెంట్‌ను వ్రాసేటప్పుడు, ఈ సమాచారం ఎంత ముఖ్యమైనదో స్వయంగా నిర్ణయించుకోవాలి. ఈవెంట్ యొక్క తీవ్రత స్థాయిని సందేశ రచయిత ఎంపిక చేస్తారు. log4jలాగ్ చేయబడిన సమాచార ప్రాముఖ్యత యొక్క 5 స్థాయిలు ఉన్నాయి :

  • DEBUG
  • INFO
  • WARN
  • ERROR
  • FATAL

క్రింద మేము వాటి గురించి మరింత వివరంగా తెలియజేస్తాము.

3.2 డీబగ్

స్థాయి DEBUGఅతి ముఖ్యమైనదిగా పరిగణించబడుతుంది. ఈ స్థాయి ప్రాముఖ్యతతో లాగ్‌కు వ్రాయబడిన సమాచారం అప్లికేషన్ డీబగ్గింగ్ సమయంలో మాత్రమే అవసరం. డీబగ్గింగ్ సమయంలో అవసరమైన సమాచారాన్ని లాగ్ చేయడానికి, పద్ధతి ఉపయోగించబడుతుంది debug().

ఉదాహరణ:

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

శ్రద్ధ వహించండి, పద్ధతి debugపద్ధతి ప్రారంభంలోనే ఉంది (పద్ధతి ఇంకా ఏదైనా చేయడానికి సమయం లేదు) మరియు లాగ్‌కు పద్ధతికి పంపబడిన వేరియబుల్ విలువను వ్రాస్తుంది. ఇది పద్ధతికి అత్యంత సాధారణ ఉపయోగ సందర్భం debug().

3.3 సమాచారం మరియు హెచ్చరిక

తదుపరి రెండు స్థాయిలు INFOమరియు WARN. వారికి రెండు పద్ధతులు ఉన్నాయి - info()మరియు warn().

స్థాయి INFOకేవలం సమాచార సందేశాల కోసం ఉపయోగించబడుతుంది: ఇది మరియు అది జరుగుతుంది. మీరు లాగ్‌లో లోపాన్ని అన్వయించడం ప్రారంభించినప్పుడు, దాని నేపథ్యాన్ని చదవడం చాలా ఉపయోగకరంగా ఉంటుంది. దీనికి పద్ధతి సరైనది info().

హెచ్చరికలను వ్రాయడానికి స్థాయి WARNఉపయోగించబడుతుంది ( హెచ్చరిక పదం నుండి ). సాధారణంగా, ఈ స్థాయి ప్రాముఖ్యతతో, ఏదో తప్పు జరిగిందని సమాచారం వ్రాయబడుతుంది, అయితే ఈ పరిస్థితిలో ఏమి చేయాలో ప్రోగ్రామ్‌కు తెలుసు.

ఉదాహరణకు, డిస్క్‌కి ఫైల్‌ను వ్రాసే ప్రక్రియలో, అటువంటి ఫైల్ ఇప్పటికే ఉందని తేలింది. ఇక్కడ ప్రోగ్రామ్ హెచ్చరికను (హెచ్చరిక) లాగ్ చేయగలదు, కానీ వినియోగదారుకు డైలాగ్ బాక్స్‌ను చూపుతుంది మరియు వేరే ఫైల్ పేరును ఎంచుకోవడానికి ఆఫర్ చేస్తుంది.

ఉదాహరణ:

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మరియు FATAL. వారికి, అదే పేర్లతో ప్రత్యేక పద్ధతులు కూడా ఉన్నాయి: error()మరియు fatal().

వారు తప్పులను రెండు వర్గాలుగా విభజించాలని కూడా నిర్ణయించారు - సాధారణ లోపాలు మరియు ప్రాణాంతక లోపాలు . ఒక ఘోరమైన లోపం తరచుగా అప్లికేషన్ క్రాష్ (డెస్క్‌టాప్ అప్లికేషన్‌ల కోసం) లేదా వెబ్ సర్వీస్ క్రాష్ (వెబ్ అప్లికేషన్‌ల కోసం)కి దారి తీస్తుంది.

మరొక మంచి ఉదాహరణ Windows ఆపరేటింగ్ సిస్టమ్. మీ ప్రోగ్రామ్ ఇప్పుడే క్రాష్ అయినట్లయితే, ఆపరేటింగ్ సిస్టమ్ యొక్క కోణం నుండి, ఇది Error. మరియు ఆపరేటింగ్ సిస్టమ్ పడిపోయినట్లయితే మరియు మీరు మరణం యొక్క విండోస్ బ్లూ స్క్రీన్‌ను చూస్తే, ఇది ఇప్పటికే ఉంది Fatal error.

జావా అప్లికేషన్లలో, ఈవెంట్‌లు చాలా తరచుగా పెరిగిన మినహాయింపులతో అనుబంధించబడతాయి Error. Fatalఉదాహరణ:

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 ఏమి లాగ్ చేయాలి

వాస్తవానికి, వరుసగా ప్రతిదీ లాగింగ్ చేయడం విలువైనది కాదు. చాలా సందర్భాలలో, ఇది లాగ్ యొక్క రీడబిలిటీని తీవ్రంగా దెబ్బతీస్తుంది మరియు అన్నింటికంటే, లాగ్ చదవడానికి మొదటి స్థానంలో వ్రాయబడుతుంది.

అదనంగా, మీరు లాగ్‌కు వివిధ వ్యక్తిగత మరియు ఆర్థిక సమాచారాన్ని వ్రాయలేరు. ఇప్పుడు దీనితో ఖచ్చితంగా మరియు సులభంగా మీరు జరిమానాలు లేదా వ్యాజ్యాలను అమలు చేయవచ్చు. ముందుగానే లేదా తరువాత, అటువంటి లాగ్ ప్రక్కకు లీక్ అవుతుంది మరియు అప్పుడు ఎటువంటి సమస్యలు ఉండవు.

కాబట్టి ఏమి లాగిన్ చేయాలి?

మొదట, మీరు అప్లికేషన్ యొక్క ప్రారంభాన్ని లాగిన్ చేయాలి . అప్లికేషన్ ప్రారంభించిన తర్వాత, దాని ఆపరేషన్ మోడ్ మరియు వివిధ ముఖ్యమైన సెట్టింగ్‌లను లాగ్ చేయమని సిఫార్సు చేయబడింది - ఇది భవిష్యత్తులో లాగ్‌ను చదవడాన్ని సులభతరం చేస్తుంది.

రెండవది, మీరు మీ అప్లికేషన్ పనిచేసే అన్ని మూడవ పక్ష సేవల స్థితిని లాగిన్ చేయాలి : మెయిలింగ్ సిస్టమ్‌లు, ఏదైనా బాహ్య సేవలు. కనిష్టంగా, అవి సరిగ్గా పని చేస్తున్నాయని నిర్ధారించుకోవడానికి మీరు వాటికి కనెక్షన్ యొక్క క్షణాన్ని సురక్షితంగా ఉంచాలి.

మూడవదిగా, అన్ని మినహాయింపులను లాగిన్ చేయాలి . వారు ఆశించినట్లయితే, వాటిపై సమాచారాన్ని కాంపాక్ట్‌గా వ్రాయవచ్చు. బగ్ కోసం శోధిస్తున్నప్పుడు మినహాయింపుల గురించి పూర్తి సమాచారం 50%-80% ముఖ్యమైన సమాచారాన్ని అందిస్తుంది.

మీరు అప్లికేషన్ షట్‌డౌన్‌ను కూడా లాగిన్ చేయాలి . అప్లికేషన్ తప్పనిసరిగా రద్దు చేయబడాలి మరియు డజన్ల కొద్దీ లోపాలను లాగ్‌లో వేయకూడదు. తరచుగా ఈ స్థలంలో మీరు చిక్కుకున్న పనులు, థ్రెడ్ పూల్‌తో సమస్యలు లేదా తాత్కాలిక ఫైల్‌లను తొలగించడంలో సమస్యలను కనుగొనవచ్చు.

భద్రత మరియు వినియోగదారు అధికారానికి సంబంధించిన ప్రతిదానిని లాగ్ చేయండి . ఒక వినియోగదారు వారి పాస్‌వర్డ్‌ను వరుసగా 10 సార్లు లాగిన్ చేయడానికి లేదా రీసెట్ చేయడానికి ప్రయత్నిస్తే, ఈ సమాచారం లాగ్‌లలో ప్రతిబింబించాలి.

అసమకాలిక పనుల గురించి సాధ్యమైనంత ఎక్కువ సమాచారాన్ని లాగ్ చేయండి - అటువంటి థ్రెడ్‌లలో మినహాయింపులు తరచుగా పోతాయి. అసమకాలిక పని కోసం, దాని ప్రారంభం మరియు ముగింపుని లాగ్ చేయండి. విజయవంతంగా పూర్తి చేయడం సమస్యాత్మకమైన దాని వలెనే లాగిన్ చేయాలి.

ఇంకేముంది? సమయం ముగిసిన టాస్క్‌లను ప్రారంభించడం, నిల్వ చేసిన పనులను ప్రారంభించడం SQL-procedures, డేటాను సమకాలీకరించడం, పంపిణీ చేసిన లావాదేవీలకు సంబంధించిన ప్రతిదీ. ప్రారంభానికి ఇది సరిపోతుందని నేను భావిస్తున్నాను. మీరు భవిష్యత్తులో ఈ జాబితాకు జోడిస్తారు.