diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/python/py_common.c | 63 | ||||
-rw-r--r-- | source3/python/py_common.h | 4 |
2 files changed, 62 insertions, 5 deletions
diff --git a/source3/python/py_common.c b/source3/python/py_common.c index 5c2e0f896c..bc3153c26c 100644 --- a/source3/python/py_common.c +++ b/source3/python/py_common.c @@ -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; +} diff --git a/source3/python/py_common.h b/source3/python/py_common.h index 30a47eba25..4a5c92ca8c 100644 --- a/source3/python/py_common.h +++ b/source3/python/py_common.h @@ -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 */ |