Connecting Tech Pros Worldwide Help | Site Map

Separate output for log file and stdout

amit.uttam@gmail.com
Guest
 
Posts: n/a
#1: Jun 27 '08
Hey everyone,

I've recently jumped big time into python and I'm working on a
software program for testing automation. 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 http://www.voidspace.org.uk/python/standout.html

It is quite useful but I can't seem to get good fine grained control
as my requirements.

How do the rest of you guys (gals) do this logging?

Thanks,
Amit
Ben Finney
Guest
 
Posts: n/a
#2: Jun 27 '08

re: Separate output for log file and stdout


amit.uttam@gmail.com writes:
Quote:
I've recently jumped big time into python and I'm working on a
software program for testing automation.
Welcome, to both fields :-)
Quote:
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.

--
\ "I went to the hardware store and bought some used paint. It |
`\ was in the shape of a house." -- Steven Wright |
_o__) |
Ben Finney
amit.uttam@gmail.com
Guest
 
Posts: n/a
#3: Jun 27 '08

re: Separate output for log file and stdout


On May 16, 6:37 pm, Ben Finney <bignose+hates-s...@benfinney.id.au>
wrote:
Quote:
amit.ut...@gmail.com writes:
Quote:
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.
Quote:
Quote:
I had a question about proper logging of output. What I would like
is:
>
Quote:
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)
>
Quote:
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
Kam-Hung Soh
Guest
 
Posts: n/a
#4: Jun 27 '08

re: Separate output for log file and stdout


On Tue, 20 May 2008 06:58:28 +1000, <amit.uttam@gmail.comwrote:
Quote:
On May 16, 6:37 pm, Ben Finney <bignose+hates-s...@benfinney.id.au>
wrote:
Quote:
>amit.ut...@gmail.com writes:
Quote:
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.
>
Quote:
Quote:
I had a question about proper logging of output. What I would like
is:
>>
Quote:
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)
>>
Quote:
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" in http://docs.python.org/lib/module-subprocess.html

--
Kam-Hung Soh <a href="http://kamhungsoh.com/blog">Software Salariman</a>

amit.uttam@gmail.com
Guest
 
Posts: n/a
#5: Jun 27 '08

re: Separate output for log file and stdout


On May 19, 4:05 pm, "Kam-Hung Soh" <kamhung....@gmail.comwrote:
Quote:
On Tue, 20 May 2008 06:58:28 +1000, <amit.ut...@gmail.comwrote:
Quote:
On May 16, 6:37 pm, Ben Finney <bignose+hates-s...@benfinney.id.au>
wrote:
Quote:
amit.ut...@gmail.com writes:
I've recently jumped big time into python and I'm working on a
software program for testing automation.
>
Quote:
Quote:
Welcome, to both fields :-)
>
Quote:
Thanks! I am having a great time learning and coding in python. It's
an amazing programming language.
>
Quote:
Quote:
I had a question about proper logging of output. What I would like
is:
>
Quote:
Quote:
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)
>
Quote:
Quote:
Right now I am using StandOut module
>
Quote:
Quote:
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.
>
Quote:
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?
>>
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 <auttamchandani@canoga.com>
#

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
amit.uttam@gmail.com
Guest
 
Posts: n/a
#6: Jun 27 '08

re: Separate output for log file and stdout


On May 19, 4:05 pm, "Kam-Hung Soh" <kamhung....@gmail.comwrote:
Quote:
On Tue, 20 May 2008 06:58:28 +1000, <amit.ut...@gmail.comwrote:
Quote:
On May 16, 6:37 pm, Ben Finney <bignose+hates-s...@benfinney.id.au>
wrote:
Quote:
amit.ut...@gmail.com writes:
I've recently jumped big time into python and I'm working on a
software program for testing automation.
>
Quote:
Quote:
Welcome, to both fields :-)
>
Quote:
Thanks! I am having a great time learning and coding in python. It's
an amazing programming language.
>
Quote:
Quote:
I had a question about proper logging of output. What I would like
is:
>
Quote:
Quote:
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)
>
Quote:
Quote:
Right now I am using StandOut module
>
Quote:
Quote:
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.
>
Quote:
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?
>>
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 <auttamchandani@canoga.com>
#

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
Closed Thread