On May 19, 4:05 pm, "Kam-Hung Soh" <[EMAIL PROTECTED]> wrote: > On Tue, 20 May 2008 06:58:28 +1000, <[EMAIL PROTECTED]> wrote: > > On May 16, 6:37 pm, Ben Finney <[EMAIL PROTECTED]> > > wrote: > >> [EMAIL PROTECTED] writes: > >> > I've recently jumped big time into python and I'm working on a > >> > software program for testing automation. > > >> Welcome, to both fields :-) > > > Thanks! I am having a great time learning and coding in python. It's > > an amazing programming language. > > >> > I had a question about proper logging of output. What I would like > >> > is: > > >> > 1. a function syslog (to log output to log file only) > >> > 2. a function stdout (to log output to stdout only) > >> > 3. a function sslog (to log output to both log and stdout) > > >> > Right now I am using StandOut module > > >> Have you investigated the 'logging' module in the Python standard > >> library <URL:http://www.python.org/doc/lib/module-logging>? It appears > >> to meet your listed requirements, without need of external > >> dependencies. > > > Hmm..Yeah I didn't realize python had its own standard logging > > facility. I took a look at it and it seems to do the job. However, the > > output seems to be syslog style output. In the program I am writing, > > the log file stores all the output of the commands being run (e.g. tcl > > scripts, etc). Will this be possible using the built in python logging > > module? > > > Thanks, > > Amit > > -- > >http://mail.python.org/mailman/listinfo/python-list > > You can define the format of the log output in basicConfig(), for example: > > from logging import basicConfig, error, info, INFO > ... > basicConfig( > datefmt='%Y%m%d_T%H%M%S', > filemode='a', > filename=LOG_PATH, > format='%(asctime)s,%(levelname)s,%(message)s', > level=INFO > ) > > If you want to log the output of other commands in your log file, you can > connect a pipe to that command. Maybe look at "subprocess -- Subprocess > management" inhttp://docs.python.org/lib/module-subprocess.html > > -- > Kam-Hung Soh <a href="http://kamhungsoh.com/blog">Software Salariman</a>
Thanks for the reply. Yeah I am using the subprocess module and I am able to capture the output and save it to log a file. However, looking at module-logging the output format is like syslog. What I want is my own custom log file format. I wrote a separate module containing all the functions for the logging but I can't seem to use it globally. How does one use global variables in python? Code: # log.py - A base class that provides logging functionality. # # Copyright 2008 Amit Uttamchandani <[EMAIL PROTECTED]> # import os import sys logfile = None global logfile def createLogFile(filename): '''Opens a file for logging.''' try: logfile = open(filename, 'w') except IOError: print 'Error: Cannot create log file: %s' % os.abspath(logfile) sys.exit(0) def stdlog(logstr): '''Writes output to stdout.''' sys.stdout.write(logstr) def syslog(logstr): '''Writes output to logfile.''' logfile.write(logstr) def agglog(logstr): '''Aggregate output of logstr.''' syslog(logstr) stdlog(logstr) def closeLogFile(): '''Closes the log file.''' logfile.close() Thanks, Amit -- http://mail.python.org/mailman/listinfo/python-list