On 22/02/2021 06:57, gayatri funde wrote:
On Monday, February 22, 2021 at 11:15:27 AM UTC+5:30, Chris Angelico wrote:
On Mon, Feb 22, 2021 at 4:41 PM gayatri funde <fundeg...@gmail.com> wrote:

On Monday, February 22, 2021 at 10:47:57 AM UTC+5:30, Dan Stromberg wrote:
On Sun, Feb 21, 2021 at 9:10 PM gayatri funde <fundeg...@gmail.com>
wrote:
Hello,

Greetings!! Have a good day!

This is regarding logging issue i am facing in my application. My
requirement is to create log on daily basis while my application is
running, So to do this i am creating new log file at midnight by comparing
the day it starts and enter to new day with the while loop continuously
checking on date.

In my application i have 2 processes, So what my observation is on the day
of start of application both process are able to log into the file, but as
new day starts new file getting created and only main process log are
getting written into new file, and other process is still writing to old
day log.

So could you please help me to understand this issue and it will be great
to know solution if you can help me with this.

Is it possible each process has open a different "file" on the same
pathname, with only one actually being visible in the filesystem?

Linuxes and Unixes allow such things. I am unaware of Windows being
powerful enough to do so, and besides there you'd probably use the Event
Log anyway.

If that's the case, I do not know of a Python logging-module way of
correcting the problem, but you could introduce a third process that is
used just for logging, and have the original two send their log messages to
the new 3rd logging process.


Just to clarify, file names are different as i am appending date to each file 
name. On new day start main process is writing to new day file and another 
process is still writing to old date file. This i am trying on Linux system.

Thanks for suggestion of creating one dedicated process for logging. But if you 
can help to find any is other reason why second process not able to find the 
new day file handler object.
Thank you for your reply.

You'll need to show your code. Most likely, though, BOTH processes
need to independently update to the new file.

ChrisA


I have 2 files mainModule.py and loggingModule.py files as below:
In loggingModule.py file i am managing new log to create , which i am importing 
to mainModule.py file.

loggingModule.py

[...]

def daily_log():
     global firstTime

     try:
         now = datetime.datetime.now()
         log_day = now.day
         initialize_logger("Log_start.log")
         while True:

Unless there is an exception you are forever stuck in this loop...

             currentDate = datetime.datetime.now().day
             time.sleep(60)

             if currentDate != log_day:  # New day started
                 initialize_logger("Log_continue.log")

     except Exception as ex:
         exc_type, exc_obj, tb = sys.exc_info()
         template = "An exception of type {0} occurred at {1}. 
Arguments:\n{2!r}"
         message = template.format(type(ex).__name__, tb.tb_lineno, ex.args)
         logging.error(message)


daily_log()


mainModule.py

import Logic_Check
import logging
import multiprocessing
from loggingModule import *

... and as the import implicitly invokes daily_log() you won't get here, i. e. the code below is not executed.

def child_Process(var1):
     while True:
         time.sleep(10)
         logging.info('Log from Child Process')

if __name__ == "__main__":
     var1 = "LotsOfSunshine"
     time.sleep(1)
     logging.info("Log from Main process")

     child_Multiprocess = multiprocessing.Process(target=child_Process, 
args=(var1,))
     child_Multiprocess.start()



--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to