[IMP]: allow Log level to be changed in runtime.
Export an RPC method and let a simple client change the log level. This helps when we want to debug the server without restarting it. bzr revid: p_christ@hol.gr-20090814101822-pu2ed3249b6m30v8
This commit is contained in:
parent
75e9560f9c
commit
00d15e79fe
|
@ -193,6 +193,12 @@ class Logger(object):
|
||||||
# better ignore the exception and carry on..
|
# better ignore the exception and carry on..
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def set_loglevel(self, level):
|
||||||
|
log = logging.getLogger()
|
||||||
|
log.setLevel(logging.INFO) # make sure next msg is printed
|
||||||
|
log.info("Log level changed to %s" % logging.getLevelName(level))
|
||||||
|
log.setLevel(level)
|
||||||
|
|
||||||
def shutdown(self):
|
def shutdown(self):
|
||||||
logging.shutdown()
|
logging.shutdown()
|
||||||
|
|
||||||
|
|
|
@ -375,6 +375,7 @@ class common(netsvc.Service):
|
||||||
self.exportMethod(self.get_migration_scripts)
|
self.exportMethod(self.get_migration_scripts)
|
||||||
self.exportMethod(self.get_server_environment)
|
self.exportMethod(self.get_server_environment)
|
||||||
self.exportMethod(self.login_message)
|
self.exportMethod(self.login_message)
|
||||||
|
self.exportMethod(self.set_loglevel)
|
||||||
|
|
||||||
def ir_set(self, db, uid, password, keys, args, name, value, replace=True, isobject=False):
|
def ir_set(self, db, uid, password, keys, args, name, value, replace=True, isobject=False):
|
||||||
security.check(db, uid, password)
|
security.check(db, uid, password)
|
||||||
|
@ -561,6 +562,12 @@ GNU Public Licence.
|
||||||
def login_message(self):
|
def login_message(self):
|
||||||
return tools.config.get('login_message', False)
|
return tools.config.get('login_message', False)
|
||||||
|
|
||||||
|
def set_loglevel(self, password, loglevel):
|
||||||
|
security.check_super(password)
|
||||||
|
l = netsvc.Logger()
|
||||||
|
l.set_loglevel(int(loglevel))
|
||||||
|
return True
|
||||||
|
|
||||||
common()
|
common()
|
||||||
|
|
||||||
class objects_proxy(netsvc.Service):
|
class objects_proxy(netsvc.Service):
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
ADMIN_PASSWD='admin'
|
||||||
|
method_1() {
|
||||||
|
cat '-' << EOF
|
||||||
|
<xml>
|
||||||
|
<methodCall>
|
||||||
|
<methodName>set_loglevel</methodName>
|
||||||
|
<params>
|
||||||
|
<param><value><string>$ADMIN_PASSWD</string></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<value><string>$1</string></value>
|
||||||
|
</param>
|
||||||
|
</params>
|
||||||
|
</methodCall>
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
LEVEL=10
|
||||||
|
|
||||||
|
if [ -n "$1" ] ; then LEVEL=$1 ; fi
|
||||||
|
|
||||||
|
method_1 $LEVEL | POST -c 'text/xml' http://localhost:8069/xmlrpc/common
|
||||||
|
#eof
|
Loading…
Reference in New Issue