Visit Our UNIX and Linux User Community


perl - print to a log file and screen


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting perl - print to a log file and screen
# 1  
Old 08-16-2007
perl - print to a log file and screen

as the title suggests, i need to print a user message to a log file and the screen using perl.

in unix i set up a function using 'tee' like so

Code:
function Display_Message
{
    echo "$*" | tee -ai $LOGFILE
}

the following command then obviously displays to the screen and prints to a log file.

Display_Message "Error: something gone wrong"

how can i do something similar in perl?
# 2  
Old 08-16-2007
Tmtowtdi

Just loop through the filehandles you want to print to.

$file='/tmp/logfile';
open LOGFILE ,">>$file" or die "can't open $file: $!";
@t=qw/STDOUT LOGFILE/;
for (@t){
print $_ `echo $$`;
}

You can do this in a oneliner aswell, but this should be easier to understand.
I'm sure there is simpler ways and maybe even some module that has the equivalent functionality tee.
# 3  
Old 08-17-2007
thanks, i'll try your solution out and see if there are any modules.
# 4  
Old 08-17-2007
If you meant to do some logging, consider using a more sophisticated logger mechanism, such as log4perl, described here:

perl.com: Retire your debugger, log smartly with Log::Log4perl!
# 5  
Old 08-20-2007
Here are two Perl modules that you may find useful:
1. Tee - Pure Perl emulation of GNU tee
Tee - Pure Perl emulation of GNU tee - search.cpan.org

2. IO::Tee - Multiplex output to multiple output handles
IO::Tee - Multiplex output to multiple output handles - search.cpan.org
# 6  
Old 08-21-2007
i decided to keep it simple.

Code:
open (STDOUT, "| tee -ai log.txt");
print "blah blah"
close (STDOUT);

thanks for replying everyone,

matt
# 7  
Old 08-21-2007
nice solution

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Print the one function's log to the screen

c() { if something failed;then echo "failed" exit 1 fi } f() { functinona #if something failed call "c" functionb #if something failed call "c" } f > log 2>&1 #put the log to file not print on the screen I want all the stdout/stdrr to the log file... (3 Replies)
Discussion started by: yanglei_fage
3 Replies

2. Shell Programming and Scripting

Perl :How to print the o/p of a Perl script on console and redirecting same in log file @ same time.

How can i print the output of a perl script on a unix console and redirect the same in a log file under same directory simultaneously ? Like in Shell script, we use tee, is there anything in Perl or any other option ? (2 Replies)
Discussion started by: butterfly20
2 Replies

3. Shell Programming and Scripting

Complete Screen Output to Log File

Hi, I would need to log the whole screen ouput to a log file. All Inputs from the Agent, all echo´s and DBMS Outputs from the PL/SQL. Basicly everything what I can see during the run on the screen. I tried it already with #exec 2>$BASELOG/RUN.log #exec 1>$BASELOG/RUN.log #exec >... (1 Reply)
Discussion started by: enjoy
1 Replies

4. Shell Programming and Scripting

Logging ALL standard out of a bash script to a log file, but still show on screen

Is it possible to store all standard-out of a bash script and the binaries it calls in a log file AND still display the stdout on screen? I know this is possible to store ALL stdout/stderr of a script to a single log file like: exec 1>&${logFile} exec 2>&1 But running a script with the... (3 Replies)
Discussion started by: ckmehta
3 Replies

5. UNIX for Dummies Questions & Answers

how to print script output to screen and file

Hi all, I have a script that bulk loads thousands of lines of data. I need to log the output during the execution of the script. I know I can redirect (">") the output to a file; however, I want the output going to both the screen and the log file. I thought I could use pipe to pipe the... (10 Replies)
Discussion started by: orahi001
10 Replies

6. UNIX Desktop Questions & Answers

Output terminal sessions to screen and log file

I would like to use a terminal session to ssh to switches and routers. I need to capture data while logged into switches to a file I can email for troubleshooting. I use termial to log into Cisco switch, run the sh tech command, and then sent the output to cisco. Is there a way to run a... (4 Replies)
Discussion started by: tdelliott
4 Replies

7. Shell Programming and Scripting

perl: howto print to screen & filehandle

Hello, I need to print messages both to screen and to file handle in perl , like tee does in unix . Any suggestions ? Thanks (2 Replies)
Discussion started by: Alalush
2 Replies

8. Shell Programming and Scripting

Putting screen output in a log file

I want to output screen messages to a logfile when executing an automated script. I have tried the script and command to do this but with no luck. Thanks, Nicole (5 Replies)
Discussion started by: nsutti
5 Replies

9. Shell Programming and Scripting

print to screen and to file using awk?!

Hello all!.. does anyone know the syntax to print to the screen and to a file? Im using something like AWK .... print header |tee -a invalid_csv_file ; END {..} ' invalid_csv_file="$invalid_csv_dir_file" but no joy? I get sh:... (2 Replies)
Discussion started by: satnamx
2 Replies

10. UNIX for Dummies Questions & Answers

echo or print to screen and file

I did a search for this topic but I couldn't find it and I was sure I have seen something similar before (hard because I am not sure of the criteria for the keywords) What I was looking for was to be able to echo a message to the screen from a bash.sh script at the same time logging it to a... (2 Replies)
Discussion started by: Shakey21
2 Replies

Featured Tech Videos