Журналдарды кантип жазса болот

Мазмуну:

Журналдарды кантип жазса болот
Журналдарды кантип жазса болот

Video: Журналдарды кантип жазса болот

Video: Журналдарды кантип жазса болот
Video: ЖАШООҢДУ ӨЗГӨРТКҮҢ КЕЛСЕ? ОЙЛОНГОНДУ ҮЙРӨН! 2024, Май
Anonim

Бүгүнкү күндө, көпчүлүк тиркеме жана тутумдук тиркемелер иштөө процесси, каталар жана каталар жөнүндө маалыматты мезгил-мезгили менен журналдар деп аталган атайын журналдарда сактап турушат. Көпчүлүк жалпы багыттагы операциялык тутумдар стандарттуу программалоо интерфейсин колдонуп журналдарды жазууга мүмкүндүк берген кызматтарды көрсөтүшөт.

Журналдарды кантип жазса болот
Журналдарды кантип жазса болот

Зарыл

  • - C компилятору;
  • - Windows Platform SDK;
  • - glibc үчүн пакет иштеп чыгуу.

Нускамалар

1 кадам

Windows үй-бүлөсүнүн операциялык тутумдарында иштөө үчүн иштелип чыккан тиркемесиңизден тутум журналына журналдарды жазууга колдоо кошуңуз.

Колдонмону окуялардын булагы катары каттоо үчүн RegisterEventSource API функциясын, ReportEvent функциясын журналга жазуу кошуу үчүн жана DeregisterEventSource функциясын RegistEventSource тарабынан кайтарылган туткасын жабуу үчүн колдонуңуз.

Колдонмону инициализациялоо учурунда RegistEventSource деп аталып, артка кайтарылган дескрипторду ар дайым сактап туруу акылга сыярлык болот, ошондо журналдагы жазуулар программанын ар кайсы жерлеринен жайгаштырылышы мүмкүн. Windows журналына жазуунун эң жөнөкөй мисалы төмөнкүдөй болушу мүмкүн:

HANDLE hLog = RegisterEventSource (NULL, "MyApplicationName");

if (hLog! = NULL)

{

if (ReportEvent (hLog, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, "Билдирүүнүн тексти / 0", NULL))

{

// окуя ийгиликтүү катталды

}

DeregisterEventSource (hLog);

}

ReportEvent функциясынын семантикасы жөнүндө көбүрөөк маалыматты MSDNден https://msdn.microsoft.com/en-us/library/windows/desktop/aa363679%28v=vs.85%29.aspx дарегинен таба аласыз. Мындан тышкары, тиркеменин аткарылуучу модулу жөнүндө айрым маалыматтарды тутумдук реестрге киргизип, белгилүү бир форматтагы ресурстарды модулдун өзүнө же үчүнчү жактын динамикалык китепканасына кошушуңуз керек. Окуялар журналы кызматынын регистринин ачкычтары жөнүндө көбүрөөк маалымат алуу үчүн https://msdn.microsoft.com/en-us/library/windows/desktop/aa363661%28v=vs.85%29.aspx караңыз.

2-кадам

Linux шайкеш иштөө тутумдарына кирүү адатта syslog демонунун жардамы менен жүргүзүлөт. Бул кызматта декларациялар syslog.h баш файлына жайгаштырылган функциялардын жыйындысы түрүндөгү колдонмо деңгээлиндеги интерфейс бар.

Колдонмодон же китепканадан sylog блогуна байланыш түзүү үчүн openlog функциясын колдонуңуз. Кабарларды журналга киргизүү үчүн syslog же vsyslog функцияларына чалыңыз. Окуяларды жазуу аяктагандан кийин же тиркеме чыккандан кийин, кызматка туташуу функциясын closelog функциясына чалып жабыңыз. Мындан тышкары, setlogmask функциясын колдонуп, белгилүү бир артыкчылыктуу окуялар жазууларын кошкон чалууларды четке кагуу үчүн орнотууларды конфигурациялай аласыз. Журналга билдирүүлөрдү жазуунун мисалы төмөнкүдөй болушу мүмкүн:

openlog ("MyApplication", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);

syslog (LOG_NOTICE, "MyApplication PID% d менен ишке киргизилген", getuid ());

syslog (LOG_INFO, "Маалыматтык билдирүү!");

closelog ();

Syslog API функцияларынын параметрлери жөнүндө көбүрөөк маалымат алуу үчүн, libc маалымат документтерин караңыз.

3-кадам

Өзүңүздүн иш-аракетиңиздин туруктуу тутумун колдонуп, каалаган файлдарга журналдарды жазыңыз. Бул көйгөйдү чечүүнүн эң жөнөкөй чечимдеринин бири - глобалдык масштабда бир нече функцияларды түзүү, алардын бири белгилүү бир аталыштагы файлды кошумча маалымат режиминде ачат, экинчиси аны жабат, үчүнчүсү ага берилген билдирүү сабын кошот бул файлга параметр. Концептуалдык түрдө, бул чечим Linux тутумундагы syslog программалоо интерфейсине окшош.

Файлды ачуу жана жабуу үчүн C стандарттык китепканасынын fopen жана fclose функцияларын колдонуңуз. Файлга маалымат кошуу үчүн fwrite дегенге чалыңыз. Ошондой эле, платформага тиешелүү функцияларды (мисалы, Windows астында CreateFile) жана файлдар менен иштөөнүн функционалдык мүмкүнчүлүктөрүн камтыган алкактын объектилеринин методдорун колдонсоңуз болот.

Сунушталууда: