Support for log truncation.
This commit is contained in:
parent
57debc0493
commit
bff6193572
|
@ -471,6 +471,10 @@ void _conf_apply_element(char *section, char *key, char *cold, char *cnew) {
|
||||||
/* loglevel changed */
|
/* loglevel changed */
|
||||||
err_setlevel(atoi(cnew));
|
err_setlevel(atoi(cnew));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if((strcmp(section,"general")==0) && (strcmp(key,"truncate")==0)) {
|
||||||
|
err_settruncate(atoi(cnew));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -521,6 +525,8 @@ void _conf_apply(LL_HANDLE pll) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* special check for config file */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
29
src/err.c
29
src/err.c
|
@ -57,6 +57,7 @@ static char err_filename[PATH_MAX + 1];
|
||||||
static FILE *err_file=NULL; /**< if logging to file, the handle of that file */
|
static FILE *err_file=NULL; /**< if logging to file, the handle of that file */
|
||||||
static pthread_mutex_t err_mutex=PTHREAD_MUTEX_INITIALIZER; /**< for serializing log messages */
|
static pthread_mutex_t err_mutex=PTHREAD_MUTEX_INITIALIZER; /**< for serializing log messages */
|
||||||
static unsigned int err_debugmask=0xFFFFFFFF; /**< modules to debug, see \ref log_categories */
|
static unsigned int err_debugmask=0xFFFFFFFF; /**< modules to debug, see \ref log_categories */
|
||||||
|
static int err_truncate = 0;
|
||||||
|
|
||||||
/** text list of modules to match for setting debug mask */
|
/** text list of modules to match for setting debug mask */
|
||||||
static char *err_categorylist[] = {
|
static char *err_categorylist[] = {
|
||||||
|
@ -205,20 +206,42 @@ int err_getdest(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int err_setlogfile(char *file) {
|
int err_settruncate(int truncate) {
|
||||||
if(strcmp(file,err_filename) == 0)
|
char *file;
|
||||||
|
|
||||||
|
if(err_truncate == truncate)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
err_truncate = truncate;
|
||||||
|
if((err_truncate) && (err_filename)) {
|
||||||
|
file=strdup(err_filename);
|
||||||
|
err_setlogfile(err_filename);
|
||||||
|
if(file) free(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
int err_setlogfile(char *file) {
|
||||||
|
char *mode;
|
||||||
|
|
||||||
|
/*
|
||||||
|
if(strcmp(file,err_filename) == 0)
|
||||||
|
return TRUE;
|
||||||
|
*/
|
||||||
_err_lock();
|
_err_lock();
|
||||||
|
|
||||||
if(err_file) {
|
if(err_file) {
|
||||||
fclose(err_file);
|
fclose(err_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mode = "a";
|
||||||
|
if(err_truncate) mode = "w";
|
||||||
|
|
||||||
memset(err_filename,0,sizeof(err_filename));
|
memset(err_filename,0,sizeof(err_filename));
|
||||||
strncpy(err_filename,file,sizeof(err_filename)-1);
|
strncpy(err_filename,file,sizeof(err_filename)-1);
|
||||||
|
|
||||||
err_file = fopen(err_filename,"a");
|
err_file = fopen(err_filename,mode);
|
||||||
if(err_file == NULL) {
|
if(err_file == NULL) {
|
||||||
err_logdest &= ~LOGDEST_LOGFILE;
|
err_logdest &= ~LOGDEST_LOGFILE;
|
||||||
|
|
||||||
|
|
|
@ -72,6 +72,7 @@ extern void err_setlevel(int level);
|
||||||
extern int err_getlevel(void);
|
extern int err_getlevel(void);
|
||||||
extern int err_setdebugmask(char *list);
|
extern int err_setdebugmask(char *list);
|
||||||
extern int err_setlogfile(char *file);
|
extern int err_setlogfile(char *file);
|
||||||
|
extern int err_setruncate(char *truncate);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Print a debugging or log message
|
* Print a debugging or log message
|
||||||
|
|
Loading…
Reference in New Issue