On Monday, February 22, 2021 at 4:14:53 PM UTC+5:30, Peter Otten wrote:
> 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() 
> >

daily_log() call is necessary in loggingModule.py because if we import 
loggingModule.py module into mainModule.py, Import won't execute daily_log() 
function by itself, either I make explicit call of daily_log() in mainModule.py 
or loggingModule.py

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

Reply via email to