mirror of
https://github.com/samba-team/samba.git
synced 2025-02-28 01:58:17 +03:00
debug: Set backends from logging parameter in smb.conf
Fallback to the settings of 'syslog' and 'syslog only' if logging has not been set. Signed-off-by: Christof Schmitt <cs@samba.org> Reviewed-by: Amitay Isaacs <amitay@gmail.com>
This commit is contained in:
parent
5a3eddc7b9
commit
8a46da3280
@ -2875,15 +2875,15 @@ static bool lpcfg_update(struct loadparm_context *lp_ctx)
|
||||
ZERO_STRUCT(settings);
|
||||
/* Add any more debug-related smb.conf parameters created in
|
||||
* future here */
|
||||
settings.syslog = lp_ctx->globals->syslog;
|
||||
settings.syslog_only = lp_ctx->globals->syslog_only;
|
||||
settings.timestamp_logs = lp_ctx->globals->timestamp_logs;
|
||||
settings.debug_prefix_timestamp = lp_ctx->globals->debug_prefix_timestamp;
|
||||
settings.debug_hires_timestamp = lp_ctx->globals->debug_hires_timestamp;
|
||||
settings.debug_pid = lp_ctx->globals->debug_pid;
|
||||
settings.debug_uid = lp_ctx->globals->debug_uid;
|
||||
settings.debug_class = lp_ctx->globals->debug_class;
|
||||
debug_set_settings(&settings);
|
||||
debug_set_settings(&settings, lp_ctx->globals->logging,
|
||||
lp_ctx->globals->syslog,
|
||||
lp_ctx->globals->syslog_only);
|
||||
|
||||
/* FIXME: This is a bit of a hack, but we can't use a global, since
|
||||
* not everything that uses lp also uses the socket library */
|
||||
|
@ -684,12 +684,40 @@ static void debug_init(void)
|
||||
}
|
||||
}
|
||||
|
||||
/* This forces in some smb.conf derived values into the debug system.
|
||||
* There are no pointers in this structure, so we can just
|
||||
* structure-assign it in */
|
||||
void debug_set_settings(struct debug_settings *settings)
|
||||
void debug_set_settings(struct debug_settings *settings,
|
||||
const char *logging_param,
|
||||
int syslog_level, bool syslog_only)
|
||||
{
|
||||
char fake_param[20];
|
||||
|
||||
/*
|
||||
* This forces in some smb.conf derived values into the debug
|
||||
* system. There are no pointers in this structure, so we can
|
||||
* just structure-assign it in
|
||||
*/
|
||||
state.settings = *settings;
|
||||
|
||||
state.settings.syslog = syslog_level;
|
||||
state.settings.syslog_only = syslog_only;
|
||||
|
||||
/*
|
||||
* If 'logging' is not set, create backend settings from
|
||||
* deprecated 'syslog' and 'syslog only' paramters
|
||||
*/
|
||||
if (!logging_param) {
|
||||
if (syslog_only) {
|
||||
snprintf(fake_param, sizeof(fake_param),
|
||||
"syslog:%d", syslog_level - 1);
|
||||
} else {
|
||||
snprintf(fake_param, sizeof(fake_param),
|
||||
"syslog:%d file:%d", syslog_level -1,
|
||||
MAX_DEBUG_LEVEL);
|
||||
}
|
||||
|
||||
logging_param = fake_param;
|
||||
}
|
||||
|
||||
debug_set_backends(logging_param);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -718,12 +746,6 @@ void setup_logging(const char *prog_name, enum debug_logtype new_logtype)
|
||||
state.prog_name = prog_name;
|
||||
}
|
||||
reopen_logs_internal();
|
||||
|
||||
#ifdef WITH_SYSLOG
|
||||
if (state.logtype == DEBUG_FILE) {
|
||||
debug_syslog_reload(true, false, state.prog_name);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
|
@ -241,7 +241,9 @@ int debug_add_class(const char *classname);
|
||||
bool debug_parse_levels(const char *params_str);
|
||||
void debug_setup_talloc_log(void);
|
||||
void debug_set_logfile(const char *name);
|
||||
void debug_set_settings(struct debug_settings *settings);
|
||||
void debug_set_settings(struct debug_settings *settings,
|
||||
const char *logging_param,
|
||||
int syslog_level, bool syslog_only);
|
||||
bool reopen_logs_internal( void );
|
||||
void force_check_log_size( void );
|
||||
bool need_to_check_log_size( void );
|
||||
|
@ -34,15 +34,14 @@ bool reopen_logs(void)
|
||||
|
||||
ZERO_STRUCT(settings);
|
||||
settings.max_log_size = lp_max_log_size();
|
||||
settings.syslog = lp_syslog();
|
||||
settings.syslog_only = lp_syslog_only();
|
||||
settings.timestamp_logs = lp_timestamp_logs();
|
||||
settings.debug_prefix_timestamp = lp_debug_prefix_timestamp();
|
||||
settings.debug_hires_timestamp = lp_debug_hires_timestamp();
|
||||
settings.debug_pid = lp_debug_pid();
|
||||
settings.debug_uid = lp_debug_uid();
|
||||
settings.debug_class = lp_debug_class();
|
||||
debug_set_settings(&settings);
|
||||
debug_set_settings(&settings, lp_logging(talloc_tos()),
|
||||
lp_syslog(), lp_syslog_only());
|
||||
}
|
||||
return reopen_logs_internal();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user