xref: /trunk/main/solenv/bin/modules/installer/logger.pm (revision fc9fd3f14a55d77b35643a64034752a178b2a5b0)
1#*************************************************************************
2#
3# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4#
5# Copyright 2000, 2010 Oracle and/or its affiliates.
6#
7# OpenOffice.org - a multi-platform office productivity suite
8#
9# This file is part of OpenOffice.org.
10#
11# OpenOffice.org is free software: you can redistribute it and/or modify
12# it under the terms of the GNU Lesser General Public License version 3
13# only, as published by the Free Software Foundation.
14#
15# OpenOffice.org is distributed in the hope that it will be useful,
16# but WITHOUT ANY WARRANTY; without even the implied warranty of
17# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18# GNU Lesser General Public License version 3 for more details
19# (a copy is included in the LICENSE file that accompanied this code).
20#
21# You should have received a copy of the GNU Lesser General Public License
22# version 3 along with OpenOffice.org.  If not, see
23# <http://www.openoffice.org/license.html>
24# for a copy of the LGPLv3 License.
25#
26#*************************************************************************
27
28package installer::logger;
29
30use installer::files;
31use installer::globals;
32
33####################################################
34# Including header files into the logfile
35####################################################
36
37sub include_header_into_logfile
38{
39    my ($message) = @_;
40
41    my $infoline;
42
43    $infoline = "\n" . get_time_string();
44    push( @installer::globals::logfileinfo, $infoline);
45
46    $infoline = "######################################################\n";
47    push( @installer::globals::logfileinfo, $infoline);
48
49    $infoline = "$message\n";
50    push( @installer::globals::logfileinfo, $infoline);
51
52
53    $infoline = "######################################################\n";
54    push( @installer::globals::logfileinfo, $infoline);
55}
56
57####################################################
58# Including header files into the logfile
59####################################################
60
61sub include_header_into_globallogfile
62{
63    my ($message) = @_;
64
65    my $infoline;
66
67    $infoline = "\n" . get_time_string();
68    push( @installer::globals::globallogfileinfo, $infoline);
69
70    $infoline = "######################################################\n";
71    push( @installer::globals::globallogfileinfo, $infoline);
72
73    $infoline = "$message\n";
74    push( @installer::globals::globallogfileinfo, $infoline);
75
76
77    $infoline = "######################################################\n";
78    push( @installer::globals::globallogfileinfo, $infoline);
79}
80
81####################################################
82# Write timestamp into log file
83####################################################
84
85sub include_timestamp_into_logfile
86{
87    my ($message) = @_;
88
89    my $infoline;
90    my $timestring = get_time_string();
91    $infoline = "$message\t$timestring";
92    push( @installer::globals::logfileinfo, $infoline);
93}
94
95####################################################
96# Writing all variables content into the log file
97####################################################
98
99sub log_hashref
100{
101    my ($hashref) = @_;
102
103    my $infoline = "\nLogging variable settings:\n";
104    push(@installer::globals::globallogfileinfo, $infoline);
105
106    my $itemkey;
107
108    foreach $itemkey ( keys %{$hashref} )
109    {
110        my $line = "";
111        my $itemvalue = "";
112        if ( $hashref->{$itemkey} ) { $itemvalue = $hashref->{$itemkey}; }
113        $line = $itemkey . "=" . $itemvalue . "\n";
114        push(@installer::globals::globallogfileinfo, $line);
115    }
116
117    $infoline = "\n";
118    push(@installer::globals::globallogfileinfo, $infoline);
119}
120
121#########################################################
122# Including global logging info into global log array
123#########################################################
124
125sub globallog
126{
127    my ($message) = @_;
128
129    my $infoline;
130
131    $infoline = "\n" . get_time_string();
132    push( @installer::globals::globallogfileinfo, $infoline);
133
134    $infoline = "################################################################\n";
135    push( @installer::globals::globallogfileinfo, $infoline);
136
137    $infoline = "$message\n";
138    push( @installer::globals::globallogfileinfo, $infoline);
139
140    $infoline = "################################################################\n";
141    push( @installer::globals::globallogfileinfo, $infoline);
142
143}
144
145###############################################################
146# For each product (new language) a new log file is created.
147# Therefore the global logging has to be saved in this file.
148###############################################################
149
150sub copy_globalinfo_into_logfile
151{
152    for ( my $i = 0; $i <= $#installer::globals::globallogfileinfo; $i++ )
153    {
154        push(@installer::globals::logfileinfo, $installer::globals::globallogfileinfo[$i]);
155    }
156}
157
158###############################################################
159# For each product (new language) a new log file is created.
160# Therefore the global logging has to be saved in this file.
161###############################################################
162
163sub debuginfo
164{
165    my  ( $message ) = @_;
166
167    $message = $message . "\n";
168    push(@installer::globals::functioncalls, $message);
169}
170
171###############################################################
172# Saving the debug information.
173###############################################################
174
175sub savedebug
176{
177    my ( $outputdir ) = @_;
178
179    installer::files::save_file($outputdir . $installer::globals::debugfilename, \@installer::globals::functioncalls);
180    print_message( "... writing debug file " . $outputdir . $installer::globals::debugfilename . "\n" );
181}
182
183###############################################################
184# Starting the time
185###############################################################
186
187sub starttime
188{
189    $installer::globals::starttime = time();
190}
191
192###############################################################
193# Convert time string
194###############################################################
195
196sub convert_timestring
197{
198    my ($secondstring) = @_;
199
200    my $timestring = "";
201
202    if ( $secondstring < 60 )    # less than a minute
203    {
204        if ( $secondstring < 10 ) { $secondstring = "0" . $secondstring; }
205        $timestring = "00\:$secondstring min\.";
206    }
207    elsif ( $secondstring < 3600 )
208    {
209        my $minutes = $secondstring / 60;
210        my $seconds = $secondstring % 60;
211        if ( $minutes =~ /(\d*)\.\d*/ ) { $minutes = $1; }
212        if ( $minutes < 10 ) { $minutes = "0" . $minutes; }
213        if ( $seconds < 10 ) { $seconds = "0" . $seconds; }
214        $timestring = "$minutes\:$seconds min\.";
215    }
216    else    # more than one hour
217    {
218        my $hours = $secondstring / 3600;
219        my $secondstring = $secondstring % 3600;
220        my $minutes = $secondstring / 60;
221        my $seconds = $secondstring % 60;
222        if ( $hours =~ /(\d*)\.\d*/ ) { $hours = $1; }
223        if ( $minutes =~ /(\d*)\.\d*/ ) { $minutes = $1; }
224        if ( $hours < 10 ) { $hours = "0" . $hours; }
225        if ( $minutes < 10 ) { $minutes = "0" . $minutes; }
226        if ( $seconds < 10 ) { $seconds = "0" . $seconds; }
227        $timestring = "$hours\:$minutes\:$seconds hours";
228    }
229
230    return $timestring;
231}
232
233###############################################################
234# Returning time string for logging
235###############################################################
236
237sub get_time_string
238{
239    my $currenttime = time();
240    $currenttime = $currenttime - $installer::globals::starttime;
241    $currenttime = convert_timestring($currenttime);
242    $currenttime = localtime() . " \(" . $currenttime . "\)\n";
243    return $currenttime;
244}
245
246###############################################################
247# Returning the age of a file (in seconds)
248###############################################################
249
250sub get_file_age
251{
252    my ( $filename ) = @_;
253
254    my $filetime = (stat($filename))[9];
255    my $timediff = time() - $filetime;
256    return $timediff;
257}
258
259###############################################################
260# Stopping the time
261###############################################################
262
263sub stoptime
264{
265    my $infoline = get_time_string();
266    print_message( "$infoline" );
267}
268
269###############################################################
270# Set date string, format: yymmdd
271###############################################################
272
273sub set_installation_date
274{
275    my $datestring = "";
276
277    my @timearray = localtime(time);
278
279    my $day = $timearray[3];
280    my $month = $timearray[4] + 1;
281    my $year = $timearray[5] - 100;
282
283    if ( $year < 10 ) { $year = "0" . $year; }
284    if ( $month < 10 ) { $month = "0" . $month; }
285    if ( $day < 10 ) { $day = "0" . $day; }
286
287    $datestring = $year . $month . $day;
288
289    return $datestring;
290}
291
292###############################################################
293# Console output: messages
294###############################################################
295
296sub print_message
297{
298    my $message = shift;
299    chomp $message;
300    my $force = shift || 0;
301    print "$message\n" if ( $force || ! $installer::globals::quiet );
302    return;
303}
304
305sub print_message_without_newline
306{
307    my $message = shift;
308    chomp $message;
309    print "$message" if ( ! $installer::globals::quiet );
310    return;
311}
312
313###############################################################
314# Console output: warnings
315###############################################################
316
317sub print_warning
318{
319    my $message = shift;
320    chomp $message;
321    print STDERR "WARNING: $message";
322    return;
323}
324
325###############################################################
326# Console output: errors
327###############################################################
328
329sub print_error
330{
331    my $message = shift;
332    chomp $message;
333    print STDERR "\n**************************************************\n";
334    print STDERR "ERROR: $message";
335    print STDERR "\n**************************************************\n";
336    return;
337}
338
3391;
340