KOI8-R Kirill Lopuchov, lopuchov at mail ru Ведение логов сервера в SQL-базе имеет свои приемущества перед обычными текстовыми файлами. 3proxy поддерживает ведение логов через ODBC-менеджер в любой базе данных, имеющих ODBC-драйвер. Этот менеджер стал стандартом де-факто в среде Windows, чего, к сожалению, не скажешь про Unix. Поэтому далее рассмотрим на примере FreeBSD настройку ведения логов в базе SQLite. Эта база данных выбрана в качестве примера потому, что она проста в установке и настроке (в принципе настройка ведения логов в любой другой базе mysql или postgresql отличается только настройкой его odbc-драйвера) Устанавливаем SQLite wget http://www.sqlite.org/sqlite-2.8.14.tar.gz tar -xvzf sqlite-2.8.14.tar.gz cd sqlite ./configure gmake gmake install Устанавливаем iODBC менеджер wget http://www.iodbc.org/libiodbc-3.51.2.tar.gz tar -xvzf libiodbc-3.51.2.tar.gz cd libiodbc-3.51.2 ./configure --disable-gui --disable-gtktest make make install Устанавливаем odbc драйвер SQLite wget http://www.ch-werner.de/sqliteodbc/sqliteodbc-0.62.tar.gz tar -xvzf sqliteodbc-0.62.tar.gz cd sqliteodbc-0.62 ./configure Если у вас скрипт configure выдал ошибку : (configure: error: SQLite library too old) то ее можно попробовать обойти, вставив (SQLITE_COMPILE=1 в стр. 5092 после условия if endif) в файле configure make make install Далее настраиваем записи для iODBC менеджера в файлах /etc/odbcinst.ini и /etc/odbc.ini Настраиваем odbc драйвер --------------/etc/odbcinst.ini------------- [ODBC Drivers] SQLite=Installed [SQLite] Driver=/usr/local/lib/libsqliteodbc.so --------------------------------------- Создаем DSN для базы c именем "sqlite", которая будет располагаться в каталоге: /usr/local/3proxy/logs.db --------------/etc/odbc.ini---------------- [ODBC Data Sources] sqlite=SQLite [sqlite] Driver=/usr/local/lib/libsqliteodbc.so Description=SQLite test database Database=/usr/local/3proxy/logs.db # optional lock timeout in milliseconds Timeout=2000 --------------------------------------- Создаем базу для логов и таблицу в формате (logformat см. описание в 3proxy.cfg.sample ) sqlite /usr/local/3proxy/logs.db SQLite version 2.8.14 Enter ".help" for instructions sqlite>create table log ( ...> l_date char (11), ...> l_chour char (10), ...> l_user char (30), ...> l_service char (30), ...> l_in integer, ...> l_out integer, ...> l_descr char (64000), ...>); Добавляем следующие записи в конфигурационный файл 3proxy.cfg ---------------3proxy.cfg----------------- log &sqlite logformat "Linsert into log ( l_date, l_chour, l_user, l_service, l_in, l_out, l_descr) values ('%d-%m-%Y', '%H:%M:%S', '%U', '%N', %I, %O, '%T')" ------------------------------------------ Cобрать 3proxy c поддрежкой iODBC, для этого в Makefile.unix поменять CFLAGS = -Wall -O2 -c -pthread -D_THREAD_SAFE -D_REENTRANT -DWITH_STD_MALLOC -I/usr/local/include LIBS = -L /usr/local/lib -lodbc и дать команды make clean make -f Makefile.unix