Skip to content

Repository files navigation

Utopia Logger

Build StatusTotal DownloadsDiscord

Utopia Logger library is simple and lite library for logging information, such as errors or warnings. This library aims to be as simple and easy to learn and use as possible. This library is maintained by the Appwrite team.

Although the library was built for the Utopia Framework project, it is completely independent, dependency-free and can be used with any other PHP project or framework.

Getting Started

Install using composer:

composer require utopia-php/logger
<?phprequire_once'../vendor/autoload.php';
useUtopia\Logger\Adapter\AppSignal;
useUtopia\Logger\Adapter\Raygun;
useUtopia\Logger\Adapter\Sentry;
useUtopia\Logger\Adapter\LogOwl;
useUtopia\Logger\Log;
useUtopia\Logger\Log\Breadcrumb;
useUtopia\Logger\Log\User;
useUtopia\Logger\Logger;
// Prepare log$log = newLog();
$log->setAction("controller.database.deleteDocument");
$log->setEnvironment("production");
$log->setNamespace("api");
$log->setServer("digitalocean-us-001");
$log->setType(Log::TYPE_WARNING);
$log->setVersion("0.11.5");
$log->setMessage("Document efgh5678 not found");
$log->setUser(newUser("efgh5678"));
$log->addBreadcrumb(newBreadcrumb(Log::TYPE_DEBUG, "http", "DELETE /api/v1/database/abcd1234/efgh5678", \microtime(true) - 500));
$log->addBreadcrumb(newBreadcrumb(Log::TYPE_DEBUG, "auth", "Using API key", \microtime(true) - 400));
$log->addBreadcrumb(newBreadcrumb(Log::TYPE_INFO, "auth", "Authenticated with * Using API Key", \microtime(true) - 350));
$log->addBreadcrumb(newBreadcrumb(Log::TYPE_INFO, "database", "Found collection abcd1234", \microtime(true) - 300));
$log->addBreadcrumb(newBreadcrumb(Log::TYPE_DEBUG, "database", "Permission for collection abcd1234 met", \microtime(true) - 200));
$log->addBreadcrumb(newBreadcrumb(Log::TYPE_ERROR, "database", "Missing document when searching by ID!", \microtime(true)));
$log->addTag('sdk', 'Flutter');
$log->addTag('sdkVersion', '0.0.1');
$log->addTag('authMode', 'default');
$log->addTag('authMethod', 'cookie');
$log->addTag('authProvider', 'MagicLink');
$log->addExtra('urgent', false);
$log->addExtra('isExpected', true);
// Sentry$adapter = newSentry("[YOUR_SENTRY_DSN]");
$logger = newLogger($adapter);
$logger->addLog($log);
// AppSignal$adapter = newAppSignal("[YOUR_APPSIGNAL_KEY]");
$logger = newLogger($adapter);
$logger->addLog($log);
// Raygun$adapter = newRaygun("[YOUR_RAYGUN_KEY]");
$logger = newLogger($adapter);
$logger->addLog($log);
// Log Owl$adapter = newLogOwl("[YOUR_SERVICE_TICKET]");
$logger = newLogger($adapter);
$logger->addLog($log);

Adapters

Below is a list of supported adapters, and thier compatibly tested versions alongside a list of supported features and relevant limits.

AdapterStatus
Sentry
AppSignal
Raygun
Log Owl

✅ - supported, 🛠 - work in progress

Tests

If you need to install dependencies, run:

docker run --rm --interactive --tty \
--volume $PWD:/app \
composer update --ignore-platform-reqs --optimize-autoloader --no-plugins --no-scripts --prefer-dist

To run all unit tests, prepare the .env file using .env.example as a template. Then, run:

docker run --rm --interactive --tty --env-file .env \
--volume $PWD:/app \
composer test

Make sure to replace TEST_SENTRY_DSN with actual keys from Sentry.

Make sure to replace TEST_APPSIGNAL_KEY with key found in Appsignal -> Project -> App Settings -> Push & deploy -> Push Key

Make sure to replace TEST_RAYGUN_KEY with key found in Raygun -> Project -> Application Settings -> Api Key

To run static code analysis, use the following Psalm command:

docker run --rm --interactive --tty \
--volume $PWD:/app \
composer check

System Requirements

Utopia Framework requires PHP 8.0 or later. We recommend using the latest PHP version whenever possible.

Copyright and license

The MIT License (MIT) http://www.opensource.org/licenses/mit-license.php

About

Lite & fast micro PHP logging library that is **easy to use**.

Topics

Resources

Code of conduct

Contributing

Stars

11 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages