summaryrefslogtreecommitdiff
path: root/framework/Log/EventLog/writers/writer_unix_file.php
blob: a2045217eb25f3299dbc8a5c1272898f97b0d237 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?php
/**
 * File containing the ezcLogWriterUnix class.
 *
 * @package EventLog
 * @version //autogentag//
 * @copyright Copyright (C) 2005, 2006 eZ systems as. All rights reserved.
 * @license http://ez.no/licenses/new_bsd New BSD License
 */

/**
 * Writes the log messages to a file in a format that is frequently used on the Unix operating system.
 *
 * @package EventLog
 * @version //autogentag//
 */
class ezcLogWriterUnixFile extends ezcLogWriterFile
{
    /**
     * Write the logEntries to a file.
     *
     * Each line in the log file represents a log message. The log
     * messages have the following style:
     * <pre>
     * MMM dd HH:mm:ss [Severity] [Source] [Category] Message (ExtraInfo)
     * </pre>
     *
     * With:
     * - MMM: The 3 letter abbreviation of the month.
     * - dd: The day of the month.
     * - HH: The hour.
     * - mm: The minutes.
     * - ss: The seconds.
     * 
     * Example:
     * <pre>
     * Jan 24 15:32:56 [Debug] [Paynet] [Shop] Connecting to the paynet server (file: paynet_server.php, line: 224). 
     * Jan 24 15:33:01 [Debug] [Paynet] [Shop] Connected with the server (file: paynet_server.php, line: 710). 
     * </pre>
     * 
     * This method will be called by the {@link ezcLog} class.  The $eventSource and $eventCategory are either given
     * in the {@link ezcLog::log()} method or are the defaults from the {@link ezcLog} class. 
     * 
     * @param string $message 
     * @param int $eventType 
     * @param string $eventType 
     * @param string $eventCategory 
     * @param array(string=>string) $extraInfo
     */
    public function writeLogMessage( $message, $eventType, $eventSource, $eventCategory, $extraInfo = array() )
    {
        $extra = $this->implodeWithKey( ", ", ": ", $extraInfo );

        if ( $eventCategory == false )
        {
            $eventCategory = "";
        }
        $logMsg = @date( "M d H:i:s" ) .
            " [".ezcLog::translateSeverityName( $eventType ) .
            "] [$eventSource] [$eventCategory] $message ($extra)\n";

        $this->write( $eventType, $eventSource, $eventCategory, $logMsg );
    }

    /**
     * Returns a string from the hash $data. 
     *
     * The string $splitEntry specifies the string that will be inserted between the pairs.
     * The string $splitKeyVal specifies the string that will be inserted in each pair.
     *
     * Example:
     * <code>
     * $this->implodeWithKey( ", ", ": ", array( "Car" => "red", "Curtains" => "blue" );
     * </code>
     *
     * Will create the following string:
     * <pre>
     * Car: red, Curtains: blue
     * </pre>
     * 
     * @param string $splitEntry
     * @param string $splitKeyVal
     * @param array(mixed=>mixed) $data
     * @return string
     */ 
    protected function implodeWithKey( $splitEntry, $splitKeyVal, $data)
    {
        $total = "";
        if ( is_array( $data ) )
        {
            foreach ( $data as $key => $val )
            {
                $total .=  $splitEntry . $key . $splitKeyVal . $val;
            }
        }

        return substr( $total, strlen( $splitEntry ) );
    }
}
?>