#include <sys/types.h>#include <sys/param.h>#include <sys/resource.h>main(int argc, char **argv) {Β int fd;Β struct rlimit flim;Β /* ΠΡΠ»ΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ β init, ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡΒ Β Β Π·Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠΈΠ³Π½Π°Π»Ρ. ΠΡΠ»ΠΈ Π½Π΅Ρ β Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡΒ Β Β ΡΠΈΠ³Π½Π°Π»Ρ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π²Π²ΠΎΠ΄ΠΎΠΌ/Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Β Β Β ΡΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°: SIGTTOU, SIGTTIN, SIGTSTP */Β if (getppid() != 1) {Β Β signal(SIGTTOU, SIG_IGN);Β signal(SIGTTIN, SIG_IGN);Β signal(SIGTSTP, SIG_IGN);Β /* Π’Π΅ΠΏΠ΅ΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π³ΡΡΠΏΠΏΡ ΠΈ ΡΠ΅Π°Π½Ρ,Β Β Β Β Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°. ΠΠ΄Π½Π°ΠΊΠΎ Π»ΠΈΠ΄Π΅ΡΠΎΠΌ Π³ΡΡΠΏΠΏΡ ΠΈΒ Β Β Β ΡΠ΅Π°Π½ΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π΅ΡΠ΅ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈΠ΄Π΅ΡΠΎΠΌ.Β Β Β Β ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠ΅Π΄ΡΡΡΠΎΡΠΈΡ Π·Π°ΠΏΡΡΠΊΠ° Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½Π°,Β Β Β Β Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠ° Π³Π°ΡΠ°Π½ΡΠΈΡ, ΡΡΠΎ Π½Π°Ρ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈΠ΄Π΅ΡΠΎΠΌ.Β Β Β Β ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅ΠΌ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ. Π’.ΠΊ. Π΅Π³ΠΎ PID ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½,Β Β Β Β ΡΠΎ Π½ΠΈ Π³ΡΡΠΏΠΏΡ, Π½ΠΈ ΡΠ΅Π°Π½ΡΠ° Ρ ΡΠ°ΠΊΠΈΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ,Β Β Β Β Π° Π·Π½Π°ΡΠΈΡ Π½Π΅Ρ ΠΈ Π»ΠΈΠ΄Π΅ΡΠ°. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡΒ Β Β Β Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΡΠΆΠ΅ Π½Π΅ Π½ΡΠΆΠ΅Π½.Β Β Β Β Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΅ΡΠ΅ ΠΎΠ΄Π½Π° ΠΏΡΠΈΡΠΈΠ½Π° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½ΠΈΡΒ Β Β Β Π΄ΠΎΡΠ΅ΡΠ½Π΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΡΠ»ΠΈ Π΄Π΅ΠΌΠΎΠ½ Π±ΡΠ» Π·Π°ΠΏΡΡΠ΅Π½ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈΒ Β Β Β ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° shell Π½Π΅ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅,Β Β Β Β ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΠΆΠΈΠ΄Π°ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π΅ΠΌΠΎΠ½Π°,Β Β Β Β ΠΈ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Π±ΡΠ΄Π΅Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½.Β Β Β Β ΠΠΎΡΠΎΠΆΠ΄Π°Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈ Π·Π°Π²Π΅ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ,Β Β Β Β ΠΈΠΌΠΈΡΠΈΡΡΠ΅ΠΌ Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅Β Β Β Β ΡΠ°Π±ΠΎΡΡ Π΄Π΅ΠΌΠΎΠ½Π°, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ shell Π²ΡΠ²Π΅Π΄Π΅Ρ ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ */Β if (fork () !=0)Β Β exit(0); /* Π ΠΎΠ΄ΠΈΡΠ΅Π»Ρ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅Ρ ΡΠ°Π±ΠΎΡΡ */Β Β /* ΠΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°Β Β Β Β ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π»ΠΈΠ΄Π΅ΡΠΎΠΌ Π½ΠΎΠ²ΠΎΠΉ Π³ΡΡΠΏΠΏΡ, ΡΠ΅Π°Π½ΡΠ° ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅ΡΒ Β Β Β Β Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° */Β }Β /* Π’Π΅ΠΏΠ΅ΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΊΡΡΡΡ ΠΎΡΠΊΡΡΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ. ΠΠ°ΠΊΡΠΎΠ΅ΠΌΒ Β Β Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ. ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎΒ Β Β ΠΎΡΠΊΡΡΡΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠΎΠ»ΡΡΠΈΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ getrlimit */Β getrlimit(RLIMIT_NOFILE, &flim);Β for (fd = 0; fd < flim.rlim_max; fd++)Β close(fd);Β /* Π‘ΠΌΠ΅Π½ΠΈΠΌ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π½Π° ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ */Β chdir("/");Β /* ΠΠ°ΡΠ²ΠΈΠΌ ΠΎ ΡΠ΅Π±Π΅ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌ ΠΆΡΡΠ½Π°Π»Π΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ½Π°ΡΠ°Π»Π°Β Β Β ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΠΎΠΏΡΠΈΠΈ Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΆΡΡΠ½Π°Π»Π°: ΠΊΠ°ΠΆΠ΄Π°Ρ Π·Π°ΠΏΠΈΡΡ Π±ΡΠ΄Π΅ΡΒ Β Β ΠΏΡΠ΅Π΄Π²Π°ΡΡΡΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ PID Π΄Π΅ΠΌΠΎΠ½Π°, ΠΏΡΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΒ Β Β Π·Π°ΠΏΠΈΡΠΈ Π² ΠΆΡΡΠ½Π°Π» ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡΡ Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»Ρ,Β Β Β ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΊΠ°ΠΊ "ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π΄Π΅ΠΌΠΎΠ½"Β Β Β (ΡΠΌ. ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ ΡΡΠ½ΠΊΡΠΈΡΠΌ Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΆΡΡΠ½Π°Π»Π° Π½ΠΈΠΆΠ΅). */Β openlog("Π‘ΠΊΠ΅Π»Π΅Ρ Π΄Π΅ΠΌΠΎΠ½Π°" , LOG_PID | LOG_CONS, LOG_DAEMON);Β /* ΠΡΠΌΠ΅ΡΠΈΠΌΡΡ */Β syslog(LOG_INFO, "ΠΠ΅ΠΌΠΎΠ½ Π½Π°ΡΠ°Π» ΠΏΠ»ΠΎΠ΄ΠΎΡΠ²ΠΎΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ...");Β closelog();Β /* ΠΠ°Π»Π΅Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈΒ Β Β Π΄Π΅ΠΌΠΎΠ½Π°. ΠΡΠ° ΡΠ°ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΈΡΠ°ΡΠ΅Π»Ρ Π΄Π»Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉΒ Β Β ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. */Β ...}Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΎΡΡ Π΅ΡΠ΅ Π½Π΅ ΠΎΠ±ΡΡΠΆΠ΄Π°Π²ΡΠ°ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΆΡΡΠ½Π°Π»Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Π€ΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ syslog(3), ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΠ°Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΄Π΅ΠΌΠΎΠ½Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΆΡΡΠ½Π°Π»Π° syslogd(1M), ΠΊΠΎΡΠΎΡΡΠΉ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΆΡΡΠ½Π°Π», Π»ΠΈΠ±ΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π½Π° ΠΈΡ ΠΊΠΎΠ½ΡΠΎΠ»Ρ, Π»ΠΈΠ±ΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π΄Π°Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΏΡΠ½ΠΊΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ (/etc/syslog.conf). Π€ΡΠ½ΠΊΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅:
#include <syslog.h>void syslog(int priority, char *logstring, /* ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ*/...);ΠΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
logstringpriorityLOG_EMERG | ΠΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ "ΠΏΠ°Π½ΠΈΠΊΠΈ" Π² ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΠ±ΡΡΠ½ΠΎ ΡΠ°ΡΡΡΠ»Π°Π΅ΡΡΡ Π²ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ. |
LOG_ALERT | ΠΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ Π½Π΅Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΡΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . |
LOG_CRIT | ΠΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠΈΠ±ΠΊΡ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. |
LOG_ERR | ΠΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ. |
LOG_WARNING | ΠΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ. |
LOG_NOTICE | ΠΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΡΠΎΠ±ΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ, Π½ΠΎ ΡΡΠ΅Π±ΡΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ. |
LOG_INFO | ΠΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. |
LOG_DEBUG | ΠΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. |