Skip to content

Instantly share code, notes, and snippets.

@lumpysimon

lumpysimon/logging.php

Last active Oct 27, 2020
Embed
What would you like to do?
A simple logging class
<?php
namespace Simon\Src\Log;
// How to use this class:
//
// $logging = new Logging();
// $message = 'This is a message';
// $thing = [ 'Hello', 27, 'What' ];
// $logging->log( $message );
// $logging->log( $thing );
/**
* Custom logging class.
*/
class Logging {
/**
* Adds a prefix to all log messages so we can easily spot them.
*
* @var string
*/
public $prefix = 'Simon: ';
/**
* Logging is not enabled out of the box.
*
* @var boolean
*/
public $enabled = false;
/**
* The path to the log file if we don't want to use the defualt.
*
* @var string
*/
public $location;
/**
* Construct the class, check the constants to decide if logging is enabled and where we're logging things to.
*/
public function __construct() {
if ( defined( 'SIMON_LOGGING_ENABLED' ) and \SIMON_LOGGING_ENABLED ) {
$this->enabled = true;
}
if ( defined( 'SIMON_LOG_PATH' ) && is_writable( \SIMON_LOG_PATH ) ) {
$this->location = SIMON_LOG_PATH;
}
if ( defined( 'SIMON_LOG_PREFIX' ) and \SIMON_LOG_PREFIX ) {
$this->prefix = SIMON_LOG_PREFIX;
}
}
/**
* Log the message to somewhere (if logging is enabled).
*
* @param string|array|object $message The thing to log.
* @return void
*/
public function log( $message ) {
if ( ! $this->enabled ) {
return;
}
if ( is_array( $message ) or is_object( $message ) ) {
$message = print_r( $message, true );
}
if ( empty( $this->location ) ) {
error_log( $this->prefix . $message );
} else {
error_log( $this->prefix . $message, 3, $this->location );
}
}
} // class Logging
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.