I'm not sure how that python snippet was working for you. It seems kind of broken. Also, its not really doing a tee, because I believe the os.dup2 is actually closing the original __stdout__. So its really only writing to your new file, as you noticed. Also, it looks like he was trying to do a context manager with the __exit__ method, yet no __enter__ method and not using it in a "with" statement, so it basically does nothing right now.
It looks to me like sys.__stdout__ is assigned and used differently on a windows machine than on osx, because I don't get the same output flowing to that descriptor that you seem to, but if I had to suggest a version of that code, it might be this: http://pastebin.com/RLsAABRQ You just assign a file-like interface to __stdout__ with a write() method that writes to both your own file, and the original file descriptor. See if that works for you. On Mon, Mar 5, 2012 at 4:56 PM, Mark Serena <[email protected]> wrote: > I asked a programmer at work this morning, he doesn't use Python but he > did come up with this. > > > import sys, os > > class Tee: > > def __init__(self, filename): > > log = open(filename, "w") > > self.prevfd = os.dup(sys.__stdout__.fileno()) > > os.dup2(log.fileno(), sys.__stdout__.fileno()) > > self.prev = sys.__stdout__ > > sys.__stdout__ = os.fdopen(self.prevfd, "w") > > def __exit__(self): > > restore() > > def restore(): > > os.dup2(self.prevfd, self.prev.fileno()) > > sys.__stdout__ = self.prev > > > # begin redirect logging to file > > tee = Tee("c:\\log.txt") > > > So at the moment it does what I'm after but it completely redirects the > output window and now there isn't any output in the console, I don't know > python well enough at the moment to take it further. > > Is there a way to keep both? > > > Thanks guys, > > > > > > > On Tuesday, March 6, 2012 11:50:09 AM UTC+11, Justin Israel wrote: >> >> The code I suggested earlier will work for software renders, and, for >> anything that maya batch reports back to maya's script editor. Maya batch >> does write to a log file which you could tail, and get your output from >> there. I'm not sure where it lives on windows, but on OSX it lives in the >> user home directory here: ~/Library/Logs/Maya/**mayaRender.log >> >> Specifically on windows, if you have the output window showing this info, >> its being populated by the subprocess of Maya Batch. So, really the logfile >> is your best approach I think. >> >> >> >> On Mon, Mar 5, 2012 at 4:04 PM, Chad Dombrova <[email protected]> wrote: >> >>> if you're talking about the Output Window that comes with Maya on >>> Windows, then that is stdout and stderr, which are two special >>> files/streams that any application can write to. On linux or osx, when you >>> start an application you can pipe its output to a file or another >>> application. I don't know about windows, but i'm sure there is something >>> similar. >>> >>> Typically renderers will allow you to specify a file for render logs. >>> If it's MR, then there is probably some magic, undocumented environment >>> variable that does it. >>> >>> why is this forum so slow to update? I posted a topic on Friday and I >>>> don't see it till Tuesday morning >>> >>> >>> first time posters are moderated. your moderator did not check his >>> email over the weekend ;) if this was not your first time posting, perhaps >>> you used a different email address. >>> >>> >>>> and then i replied to this a few hours ago and it doesn't appear....is >>>> it just me? >>> >>> >>> don't know about the delay in the reply, but in case it helps clear >>> anything up, by default you won't receive your own responses by email. >>> >>> >>> -chad >>> >>> >>> >>> -- >>> view archives: >>> http://groups.google.com/**group/python_inside_maya<http://groups.google.com/group/python_inside_maya> >>> change your subscription settings: http://groups.google.com/** >>> group/python_inside_maya/**subscribe<http://groups.google.com/group/python_inside_maya/subscribe> >>> >> >> > On Tuesday, March 6, 2012 11:50:09 AM UTC+11, Justin Israel wrote: >> >> The code I suggested earlier will work for software renders, and, for >> anything that maya batch reports back to maya's script editor. Maya batch >> does write to a log file which you could tail, and get your output from >> there. I'm not sure where it lives on windows, but on OSX it lives in the >> user home directory here: ~/Library/Logs/Maya/**mayaRender.log >> >> Specifically on windows, if you have the output window showing this info, >> its being populated by the subprocess of Maya Batch. So, really the logfile >> is your best approach I think. >> >> >> >> On Mon, Mar 5, 2012 at 4:04 PM, Chad Dombrova <[email protected]> wrote: >> >>> if you're talking about the Output Window that comes with Maya on >>> Windows, then that is stdout and stderr, which are two special >>> files/streams that any application can write to. On linux or osx, when you >>> start an application you can pipe its output to a file or another >>> application. I don't know about windows, but i'm sure there is something >>> similar. >>> >>> Typically renderers will allow you to specify a file for render logs. >>> If it's MR, then there is probably some magic, undocumented environment >>> variable that does it. >>> >>> why is this forum so slow to update? I posted a topic on Friday and I >>>> don't see it till Tuesday morning >>> >>> >>> first time posters are moderated. your moderator did not check his >>> email over the weekend ;) if this was not your first time posting, perhaps >>> you used a different email address. >>> >>> >>>> and then i replied to this a few hours ago and it doesn't appear....is >>>> it just me? >>> >>> >>> don't know about the delay in the reply, but in case it helps clear >>> anything up, by default you won't receive your own responses by email. >>> >>> >>> -chad >>> >>> >>> >>> -- >>> view archives: >>> http://groups.google.com/**group/python_inside_maya<http://groups.google.com/group/python_inside_maya> >>> change your subscription settings: http://groups.google.com/** >>> group/python_inside_maya/**subscribe<http://groups.google.com/group/python_inside_maya/subscribe> >>> >> >> > On Tuesday, March 6, 2012 11:50:09 AM UTC+11, Justin Israel wrote: >> >> The code I suggested earlier will work for software renders, and, for >> anything that maya batch reports back to maya's script editor. Maya batch >> does write to a log file which you could tail, and get your output from >> there. I'm not sure where it lives on windows, but on OSX it lives in the >> user home directory here: ~/Library/Logs/Maya/**mayaRender.log >> >> Specifically on windows, if you have the output window showing this info, >> its being populated by the subprocess of Maya Batch. So, really the logfile >> is your best approach I think. >> >> >> >> On Mon, Mar 5, 2012 at 4:04 PM, Chad Dombrova <[email protected]> wrote: >> >>> if you're talking about the Output Window that comes with Maya on >>> Windows, then that is stdout and stderr, which are two special >>> files/streams that any application can write to. On linux or osx, when you >>> start an application you can pipe its output to a file or another >>> application. I don't know about windows, but i'm sure there is something >>> similar. >>> >>> Typically renderers will allow you to specify a file for render logs. >>> If it's MR, then there is probably some magic, undocumented environment >>> variable that does it. >>> >>> why is this forum so slow to update? I posted a topic on Friday and I >>>> don't see it till Tuesday morning >>> >>> >>> first time posters are moderated. your moderator did not check his >>> email over the weekend ;) if this was not your first time posting, perhaps >>> you used a different email address. >>> >>> >>>> and then i replied to this a few hours ago and it doesn't appear....is >>>> it just me? >>> >>> >>> don't know about the delay in the reply, but in case it helps clear >>> anything up, by default you won't receive your own responses by email. >>> >>> >>> -chad >>> >>> >>> >>> -- >>> view archives: >>> http://groups.google.com/**group/python_inside_maya<http://groups.google.com/group/python_inside_maya> >>> change your subscription settings: http://groups.google.com/** >>> group/python_inside_maya/**subscribe<http://groups.google.com/group/python_inside_maya/subscribe> >>> >> >> > On Tuesday, March 6, 2012 11:50:09 AM UTC+11, Justin Israel wrote: >> >> The code I suggested earlier will work for software renders, and, for >> anything that maya batch reports back to maya's script editor. Maya batch >> does write to a log file which you could tail, and get your output from >> there. I'm not sure where it lives on windows, but on OSX it lives in the >> user home directory here: ~/Library/Logs/Maya/**mayaRender.log >> >> Specifically on windows, if you have the output window showing this info, >> its being populated by the subprocess of Maya Batch. So, really the logfile >> is your best approach I think. >> >> >> >> On Mon, Mar 5, 2012 at 4:04 PM, Chad Dombrova <[email protected]> wrote: >> >>> if you're talking about the Output Window that comes with Maya on >>> Windows, then that is stdout and stderr, which are two special >>> files/streams that any application can write to. On linux or osx, when you >>> start an application you can pipe its output to a file or another >>> application. I don't know about windows, but i'm sure there is something >>> similar. >>> >>> Typically renderers will allow you to specify a file for render logs. >>> If it's MR, then there is probably some magic, undocumented environment >>> variable that does it. >>> >>> why is this forum so slow to update? I posted a topic on Friday and I >>>> don't see it till Tuesday morning >>> >>> >>> first time posters are moderated. your moderator did not check his >>> email over the weekend ;) if this was not your first time posting, perhaps >>> you used a different email address. >>> >>> >>>> and then i replied to this a few hours ago and it doesn't appear....is >>>> it just me? >>> >>> >>> don't know about the delay in the reply, but in case it helps clear >>> anything up, by default you won't receive your own responses by email. >>> >>> >>> -chad >>> >>> >>> >>> -- >>> view archives: >>> http://groups.google.com/**group/python_inside_maya<http://groups.google.com/group/python_inside_maya> >>> change your subscription settings: http://groups.google.com/** >>> group/python_inside_maya/**subscribe<http://groups.google.com/group/python_inside_maya/subscribe> >>> >> >> > On Tuesday, March 6, 2012 11:50:09 AM UTC+11, Justin Israel wrote: >> >> The code I suggested earlier will work for software renders, and, for >> anything that maya batch reports back to maya's script editor. Maya batch >> does write to a log file which you could tail, and get your output from >> there. I'm not sure where it lives on windows, but on OSX it lives in the >> user home directory here: ~/Library/Logs/Maya/**mayaRender.log >> >> Specifically on windows, if you have the output window showing this info, >> its being populated by the subprocess of Maya Batch. So, really the logfile >> is your best approach I think. >> >> >> >> On Mon, Mar 5, 2012 at 4:04 PM, Chad Dombrova <[email protected]> wrote: >> >>> if you're talking about the Output Window that comes with Maya on >>> Windows, then that is stdout and stderr, which are two special >>> files/streams that any application can write to. On linux or osx, when you >>> start an application you can pipe its output to a file or another >>> application. I don't know about windows, but i'm sure there is something >>> similar. >>> >>> Typically renderers will allow you to specify a file for render logs. >>> If it's MR, then there is probably some magic, undocumented environment >>> variable that does it. >>> >>> why is this forum so slow to update? I posted a topic on Friday and I >>>> don't see it till Tuesday morning >>> >>> >>> first time posters are moderated. your moderator did not check his >>> email over the weekend ;) if this was not your first time posting, perhaps >>> you used a different email address. >>> >>> >>>> and then i replied to this a few hours ago and it doesn't appear....is >>>> it just me? >>> >>> >>> don't know about the delay in the reply, but in case it helps clear >>> anything up, by default you won't receive your own responses by email. >>> >>> >>> -chad >>> >>> >>> >>> -- >>> view archives: >>> http://groups.google.com/**group/python_inside_maya<http://groups.google.com/group/python_inside_maya> >>> change your subscription settings: http://groups.google.com/** >>> group/python_inside_maya/**subscribe<http://groups.google.com/group/python_inside_maya/subscribe> >>> >> >> -- > view archives: http://groups.google.com/group/python_inside_maya > change your subscription settings: > http://groups.google.com/group/python_inside_maya/subscribe > -- view archives: http://groups.google.com/group/python_inside_maya change your subscription settings: http://groups.google.com/group/python_inside_maya/subscribe
