Opa nos primordios usava uma rotina feita pelo Juniou aqui da lista tem como deixar ela realtime mas eu usava estática mesmo !!
Source de exemplo usando PostgreSQL #include <stdio.h> #include <stdlib.h> #include <string.h> #include <libpq-fe.h> #include <time.h> /*###########################################################*/ /* Conversor do queue_log para PostgreSQL */ /* Data: 20-10-2006 */ /* Porto Velho - RO [EMAIL PROTECTED] */ /*###########################################################*/ #define MAX_CAMPOS 11 #define DELIMITADOR '|' char* campos[MAX_CAMPOS]; int Preencher_Campos(char *linha) { char *inicio, *delimitador; int campo_atual = 0; inicio = linha; delimitador = strchr(inicio, DELIMITADOR); while (delimitador && campo_atual < MAX_CAMPOS-1) { *delimitador = '\0'; campos[campo_atual++] = inicio; inicio = delimitador + 1; delimitador = strchr(inicio, DELIMITADOR); } campos[campo_atual++] = inicio; return campo_atual; } /*Objeto de conexão*/ PGconn *conn = NULL; /*Ponteiro de resultado*/ PGresult *result; int main() { /*realiza a conexão*/ conn = PQconnectdb("host=localhost user=asterisk password=asterisk dbname=asterisk"); if(PQstatus(conn) == CONNECTION_OK) { printf("Conexão com o banco efetuada com sucesso. "); } else { printf("Falha na conexão. Erro: %s", PQerrorMessage(conn)); PQfinish(conn); return -1; } //Delete lixo da tabela... result = PQexec(conn, "DELETE FROM queue_log WHERE evento = 'CONFIGRELOAD'"); if(!result) { printf("Erro executando query."); } else { switch(PQresultStatus(result)) { case PGRES_EMPTY_QUERY: printf("Nenhuma alteracao."); break; case PGRES_FATAL_ERROR: printf("Erro na query: %s ", PQresultErrorMessage(result)); break; case PGRES_COMMAND_OK: printf("%s linhas afetadas. ", PQcmdTuples(result)); break; default: printf("Query executada sem retorno."); break; } } FILE *arquivo; char consulta[1024]; char string[1024]; //string onde ficara a linha int x = 0; int campos_lidos; char *delimitador, *inicio; int aux1; //#define DATE_FORMAT "%Y-%m-%d %T" //time_t t; //struct tm tm; //char date[256]; //time(&t); //localtime_r(&t, &tm); //strftime(date, sizeof(date), DATE_FORMAT, &tm); arquivo = fopen("/var/log/asterisk/queue_log", "rt"); while (! feof(arquivo)) { while(fgets(string, sizeof(string), arquivo)) //le arquivo { delimitador = strchr(string, '\n'); while (delimitador) { *delimitador = '\0'; printf("\n\n\nLinha: %s\n\n", string); campos_lidos = Preencher_Campos(string); //printf("Campos LIDOS: %d\n Data: %s ", campos_lidos, date); printf("Campos LIDOS: %d\n ", campos_lidos); int i; for (i=0; i<campos_lidos-1; i++) printf("Campo %2i: %s\n", i, campos[i]); //getchar(); strcpy(consulta,""); strcat(consulta,"INSERT INTO queue_log values ('"); for (i=0; i< campos_lidos-1; i++) { strcat(consulta,campos[i]); strcat(consulta, "','"); aux1 = i+1; } strcat(consulta,campos[aux1]); strcat(consulta, "')"); result = PQexec(conn, consulta); if(!result) { printf("Erro executando query."); } else { switch(PQresultStatus(result)) { case PGRES_EMPTY_QUERY: printf("Nenhuma alteracao."); break; case PGRES_FATAL_ERROR: printf("Erro na query: %s ", PQresultErrorMessage(result)); break; case PGRES_COMMAND_OK: printf("%s linhas afetadas. ", PQcmdTuples(result)); break; default: printf("Query executada sem retorno."); break; } inicio = delimitador + 1; delimitador = strchr(inicio, '\n'); } x = x+1; } } fclose(arquivo); //fecha arquivo /*Libera objeto da query*/ PQclear(result); } /*Verifica se a conexão está aberta e a encerra*/ if(conn != NULL) PQfinish(conn); } Da para aprimorar isso !!! Agora tem uma maneira mais simples ainda de se fazer isso com o stdin de qualquer programa veja um exemplo simples !! import sys retorna_valores = sys.stdin.readline().split(',') print retorna_valores se vc rodar isso em conjunto com um tail -f vai conseguir pegar todas as informações em tempo real conforme forem entrando no log, veja exemplo bobo!! tail -f /var/log/asterisk/queue_log | python teste.py só escrever a rodina de insert para o banco no seu programa e pronto!! []'s Eng Eder de Souza Em 9 de agosto de 2010 14:00, Sidnei - IG <sidnei...@ig.com.br> escreveu: > Pessoal. > > Alguém sabe como faço para inserir os dados do queue_log > (/var/log/asterisk/queue_log) no BD Mysql em tempo real??? > > Uso asterisk 1.2.24 (Meucci). > > > > _______________________________________________ > KHOMP: qualidade em placas de E1, GSM, FXS e FXO para Asterisk. > - Hardware com alta disponibilidade de recursos e qualidade KHOMP > - Suporte técnico local qualificado e gratuito > Conheça a linha completa de produtos KHOMP em www.khomp.com.br > _______________________________________________ > Temos tudo para seu projeto VoIP com Asterisk! > Descontos especiais para assinantes da AsteriskBrasil.org. > Registre-se e receba um cupom exclusivo de desconto! > Acesse agora www.voipmania.com.br > ______________________________________________ > Lista de discussões AsteriskBrasil.org > AsteriskBrasil@listas.asteriskbrasil.org > http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil >
_______________________________________________ KHOMP: qualidade em placas de E1, GSM, FXS e FXO para Asterisk. - Hardware com alta disponibilidade de recursos e qualidade KHOMP - Suporte técnico local qualificado e gratuito Conheça a linha completa de produtos KHOMP em www.khomp.com.br _______________________________________________ Temos tudo para seu projeto VoIP com Asterisk! Descontos especiais para assinantes da AsteriskBrasil.org. Registre-se e receba um cupom exclusivo de desconto! Acesse agora www.voipmania.com.br ______________________________________________ Lista de discussões AsteriskBrasil.org AsteriskBrasil@listas.asteriskbrasil.org http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil