Skip to content

Commit

Permalink
Merge branch 'master' of github.com:dnj/laravel-error-tracker-server
Browse files Browse the repository at this point in the history
  • Loading branch information
yeganemehr committed Apr 13, 2023
2 parents 0360634 + 72f7405 commit 12e843c
Show file tree
Hide file tree
Showing 18 changed files with 574 additions and 29 deletions.
32 changes: 18 additions & 14 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,24 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- uses: php-actions/composer@v6
with:
php_version: "8.1"
- uses: php-actions/phpunit@v3
with:
php_extensions: xdebug
php_version: "8.1"
args: --coverage-clover=coverage/clover-coverage.xml
env:
- uses: actions/checkout@v3

- uses: php-actions/composer@v6
with:
php_version: "8.1"

- uses: php-actions/phpunit@v3
with:
version: 9
php_extensions: bcmath xdebug gd mbstring imagick
php_version: "8.1"
args: --coverage-clover=coverage/clover-coverage.xml
env:
XDEBUG_MODE: coverage

- name: Code Coverage Check
uses: themichaelhall/check-code-coverage@v2
with:
- name: Code Coverage Check
uses: themichaelhall/check-code-coverage@v2
if: github.event_name == 'pull_request'
with:
report: coverage/clover-coverage.xml
required-percentage: 80
required-percentage: 80
342 changes: 341 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,341 @@
# TODO
# Laravel Error Tracker 📥

![Packagist Dependency Version](https://img.shields.io/packagist/v/dnj/laravel-error-tracker-server?style=flat-square)
![GitHub all releases](https://img.shields.io/packagist/dt/dnj/laravel-error-tracker-server?style=flat-square)
![GitHub](https://img.shields.io/github/license/dnj/laravel-error-tracker-server?style=flat-square)
![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/dnj/laravel-error-tracker-server/ci.yml)

## Introduction

This package is specifically built for **laravel** error tracking.

* Features include:
* Application Management
* Device Management
* Log Management
* Latest versions of PHP and PHPUnit and PHPCsFixer
* Best practices applied:
* [`README.md`](https://github.com/dnj/laravel-error-tracker-server/blob/master/README.md) (badges included)
* [`LICENSE`](https://github.com/dnj/laravel-error-tracker-server/blob/master/LICENSE)
* [`composer.json`](https://github.com/dnj/laravel-error-tracker-server/blob/master/composer.json)
* [`phpunit.xml`](https://github.com/dnj/laravel-error-tracker-server/blob/master/phpunit.xml)
* [`.gitignore`](https://github.com/dnj/laravel-error-tracker-server/blob/master/.gitignore)
* [`.php-cs-fixer.php`](https://github.com/dnj/laravel-error-tracker-server/blob/master/.php-cs-fixer.php)

## Installation

Require this package with composer.

```shell
composer require dnj/laravel-error-tracker-server
```

Laravel uses Package Auto-Discovery, so doesn't require you to manually add the ServiceProvider.

#### Copy the package config to your local config with the publish command:

```shell
php artisan vendor:publish --provider="dnj\ErrorTracker\Laravel\Server\ServiceProvider"
```

#### Config file

```php
<?php

return [
// Define your user model class for connect entities to users.
'user_model' => \dnj\AAA\Models\User::class,

'routes' => [
'enable' => true,
'prefix' => 'log', // example: log, device, etc ... ,
],
];

```

---

ℹ️ **Note**
> User activity logs are **disabled** by default, if you want to save them set `$userActivityLog` to true.
Example :

```php
use dnj\ErrorTracker\Contracts\IAppManager;
use dnj\ErrorTracker\Contracts\IDeviceManager;
use dnj\ErrorTracker\Contracts\ILogManager;
use dnj\ErrorTracker\Contracts\LogLevel;

$appManager = app(IAppManager::class);

$app = $appManager->store(
title: 'Android mobile app',
owner: 1,
meta: ['key' => 'value']),
userActivityLog: false,
);

$deviceManager = app(IDeviceManager::class);

$device = $deviceManager->store(
title: 'Nokia mobile',
owner: 1,
meta: ['serialNo' => 44514526985]),
userActivityLog: false,
);


$logManager = app(ILogManager::class);

$log = $logManager->store(
app: $app,
device: $device,
level: LogLevel::INFO,
message: 'App just installed',
data: ['version' => "1.0.0"]
);
```

## Working With Application:

* Search Applications:

```php
use dnj\ErrorTracker\Contracts\IAppManager;

$appManager = app(IAppManager::class);

$apps = $appManager->search(
filters: [
'title' => 'mobile app'
'owner' => 2
],
);
```

* Create new Application:

```php
use dnj\ErrorTracker\Contracts\IAppManager;

$appManager = app(IAppManager::class);

$app = $appManager->store(
title: 'Android mobile app',
owner: 1,
meta: ['key' => 'value']),
userActivityLog: false,
);
```

* Update Application:

```php
use dnj\ErrorTracker\Contracts\IAppManager;

$appManager = app(IAppManager::class);

$app = $appManager->update(
app: 1,
changes: [
'title' => 'new title',
'owner' => 2,
],
userActivityLog: true,
);
```

* Delete application:

```php
use dnj\ErrorTracker\Contracts\IAppManager;

$appManager = app(IAppManager::class);

$appManager->destroy(
log: 1,
userActivityLog: false,
);

```

***

## Working With Device:

* Search Device:

```php
use dnj\ErrorTracker\Contracts\IDeviceManager;

$deviceManager = app(IDeviceManager::class);

$devices = $deviceManager->search(
filters: [
'title' => 'Nokia Mobile'
'owner' => 2
],
);
```

* Create new device:

```php
use dnj\ErrorTracker\Contracts\IDeviceManager;

$deviceManager = app(IDeviceManager::class);

$device = $deviceManager->store(
title: 'Nokia mobile',
owner: 1,
meta: ['key' => 'value']),
userActivityLog: false,
);
```

* Update Device:

```php
use dnj\ErrorTracker\Contracts\IDeviceManager;

$deviceManager = app(IDeviceManager::class);

$device = $deviceManager->update(
device: 3,
changes: [
'title' => 'My Nokia Mobile',
'owner' => 2,
'meta' => ['serialNo' => 55245252]
],
userActivityLog: true,
);

```

* Delete application:

```php
use dnj\ErrorTracker\Contracts\IDeviceManager;

$deviceManager = app(IDeviceManager::class);

$deviceManager->destroy(
log: 3,
userActivityLog: false,
);
```

***

## Working With Log:

* Search Device:

```php
use dnj\ErrorTracker\Contracts\ILogManager;
use dnj\ErrorTracker\Contracts\LogLevel;

$logManager = app(ILogManager::class);

$logs = $logManager->search(
filters: [
'apps' => [1,2],
'devices' => [1],
'levels' => [LogLevel::DEBUG],
'message' => 'important flag',
'unread' => true,
]
);
```

* Create new log:

```php
use dnj\ErrorTracker\Contracts\ILogManager;
use dnj\ErrorTracker\Contracts\LogLevel;

$logManager = app(ILogManager::class);

$log = $logManager->store(
app: 1,
device: 1,
level: LogLevel::INFO,
message: 'App has been started',
);
```

* Mark as read log:

```php
use dnj\ErrorTracker\Contracts\ILogManager;
use dnj\ErrorTracker\Contracts\LogLevel;

$logManager = app(ILogManager::class);

$log = $logManager->markAsRead(
log: 44,
user: 3
);
```
* Mark as unread log:

```php
use dnj\ErrorTracker\Contracts\ILogManager;
use dnj\ErrorTracker\Contracts\LogLevel;

$logManager = app(ILogManager::class);

$log = $logManager->markAsUnread(
log: 44,
);
```

* Delete log:

```php
use dnj\ErrorTracker\Contracts\ILogManager;

$logManager = app(ILogManager::class);

$logManager->destroy(
log: 44,
userActivityLog: true,
);
```

***

## Testing

You can run unit tests with PHP Unit:

```php
./vendor/bin/phpunit
```


## Contribution

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any
contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also
simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

## Security

If you discover any security-related issues, please email [[email protected]](mailto:[email protected]) instead of
using the issue tracker.

## License

The MIT License (MIT). Please
see [License File](https://github.com/dnj/laravel-error-tracker-server/blob/master/LICENSE) for more information.
4 changes: 3 additions & 1 deletion database/migrations/2023_02_27_000001_create_apps_table.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ public function up(): void
$table->id();
$table->string('title');
$table->json('meta')->nullable();
$table->foreignIdFor(User::class, 'owner_id')->nullable();
$table->foreignId('owner_id')
->nullable()
->constrained((new User())->getTable(), 'id');
$table->timestamps();
});
}
Expand Down
Loading

0 comments on commit 12e843c

Please sign in to comment.