C भाषा मा लग व्यवस्थापन परिचय | log फंक्शनको प्रयोगदेखि मल्टिथ्रेड समर्थनसम्म पूर्ण मार्गदर्शन

1. परिचय

C भाषा प्रणाली विकास र एम्बेडेड प्रणाली जस्ता धेरै क्षेत्रहरूमा प्रयोग गरिने प्रोग्रामिङ भाषा हो। विशेष गरी लग आउटपुट कार्यले प्रोग्रामको व्यवहारलाई दृश्यात्मक बनाउँछ, डिबगिङ र त्रुटि पत्ता लगाउन अनिवार्य तत्व बनिन्छ। यस लेखमा, C भाषामा लगको आधारभूत कुराबाट, प्रभावकारी लग व्यवस्थापनका विधिहरू सम्मलाई समग्र रूपमा व्याख्या गर्नेछौं। लग आउटपुटसँग सम्बन्धित आधारभूत ज्ञान र अनुप्रयोग प्रविधिहरू बुझेर, वास्तविक विकासमा उपयोगी बनाइनेछ।

2. C भाषा को गणितीय फलन「log」बारेमा

C भाषामा, गणितीय गणनाका लागि मानक फलन「log」उपलब्ध छ। यस खण्डमा, log फलनको सारांश र आधारभूत प्रयोग विधि बारे व्याख्या गरिन्छ।

「log」फलनको सारांश र प्रयोग

「log」फलन C भाषा को गणित पुस्तकालय(math.h)मा परिभाषित प्राकृतिक लघुगणक(आधार e को लघुगणक)गणना गर्ने फलन हो। यो फलन सांख्यिकीय विश्लेषण र वैज्ञानिक गणनामा प्रायः प्रयोग हुने फलनहरूमध्ये एक हो।

#include <math.h>
double result = log(10.0);  // 10 को प्राकृतिक लघुगणक गणना

प्राकृतिक लघुगणक र सामान्य लघुगणकको भिन्नता

प्राकृतिक लघुगणक आधार e को लघुगणक हो, तर सामान्य लघुगणक(आधार 10)माlog10फलन प्रयोग गरेर गणना गरिन्छ।

double result = log10(100.0);  // 100 को सामान्य लघुगणक गणना

त्रुटि ह्यान्डलिङ

「log」फलनमा नकारात्मक संख्या वा 0 पास गर्दा त्रुटि हुन्छ, त्यसैले इनपुट जाँच आवश्यक छ।

if (number > 0) {
    result = log(number);
} else {
    printf("सकारात्मक संख्या प्रविष्ट गर्नुहोस्
");
}
侍エンジニア塾

3. C भाषा मा लग आउटपुट को मूलभूत

लग आउटपुटले प्रोग्रामको व्यवहार जाँच गर्न, समस्या पत्ता लगाउन र समाधान गर्न मद्दत गर्छ। यहाँ, मानक आउटपुट प्रयोग गरेर मूलभूत लग आउटपुट र फाइल आउटपुटको विधिहरूको बारेमा व्याख्या गरिन्छ।

मानक आउटपुट प्रयोग गरेर मूलभूत लग आउटपुट

मानक आउटपुट प्रयोग गरेर लग देखाउन, printf प्रयोग गर्नुहोस्।

#include <stdio.h>
int main() {
    printf("प्रोग्राम सुरु
");
    int x = 5;
    printf("x को मान: %d
", x);
    return 0;
}

फाइलमा लग आउटपुट

फाइलमा लग रेकर्ड गर्न, fopen द्वारा फाइल खोल्नुहोस्, र fprintf द्वारा लग लेख्नुहोस्।

#include <stdio.h>
int main() {
    FILE *logfile = fopen("log.txt", "w");
    if (logfile != NULL) {
        fprintf(logfile, "प्रोग्राम सुरु
");
        fclose(logfile);
    } else {
        printf("लॉग फाइल बनाउने असफल भयो
");
    }
    return 0;
}

4. लग स्तरको सेटिङ र व्यवस्थापन

लग स्तर सेट गरेर, सन्देशको महत्त्व अनुसार आउटपुट नियन्त्रण गर्न सकिन्छ। तल प्रत्येक स्तरको भूमिका र कार्यान्वयन उदाहरणहरू छन्।

लग स्तरको सारांश

  • DEBUG: विस्तृत डिबग जानकारी
  • INFO: सामान्य सञ्चालन जानकारी
  • WARN: चेतावनी सन्देश
  • ERROR: त्रुटि सन्देश
  • FATAL: घातक त्रुटि

लग स्तर अनुसार आउटपुट नियन्त्रण

#define LOG_LEVEL_DEBUG 0
#define LOG_LEVEL_INFO 1
#define LOG_LEVEL_WARN 2
int current_log_level = LOG_LEVEL_WARN;

void log_message(int level, const char *message) {
    if (level >= current_log_level) {
        printf("[%d] %s
", level, message);
    }
}

5. म्याक्रो प्रयोग गरेर कुशल लग आउटपुट

लगमा फाइलनाम र लाइन नम्बर जस्ता जानकारीहरू स्वचालित रूपमा थप्नको लागि म्याक्रो प्रयोग गर्न सकिन्छ।

#include <stdio.h>
#define LOG(level, message) printf("[%s] %s:%d - %sn", level, __FILE__, __LINE__, message)

int main() {
    LOG("INFO", "प्रोग्राम सुरु");
    return 0;
}

6. मल्टिथ्रेड वातावरणमा लग आउटपुट

मल्टिथ्रेड वातावरणमा, एक्सक्लुसन नियन्त्रण गर्नुपर्छ, र धेरै थ्रेडहरूबाट लग आउटपुट प्रतिस्पर्धा नगर्नु आवश्यक छ।pthread_mutexप्रयोग गरेर एक्सक्लुसन नियन्त्रण सम्भव हुन्छ।

#include <stdio.h>
#include <pthread.h>

pthread_mutex_t log_mutex;

void log_message(const char *message) {
    pthread_mutex_lock(&log_mutex);
    FILE *logfile = fopen("log.txt", "a");
    if (logfile != NULL) {
        fprintf(logfile, "%sn", message);
        fclose(logfile);
    }
    pthread_mutex_unlock(&log_mutex);
}

int main() {
    pthread_mutex_init(&log_mutex, NULL);
    log_message("थ्रेडबाटको सन्देश");
    pthread_mutex_destroy(&log_mutex);
    return 0;
}

7. बाह्य पुस्तकालयहरू प्रयोग गरेर लग व्यवस्थापन

log4c लाइब्रेरी प्रयोग गरेर, लग आउटपुटलाई अझ उन्नत रूपमा व्यवस्थापन गर्न सकिन्छ।

log4c को स्थापना र आधारभूत सेटिङ

log4c.rootCategory=INFO, R
log4c.appender.R=RollingFileAppender
log4c.appender.R.fileName=mylogfile.log
log4c.appender.R.layout=PatternLayout
log4c.appender.R.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

log4c को कोड उदाहरण

#include <log4c.h>
int main() {
    log4c_init();
    log4c_category_t* mycat = log4c_category_get("mycategory");
    log4c_category_log(mycat, LOG4C_PRIORITY_INFO, "प्रोग्राम सुरु");
    log4c_fini();
    return 0;
}

8. सारांश

यस लेखमा, C भाषा मा लगको मूलभूतदेखि उन्नत प्रयोगसम्म व्याख्या गरिएको छ।लगको मूलभूत आउटपुट विधिबाट लग स्तरको सेटिङ, बाह्य लाइब्रेरीको उपयोगसम्म सिकेर, उपयुक्त लग व्यवस्थापनद्वारा प्रोग्रामको विश्वसनीयता र मर्मत सम्भार क्षमतालाई बढाउने तरिका बुझ्नुभएको होला।पाठकहरूले वास्तविक रूपमा प्रोग्राममा लग कार्यक्षमता लागू गरी, डिबग दक्षता सुधार र समस्या समाधानमा सहयोग पाउने आशा गर्दछौं।

侍エンジニア塾