|
17 | 17 |
|
18 | 18 | """Command-line script that runs a server over roundup.cgi.client. |
19 | 19 |
|
20 | | -$Id: roundup_server.py,v 1.74.2.1 2004-12-22 06:38:08 a1s Exp $ |
| 20 | +$Id: roundup_server.py,v 1.74.2.2 2005-01-15 06:53:00 richard Exp $ |
21 | 21 | """ |
22 | 22 | __docformat__ = 'restructuredtext' |
23 | 23 |
|
@@ -392,13 +392,13 @@ def trackers(self): |
392 | 392 | self["TRACKERS_" + option.upper()]))) |
393 | 393 | return trackers |
394 | 394 |
|
| 395 | + def set_logging(self): |
| 396 | + """Initialise logging to the configured file, if any.""" |
| 397 | + # appending, unbuffered |
| 398 | + sys.stdout = sys.stderr = open(self["LOGFILE"], 'a', 0) |
| 399 | + |
395 | 400 | def get_server(self): |
396 | 401 | """Return HTTP server object to run""" |
397 | | - # redirect stdout/stderr to our logfile |
398 | | - # this is done early to have following messages go to this logfile |
399 | | - if self["LOGFILE"]: |
400 | | - # appending, unbuffered |
401 | | - sys.stdout = sys.stderr = open(self["LOGFILE"], 'a', 0) |
402 | 402 | # we don't want the cgi module interpreting the command-line args ;) |
403 | 403 | sys.argv = sys.argv[:1] |
404 | 404 | # preload all trackers unless we are in "debug" mode |
@@ -478,6 +478,7 @@ def SvcDoRun(self): |
478 | 478 | (self._svc_display_name_, "\r\nMissing logfile option")) |
479 | 479 | self.ReportServiceStatus(win32service.SERVICE_STOPPED) |
480 | 480 | return |
| 481 | + config.set_logging() |
481 | 482 | self.server = config.get_server() |
482 | 483 | self.running = 1 |
483 | 484 | self.ReportServiceStatus(win32service.SERVICE_RUNNING) |
@@ -605,7 +606,7 @@ def daemonize(pidfile): |
605 | 606 | os.chdir("/") |
606 | 607 | os.umask(0) |
607 | 608 |
|
608 | | - # close off sys.std(in|out|err), redirect to devnull so the file |
| 609 | + # close off std(in|out|err), redirect to devnull so the file |
609 | 610 | # descriptors can't be used again |
610 | 611 | devnull = os.open('/dev/null', 0) |
611 | 612 | os.dup2(devnull, 0) |
@@ -689,6 +690,13 @@ def run(port=undefined, success_message=None): |
689 | 690 | if port is not undefined: |
690 | 691 | config.PORT = port |
691 | 692 |
|
| 693 | + if config["LOGFILE"]: |
| 694 | + config["LOGFILE"] = os.path.abspath(config["LOGFILE"]) |
| 695 | + # switch logging from stderr/stdout to logfile |
| 696 | + config.set_logging() |
| 697 | + if config["PIDFILE"]: |
| 698 | + config["PIDFILE"] = os.path.abspath(config["PIDFILE"]) |
| 699 | + |
692 | 700 | # fork the server from our parent if a pidfile is specified |
693 | 701 | if config["PIDFILE"]: |
694 | 702 | if not hasattr(os, 'fork'): |
|
0 commit comments