ITS#6949 honor specified loglevel, not just debuglevel

But skip calls to syslog() if logfile_only is set.
This commit is contained in:
Howard Chu 2021-09-20 18:09:22 +01:00 committed by Quanah Gibson-Mount
parent 42fc772c23
commit 77adb19207
4 changed files with 36 additions and 6 deletions

View file

@ -202,6 +202,7 @@ enum {
CFG_TLS_CERT, CFG_TLS_CERT,
CFG_TLS_KEY, CFG_TLS_KEY,
CFG_LOGFILE_ROTATE, CFG_LOGFILE_ROTATE,
CFG_LOGFILE_ONLY,
CFG_LAST CFG_LAST
}; };
@ -485,8 +486,8 @@ static ConfigTable config_back_cf_table[] = {
&config_generic, "( OLcfgGlAt:27 NAME 'olcLogFile' " &config_generic, "( OLcfgGlAt:27 NAME 'olcLogFile' "
"EQUALITY caseExactMatch " "EQUALITY caseExactMatch "
"SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL }, "SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
{ "logfile-only", "on|off", 2, 2, 0, ARG_ON_OFF, { "logfile-only", "on|off", 2, 2, 0, ARG_ON_OFF|ARG_MAGIC|CFG_LOGFILE_ONLY,
&logfile_only, "( OLcfgGlAt:102 NAME 'olcLogFileOnly' " &config_generic, "( OLcfgGlAt:102 NAME 'olcLogFileOnly' "
"EQUALITY booleanMatch " "EQUALITY booleanMatch "
"SYNTAX OMsBoolean SINGLE-VALUE )", NULL, NULL }, "SYNTAX OMsBoolean SINGLE-VALUE )", NULL, NULL },
{ "logfile-rotate", "max> <Mbyte> <hours", 4, 4, 0, ARG_MAGIC|CFG_LOGFILE_ROTATE, { "logfile-rotate", "max> <Mbyte> <hours", 4, 4, 0, ARG_MAGIC|CFG_LOGFILE_ROTATE,
@ -1088,6 +1089,8 @@ static ADlist *sortVals;
static int new_daemon_threads; static int new_daemon_threads;
static int config_syslog;
static int static int
config_resize_lthreads(ConfigArgs *c) config_resize_lthreads(ConfigArgs *c)
{ {
@ -1388,6 +1391,9 @@ config_generic(ConfigArgs *c) {
rc = 1; rc = 1;
} }
break; break;
case CFG_LOGFILE_ONLY:
c->value_int = logfile_only;
break;
case CFG_LOGFILE_ROTATE: case CFG_LOGFILE_ROTATE:
rc = 1; rc = 1;
if ( logfile_max ) { if ( logfile_max ) {
@ -1636,6 +1642,12 @@ config_generic(ConfigArgs *c) {
logfile_close(); logfile_close();
break; break;
case CFG_LOGFILE_ONLY:
/* remove loglevel from debuglevel */
slap_debug = slap_debug_orig;
ldap_syslog = config_syslog;
break;
case CFG_LOGFILE_ROTATE: case CFG_LOGFILE_ROTATE:
logfile_max = logfile_fslimit = logfile_age = 0; logfile_max = logfile_fslimit = logfile_age = 0;
break; break;
@ -2420,6 +2432,16 @@ sortval_reject:
} }
break; break;
case CFG_LOGFILE_ONLY:
slap_debug = slap_debug_orig;
if ( c->value_int ) {
slap_debug |= config_syslog;
ldap_syslog = 0;
} else {
ldap_syslog = config_syslog;
}
break;
case CFG_LOGFILE_ROTATE: { case CFG_LOGFILE_ROTATE: {
unsigned lf_max, lf_mbyte, lf_hour; unsigned lf_max, lf_mbyte, lf_hour;
if ( lutil_atoux( &lf_max, c->argv[1], 0 ) != 0 ) { if ( lutil_atoux( &lf_max, c->argv[1], 0 ) != 0 ) {
@ -3965,8 +3987,6 @@ loglevel_print( FILE *out )
return 0; return 0;
} }
static int config_syslog;
static int static int
config_loglevel(ConfigArgs *c) { config_loglevel(ConfigArgs *c) {
int i; int i;
@ -3989,6 +4009,8 @@ config_loglevel(ConfigArgs *c) {
config_syslog &= ~loglevel_ops[i].mask; config_syslog &= ~loglevel_ops[i].mask;
} }
if ( slapMode & SLAP_SERVER_MODE ) { if ( slapMode & SLAP_SERVER_MODE ) {
slap_debug = slap_debug_orig;
if ( !logfile_only )
ldap_syslog = config_syslog; ldap_syslog = config_syslog;
} }
return 0; return 0;
@ -4019,8 +4041,13 @@ config_loglevel(ConfigArgs *c) {
config_syslog = 0; config_syslog = 0;
} }
if ( slapMode & SLAP_SERVER_MODE ) { if ( slapMode & SLAP_SERVER_MODE ) {
if ( logfile_only ) {
slap_debug = slap_debug_orig | config_syslog;
ldap_syslog = 0;
} else {
ldap_syslog = config_syslog; ldap_syslog = config_syslog;
} }
}
return(0); return(0);
} }

View file

@ -34,6 +34,7 @@ static char logfile_suffix[sizeof(".xx.gz")];
char logfile_path[MAXPATHLEN - sizeof(logfile_suffix) -1]; char logfile_path[MAXPATHLEN - sizeof(logfile_suffix) -1];
long logfile_fslimit; long logfile_fslimit;
int logfile_age, logfile_only, logfile_max; int logfile_age, logfile_only, logfile_max;
int slap_debug_orig;
ldap_pvt_thread_mutex_t logfile_mutex; ldap_pvt_thread_mutex_t logfile_mutex;

View file

@ -723,6 +723,7 @@ unhandled_option:;
ber_set_option(NULL, LBER_OPT_DEBUG_LEVEL, &slap_debug); ber_set_option(NULL, LBER_OPT_DEBUG_LEVEL, &slap_debug);
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &slap_debug); ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &slap_debug);
ldif_debug = slap_debug; ldif_debug = slap_debug;
slap_debug_orig = slap_debug;
if ( version ) { if ( version ) {
fprintf( stderr, "%s\n", Versionstr ); fprintf( stderr, "%s\n", Versionstr );

View file

@ -1253,6 +1253,7 @@ LDAP_SLAPD_V(int) logfile_age;
LDAP_SLAPD_V(int) logfile_only; LDAP_SLAPD_V(int) logfile_only;
LDAP_SLAPD_V(int) logfile_max; LDAP_SLAPD_V(int) logfile_max;
LDAP_SLAPD_V(long) logfile_fslimit; LDAP_SLAPD_V(long) logfile_fslimit;
LDAP_SLAPD_V(int) slap_debug_orig;
/* /*
* main.c * main.c