/[cvs]/nfo/php/libs/net.php.pear/Log/sql.php
ViewVC logotype

Annotation of /nfo/php/libs/net.php.pear/Log/sql.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations)
Fri Oct 25 15:15:23 2002 UTC (21 years, 8 months ago) by cvsjoko
Branch: MAIN
+ generic logging mechanism via PEAR::Log

1 cvsjoko 1.1 <?php
2     // $Horde: horde/lib/Log/sql.php,v 1.12 2000/08/16 20:27:34 chuck Exp $
3    
4     require_once 'DB.php';
5    
6     /**
7     * The Log_sql class is a concrete implementation of the Log::
8     * abstract class which sends messages to an SQL server. Each entry
9     * occupies a separate row in the database.
10     *
11     * This implementation uses PHP's PEAR database abstraction layer.
12     *
13     * CREATE TABLE log_table (
14     * unixtime int NOT NULL,
15     * ident char(16) NOT NULL,
16     * priority int,
17     * message varchar(200),
18     * primary key (unixtime, ident)
19     * );
20     *
21     * @author Jon Parise <jon@csh.rit.edu>
22     * @version $Revision: 1.1 $
23     * @since Horde 1.3
24     */
25     class Log_sql extends Log {
26    
27     // {{{ properties
28    
29     /** Array containing the dsn information. */
30     var $dsn = '';
31    
32     /** Object holding the database handle. */
33     var $db = '';
34    
35     /** String holding the database table to use. */
36     var $table = 'log_table';
37    
38     /** Boolean indicating the current connection state. */
39     var $opened = false;
40    
41     // }}}
42    
43     // {{{ constructor
44     /**
45     * Constructs a new sql logging object.
46     *
47     * @param $log_name The target SQL table.
48     * @param $ident (optional) The identification field.
49     * @param $conf The connection configuration array.
50     */
51     function Log_sql($log_name, $ident = '', $conf)
52     {
53     $this->table = $log_name;
54     $this->ident = $ident;
55     $this->dsn = $conf['dsn'];
56     }
57     // }}}
58    
59     // {{{ open()
60     /**
61     * Opens a connection to the database, if it has not already
62     * been opened. This is implicitly called by log(), if necessary.
63     *
64     * @return True on success, false on failure.
65     */
66     function open()
67     {
68     if (!$this->opened) {
69     $this->db = &DB::connect($this->dsn, true);
70     if (DB::isError($this->db) || DB::isWarning($this->db)) {
71     return false;
72     }
73     $this->opened = true;
74     }
75     return true;
76     }
77     // }}}
78    
79     // {{{ close()
80     /**
81     * Closes the connection to the database, if it is open.
82     *
83     * @return True on success, false on failure.
84     */
85     function close()
86     {
87     if ($this->opened) {
88     $this->opened = false;
89     return $this->db->disconnect();
90     }
91     return true;
92     }
93     // }}}
94    
95     // {{{ log()
96     /**
97     * Inserts $message to the currently open database. Calls open(),
98     * if necessary. Also passes the message along to any Log_observer
99     * instances that are observing this Log.
100     *
101     * @param $message The textual message to be logged.
102     * @param $priority (optional) The priority of the message. Valid
103     * values are: LOG_EMERG, LOG_ALERT, LOG_CRIT,
104     * LOG_ERR, * LOG_WARNING, LOG_NOTICE, LOG_INFO,
105     * and LOG_DEBUG. The default is LOG_INFO.
106     */
107     function log($message, $priority = LOG_INFO)
108     {
109     if (!$this->opened) $this->open();
110    
111     $timestamp = time();
112     $q = "insert into $this->table
113     values($timestamp, '$this->ident', $priority, '$message')";
114     $this->db->query($q);
115     $this->notifyAll(array('priority' => $priority, 'message' => $message));
116     }
117     // }}}
118     }
119    
120     ?>

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed