summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Potter <tpot@samba.org>2002-04-11 05:04:05 +0000
committerTim Potter <tpot@samba.org>2002-04-11 05:04:05 +0000
commitd0e6af62d6515d8eb35c297a79eb397d12096b01 (patch)
tree755d096e5a8f85554311ffcb9168055fbc4ed72e
parentab5b6e255dbc2dfe20a190634535ba05e1631011 (diff)
downloadsamba-d0e6af62d6515d8eb35c297a79eb397d12096b01.tar.gz
samba-d0e6af62d6515d8eb35c297a79eb397d12096b01.tar.bz2
samba-d0e6af62d6515d8eb35c297a79eb397d12096b01.zip
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 used to be commit 6c7b5e15c22119623ee959267d2755e21193bc4b)
-rw-r--r--source3/python/py_common.c63
-rw-r--r--source3/python/py_common.h4
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 */