aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xradiodiodibot23
1 files changed, 21 insertions, 2 deletions
diff --git a/radiodiodibot b/radiodiodibot
index 0d067dd..ec6aa07 100755
--- a/radiodiodibot
+++ b/radiodiodibot
@@ -5,6 +5,7 @@ import logging
import signal
import sys
import threading
+import os
from project import botmanager
from project import uptimeservice
@@ -26,7 +27,6 @@ except ImportError:
def emit(self, record):
pass
-logging.getLogger(__name__).addHandler(NullHandler())
# Read configs, unsuccessful reads are
# silently ignored
@@ -41,6 +41,7 @@ parser.add_argument("-U", "--shoutbox-api-url", help="Shoutbox API URL")
parser.add_argument("-C", "--telegram-chat-id", help="Telegram Chat ID")
parser.add_argument("-v", "--verbose", help="Verbose output", action="store_true")
parser.add_argument("-i", "--interval", help="Delay between API update calls in seconds", type=int)
+parser.add_argument("-d", "--daemon", help="Start process as a daemon", action="store_true")
args = parser.parse_args()
# Show verbose output with the -v option
@@ -49,7 +50,25 @@ if args.verbose:
else:
logging_level = logging.WARNING
-logging.basicConfig(level=logging_level, format="%(asctime)s %(levelname)s %(message)s")
+# Start as a daemon if option is supplied
+if args.daemon:
+ logging.warning("Forking process...")
+ fpid = os.fork()
+ if fpid != 0:
+ logging.warning("Started as daemon.")
+ sys.exit(0)
+
+formatter = logging.Formatter("%(asctime)s %(levelname)s %(message)s")
+logging.getLogger().addHandler(NullHandler())
+fileLogger = logging.FileHandler("output.log")
+fileLogger.setFormatter(formatter)
+
+consoleLogger = logging.StreamHandler()
+consoleLogger.setFormatter(formatter)
+
+logging.getLogger().addHandler(fileLogger)
+logging.getLogger().addHandler(consoleLogger)
+logging.getLogger().setLevel(logging_level)
# Try to import telepot
# If not installed, inform user and fail gracefully