Patch for logging into file + Makefile NO_DEBUG switch
Florian Lohoff
f at zz.de
Thu Jun 10 20:40:54 CEST 2010
On Fri, May 07, 2010 at 02:00:36PM +0400, Михаил Продан wrote:
> I don't known if this is a right place to post this thing.
> But.
> Here is a patch for logging into file using -f switch
> Also a small change of Makefile for turning on\off optimizations (-O2 -g compiler switches).
> Usage: make (Normal build with -O0 -g). make NO_DEBUG=1 (for -O2)
Getting back to this - there are certain things to note on this patch.
> diff --git a/.gitignore b/.gitignore
> index 70bce91..42ef55e 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -8,5 +8,6 @@ core*
> *.rej
> tsdecode
> getstream
> -
> +getstream.conf
> +gs.sh
> !.gitignore
Unrelated hunk
> diff --git a/Makefile b/Makefile
> index 345a635..47cc29d 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1,5 +1,9 @@
> CC=gcc
> -CFLAGS=-O0 -g -Wall -I. -I/usr/include/glib-2.0/ -I/usr/lib/glib-2.0/include/
> +ifdef NO_DEBUG
> + CFLAGS=-O2 -Wall -I. -I/usr/include/glib-2.0/ -I/usr/lib/glib-2.0/include/
> +else
> + CFLAGS=-O0 -g -Wall -I. -I/usr/include/glib-2.0/ -I/usr/lib/glib-2.0/include/
> +endif
> LDFLAGS=-levent -lglib-2.0 -lpthread
> OBJ-getstream=getstream.o fe.o crc32.o \
> libhttp.o libconf.o config.o util.o logging.o \
> diff --git a/getstream.c b/getstream.c
> index b56fa3e..45c5502 100644
> --- a/getstream.c
> +++ b/getstream.c
> @@ -98,7 +98,7 @@ static void terminate_init(int timeout) {
>
>
> static void usage(void ) {
> - fprintf(stderr, "-c <config file> -d -t <timeout>\n");
> + fprintf(stderr, "-c <config file> -d -t <timeout> -f <logfile>\n");
> exit(-1);
> }
>
> @@ -110,8 +110,7 @@ int main(int argc, char **argv) {
> int timeout=0;
> GList *al;
> struct config_s *config=NULL;
> -
> - while((ch=getopt(argc, argv, "c:dt:")) != -1) {
> + while((ch=getopt(argc, argv, "c:dt:f:")) != -1) {
> switch(ch) {
> case 'c':
> config=readconfig(optarg);
> @@ -124,6 +123,9 @@ int main(int argc, char **argv) {
> case 't':
> timeout=strtol(optarg, NULL, 10);
> break;
> + case 'f':
> + preparelogfile(optarg);
> + break;
> default:
> usage();
> break;
> diff --git a/getstream.h b/getstream.h
> index 5aec52c..6226b10 100644
> --- a/getstream.h
> +++ b/getstream.h
> @@ -165,6 +165,7 @@ enum {
> */
>
> extern int loglevel;
> +//extern int uselogfile;
Debugging/First incarnation left over?
> #define MAX_MCAST_PAYLOAD (1500-40)
> #define TS_PACKET_SIZE 188
> diff --git a/logging.c b/logging.c
> index 3c62f16..91d3582 100644
> --- a/logging.c
> +++ b/logging.c
> @@ -3,11 +3,22 @@
> #include <stdlib.h>
> #include <sys/param.h>
> #include <time.h>
> -
> +#include <fcntl.h>
> #include "getstream.h"
>
> int loglevel=LOG_ERROR;
> -
> +int uselogfile=0;
static? And in the end one could check for lfd beeing non null.
> +FILE * lfd;
> +void preparelogfile(char *file) {
> + lfd=fopen(file,"a");
> + if(lfd==NULL)
> + {
> + logwrite(LOG_ERROR,"error opening log file '%s' for write",file);
> + uselogfile=0;
> + return;
> + }
> + uselogfile=1;
> +}
> void logwrite_inc_level() {
> loglevel++;
> }
> @@ -36,4 +47,11 @@ void logwrite(int level, const char *format, ...) {
> timedate,
> (int) tv.tv_usec/1000,
> logbuffer);
> + if(uselogfile==1) {
> + fprintf(lfd,"%s.%03d %s\n",
> + timedate,
> + (int) tv.tv_usec/1000,
> + logbuffer);
> + fflush(lfd);
> + }
> }
This is "strange" - you are sending the output to file _AND_ to the
screen? I would have expected -f to send it to the file only?
And i'd discourage use of files at all - in the end we are talking
about a real time process which needs to handle the TS Packets
with the least delay possible - file access on the other hand may
block forever when your machine is under heavy i/o load. And the fflush
makes it even worse. When doing this you'd better be using a seperate
thread for writing out the log and using something like g_async_push from
the packet forwarding thread to the log writer or better use syslog - it
was designed for logging ...
Flo
--
Florian Lohoff f at zz.de
"Es ist ein grobes Missverständnis und eine Fehlwahrnehmung, dem Staat
im Internet Zensur- und Überwachungsabsichten zu unterstellen."
- - Bundesminister Dr. Wolfgang Schäuble -- 10. Juli in Berlin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: Digital signature
URL: <http://gt.owl.de/pipermail/getstream/attachments/20100610/3cd2a0e0/attachment.pgp>
More information about the Getstream
mailing list