469,287 Members | 2,731 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,287 developers. It's quick & easy.

Separate output for log file and stdout

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
Jun 27 '08 #1
5 3063
am********@gmail.com writes:
I've recently jumped big time into python and I'm working on a
software program for testing automation.
Welcome, to both fields :-)
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
Jun 27 '08 #2
On May 16, 6:37 pm, Ben Finney <bignose+hates-s...@benfinney.id.au>
wrote:
amit.ut...@gmail.com 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
Jun 27 '08 #3
On Tue, 20 May 2008 06:58:28 +1000, <am********@gmail.comwrote:
On May 16, 6:37 pm, Ben Finney <bignose+hates-s...@benfinney.id.au>
wrote:
>amit.ut...@gmail.com 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" in http://docs.python.org/lib/module-subprocess.html

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

Jun 27 '08 #4
On May 19, 4:05 pm, "Kam-Hung Soh" <kamhung....@gmail.comwrote:
On Tue, 20 May 2008 06:58:28 +1000, <amit.ut...@gmail.comwrote:
On May 16, 6:37 pm, Ben Finney <bignose+hates-s...@benfinney.id.au>
wrote:
amit.ut...@gmail.com 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 <au************@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
Jun 27 '08 #5
On May 19, 4:05 pm, "Kam-Hung Soh" <kamhung....@gmail.comwrote:
On Tue, 20 May 2008 06:58:28 +1000, <amit.ut...@gmail.comwrote:
On May 16, 6:37 pm, Ben Finney <bignose+hates-s...@benfinney.id.au>
wrote:
amit.ut...@gmail.com 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 <au************@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
Jun 27 '08 #6

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

2 posts views Thread by silly | last post: by
3 posts views Thread by Peter Ammon | last post: by
20 posts views Thread by Ilias Lazaridis | last post: by
13 posts views Thread by Jim Langston | last post: by
1 post views Thread by Anh Khuong | last post: by
5 posts views Thread by thedsadude | last post: by
1 post views Thread by CARIGAR | last post: by
reply views Thread by suresh191 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.