I have had a hard time understanding all the documentation on the logger module and forking processes.
My goal is to have each child process that's worked to write to their own separate log file.
This seems to work but I just want to try and verify that this is the correct way.
import os
import logging
def generate_primes(number):
logger = logging.getLogger(str(os.getpid()) + ':logger')
for num in range(number + 1):
# prime numbers are greater than 1
if num > 1:
for i in range(2,num):
if (num % i) == 0:
break
else:
logger.info('child:' + str(os.getpid()) + ':' + str(num))
def start_workers():
logger = logging.getLogger('parent:prime')
logger.info('parent forking')
for child in range(10):
pid = os.fork()
if not pid:
logger = logging.getLogger('child:' + str(os.getpid()))
fh = logging.FileHandler('logs/child_primes_' + str(os.getpid()) + '.log')
logger.addHandler(fh)
generate_primes(10000)
os._exit(0)
else:
os.waitpid(pid, 0)
if __name__ == "__main__":
logging.basicConfig(filename='logs/parent_primes.log', level=logging.INFO)
logger = logging.getLogger('parent:prime')
logger.info('Fork parent/child logging example.')
logger.info('Starting children')
start_workers()