I have created a basic logger script as below:
import logging
import json
import datetime
import os
from logging.handlers import TimedRotatingFileHandler
def _create_logger():
if not os.path.exists('C:\\Users\\jimjakik\\Downloads\\DemoService'):
os.makedirs('C:\\Users\\jimjakik\\Downloads\\DemoService')
fh = TimedRotatingFileHandler(
filename=f"C:\\Users\\jimjakik\\Downloads\\DemoService\\log{datetime.datetime.now().strftime('%Y%m%d%H%M%S')}.txt",
when="s",
interval=5,
backupCount=0,
#atTime=datetime.time(0, 0)
)
formatter = logging.Formatter(json.dumps(LOGGING_FORMAT))
fh.setFormatter(formatter)
logger = logging.getLogger('')
logger.setLevel(logging.INFO)
logger.addHandler(fh)
return logger
LOGGING_FORMAT = {
"timestamp": "%(asctime)s",
"name": "%(name)s",
"level": "%(levelname)s",
"message": "%(message)s"
}
logger = _create_logger()
Which I'm calling in service.py as below:
import win32serviceutil
import win32service
import win32event
import fileio
import sys
class Service(win32serviceutil.ServiceFramework):
_svc_name_ = "DemoService"
_svc_display_name_ = "Python Demo Service"
def __init__(self, args):
win32serviceutil.ServiceFramework.__init__(self, args)
self.event = win32event.CreateEvent(None, 0, 0, None)
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
win32event.SetEvent(self.event)
def SvcDoRun(self):
import servicemanager
servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
servicemanager.PYS_SERVICE_STARTED,
(self._svc_name_, ''))
while True:
self.main()
if win32event.WaitForSingleObject(self.event, 5000) == win32event.WAIT_OBJECT_0:
break
def main(self):
fileio.logger.info('Running')
def install():
win32serviceutil.HandleCommandLine(Service)
My setup.py file is as below: from setuptools import setup, find_packages
setup(
name='DemoService',
version='1.0',
description='Python Demo Service',
author='jimjakik',
install_requires=[
'pywin32',
],
packages=find_packages(),
entry_points={
'console_scripts': [
'run_service = service.service:install',
],
},
classifiers=[
'Operating System :: Microsoft :: Windows',
'Programming Language :: Python :: 3',
],
)
I'm able to install setup.py using setuptools, but when I run it, I get below error: Error starting service: The service did not respond to the start or control request in a timely fashion.
Is there an issue in the scripts?