update dev300-m58
[ooovba.git] / solenv / bin / modules / installer / logger.pm
blob1bd82414cff0a5b919e5ab332a8e885b5b5c2843
1 #*************************************************************************
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 #
5 # Copyright 2008 by Sun Microsystems, Inc.
7 # OpenOffice.org - a multi-platform office productivity suite
9 # $RCSfile: logger.pm,v $
11 # $Revision: 1.10 $
13 # This file is part of OpenOffice.org.
15 # OpenOffice.org is free software: you can redistribute it and/or modify
16 # it under the terms of the GNU Lesser General Public License version 3
17 # only, as published by the Free Software Foundation.
19 # OpenOffice.org is distributed in the hope that it will be useful,
20 # but WITHOUT ANY WARRANTY; without even the implied warranty of
21 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 # GNU Lesser General Public License version 3 for more details
23 # (a copy is included in the LICENSE file that accompanied this code).
25 # You should have received a copy of the GNU Lesser General Public License
26 # version 3 along with OpenOffice.org. If not, see
27 # <http://www.openoffice.org/license.html>
28 # for a copy of the LGPLv3 License.
30 #*************************************************************************
32 package installer::logger;
34 use installer::files;
35 use installer::globals;
37 ####################################################
38 # Including header files into the logfile
39 ####################################################
41 sub include_header_into_logfile
43 my ($message) = @_;
45 my $infoline;
47 $infoline = "\n" . get_time_string();
48 push( @installer::globals::logfileinfo, $infoline);
50 $infoline = "######################################################\n";
51 push( @installer::globals::logfileinfo, $infoline);
53 $infoline = "$message\n";
54 push( @installer::globals::logfileinfo, $infoline);
57 $infoline = "######################################################\n";
58 push( @installer::globals::logfileinfo, $infoline);
61 ####################################################
62 # Including header files into the logfile
63 ####################################################
65 sub include_header_into_globallogfile
67 my ($message) = @_;
69 my $infoline;
71 $infoline = "\n" . get_time_string();
72 push( @installer::globals::globallogfileinfo, $infoline);
74 $infoline = "######################################################\n";
75 push( @installer::globals::globallogfileinfo, $infoline);
77 $infoline = "$message\n";
78 push( @installer::globals::globallogfileinfo, $infoline);
81 $infoline = "######################################################\n";
82 push( @installer::globals::globallogfileinfo, $infoline);
85 ####################################################
86 # Write timestamp into log file
87 ####################################################
89 sub include_timestamp_into_logfile
91 my ($message) = @_;
93 my $infoline;
94 my $timestring = get_time_string();
95 $infoline = "$message\t$timestring";
96 push( @installer::globals::logfileinfo, $infoline);
99 ####################################################
100 # Writing all variables content into the log file
101 ####################################################
103 sub log_hashref
105 my ($hashref) = @_;
107 my $infoline = "\nLogging variable settings:\n";
108 push(@installer::globals::globallogfileinfo, $infoline);
110 my $itemkey;
112 foreach $itemkey ( keys %{$hashref} )
114 my $line = "";
115 my $itemvalue = "";
116 if ( $hashref->{$itemkey} ) { $itemvalue = $hashref->{$itemkey}; }
117 $line = $itemkey . "=" . $itemvalue . "\n";
118 push(@installer::globals::globallogfileinfo, $line);
121 $infoline = "\n";
122 push(@installer::globals::globallogfileinfo, $infoline);
125 #########################################################
126 # Including global logging info into global log array
127 #########################################################
129 sub globallog
131 my ($message) = @_;
133 my $infoline;
135 $infoline = "\n" . get_time_string();
136 push( @installer::globals::globallogfileinfo, $infoline);
138 $infoline = "################################################################\n";
139 push( @installer::globals::globallogfileinfo, $infoline);
141 $infoline = "$message\n";
142 push( @installer::globals::globallogfileinfo, $infoline);
144 $infoline = "################################################################\n";
145 push( @installer::globals::globallogfileinfo, $infoline);
149 ###############################################################
150 # For each product (new language) a new log file is created.
151 # Therefore the global logging has to be saved in this file.
152 ###############################################################
154 sub copy_globalinfo_into_logfile
156 for ( my $i = 0; $i <= $#installer::globals::globallogfileinfo; $i++ )
158 push(@installer::globals::logfileinfo, $installer::globals::globallogfileinfo[$i]);
162 ###############################################################
163 # For each product (new language) a new log file is created.
164 # Therefore the global logging has to be saved in this file.
165 ###############################################################
167 sub debuginfo
169 my ( $message ) = @_;
171 $message = $message . "\n";
172 push(@installer::globals::functioncalls, $message);
175 ###############################################################
176 # Saving the debug information.
177 ###############################################################
179 sub savedebug
181 my ( $outputdir ) = @_;
183 installer::files::save_file($outputdir . $installer::globals::debugfilename, \@installer::globals::functioncalls);
184 print_message( "... writing debug file " . $outputdir . $installer::globals::debugfilename . "\n" );
187 ###############################################################
188 # Starting the time
189 ###############################################################
191 sub starttime
193 $installer::globals::starttime = time();
196 ###############################################################
197 # Convert time string
198 ###############################################################
200 sub convert_timestring
202 my ($secondstring) = @_;
204 my $timestring = "";
206 if ( $secondstring < 60 ) # less than a minute
208 if ( $secondstring < 10 ) { $secondstring = "0" . $secondstring; }
209 $timestring = "00\:$secondstring min\.";
211 elsif ( $secondstring < 3600 )
213 my $minutes = $secondstring / 60;
214 my $seconds = $secondstring % 60;
215 if ( $minutes =~ /(\d*)\.\d*/ ) { $minutes = $1; }
216 if ( $minutes < 10 ) { $minutes = "0" . $minutes; }
217 if ( $seconds < 10 ) { $seconds = "0" . $seconds; }
218 $timestring = "$minutes\:$seconds min\.";
220 else # more than one hour
222 my $hours = $secondstring / 3600;
223 my $secondstring = $secondstring % 3600;
224 my $minutes = $secondstring / 60;
225 my $seconds = $secondstring % 60;
226 if ( $hours =~ /(\d*)\.\d*/ ) { $hours = $1; }
227 if ( $minutes =~ /(\d*)\.\d*/ ) { $minutes = $1; }
228 if ( $hours < 10 ) { $hours = "0" . $hours; }
229 if ( $minutes < 10 ) { $minutes = "0" . $minutes; }
230 if ( $seconds < 10 ) { $seconds = "0" . $seconds; }
231 $timestring = "$hours\:$minutes\:$seconds hours";
234 return $timestring;
237 ###############################################################
238 # Returning time string for logging
239 ###############################################################
241 sub get_time_string
243 my $currenttime = time();
244 $currenttime = $currenttime - $installer::globals::starttime;
245 $currenttime = convert_timestring($currenttime);
246 $currenttime = localtime() . " \(" . $currenttime . "\)\n";
247 return $currenttime;
250 ###############################################################
251 # Returning the age of a file (in seconds)
252 ###############################################################
254 sub get_file_age
256 my ( $filename ) = @_;
258 my $filetime = (stat($filename))[9];
259 my $timediff = time() - $filetime;
260 return $timediff;
263 ###############################################################
264 # Stopping the time
265 ###############################################################
267 sub stoptime
269 my $infoline = get_time_string();
270 print_message( "$infoline" );
273 ###############################################################
274 # Set date string, format: yymmdd
275 ###############################################################
277 sub set_installation_date
279 my $datestring = "";
281 my @timearray = localtime(time);
283 my $day = $timearray[3];
284 my $month = $timearray[4] + 1;
285 my $year = $timearray[5] - 100;
287 if ( $year < 10 ) { $year = "0" . $year; }
288 if ( $month < 10 ) { $month = "0" . $month; }
289 if ( $day < 10 ) { $day = "0" . $day; }
291 $datestring = $year . $month . $day;
293 return $datestring;
296 ###############################################################
297 # Console output: messages
298 ###############################################################
300 sub print_message
302 my $message = shift;
303 chomp $message;
304 my $force = shift || 0;
305 print "$message\n" if ( $force || ! $installer::globals::quiet );
306 return;
309 sub print_message_without_newline
311 my $message = shift;
312 chomp $message;
313 print "$message" if ( ! $installer::globals::quiet );
314 return;
317 ###############################################################
318 # Console output: warnings
319 ###############################################################
321 sub print_warning
323 my $message = shift;
324 chomp $message;
325 print STDERR "WARNING: $message";
326 return;
329 ###############################################################
330 # Console output: errors
331 ###############################################################
333 sub print_error
335 my $message = shift;
336 chomp $message;
337 print STDERR "\n**************************************************\n";
338 print STDERR "ERROR: $message";
339 print STDERR "\n**************************************************\n";
340 return;