1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-20 14:03:59 +03:00

Implemented a setup_logging() function that takes two keywords:

interactive and logfilename.  These can be used to send Samba DEBUG()
output to stdout or to a logfile which makes automated testing much
funkier.

Also added get_debuglevel() and set_debuglevel() functions.
This commit is contained in:
Tim Potter -
parent 8bb798ab3d
commit 6c7b5e15c2
2 changed files with 62 additions and 5 deletions

View File

@ -46,10 +46,6 @@ void py_samba_init(void)
if (initialised)
return;
/* FIXME: logging doesn't work very well */
setup_logging("python", True);
/* Load configuration file */
if (!lp_load(dyn_CONFIGFILE, True, False, False))
@ -58,7 +54,64 @@ void py_samba_init(void)
/* Misc other stuff */
load_interfaces();
DEBUGLEVEL = 10;
initialised = True;
}
/* Debuglevel routines */
PyObject *get_debuglevel(PyObject *self, PyObject *args)
{
PyObject *debuglevel;
if (!PyArg_ParseTuple(args, ""))
return NULL;
debuglevel = PyInt_FromLong(DEBUGLEVEL);
return debuglevel;
}
PyObject *set_debuglevel(PyObject *self, PyObject *args)
{
int debuglevel;
if (!PyArg_ParseTuple(args, "i", &debuglevel))
return NULL;
DEBUGLEVEL = debuglevel;
Py_INCREF(Py_None);
return Py_None;
}
/* Initialise logging */
PyObject *py_setup_logging(PyObject *self, PyObject *args, PyObject *kw)
{
BOOL interactive = False;
char *logfilename = NULL;
static char *kwlist[] = {"interactive", "logfilename", NULL};
if (!PyArg_ParseTupleAndKeywords(args, kw, "|is", kwlist,
&interactive, &logfilename))
return NULL;
if (interactive && logfilename) {
PyErr_SetString(PyExc_RuntimeError,
"can't be interactive and set log file name");
return NULL;
}
if (interactive)
setup_logging("spoolss", True);
if (logfilename) {
lp_set_logfile(logfilename);
setup_logging(logfilename, False);
reopen_logs();
}
Py_INCREF(Py_None);
return Py_None;
}

View File

@ -27,4 +27,8 @@ void py_samba_init(void);
PyObject *py_werror_tuple(WERROR werror);
PyObject *py_ntstatus_tuple(NTSTATUS ntstatus);
PyObject *py_setup_logging(PyObject *self, PyObject *args);
PyObject *get_debuglevel(PyObject *self, PyObject *args);
PyObject *set_debuglevel(PyObject *self, PyObject *args);
#endif /* _PY_COMMON_H */