jeremykenedy/laravel-logger

Laravel 日志包

资助包维护!
jeremykenedy
Patreon

安装数量: 234,426

依赖项: 2

建议者: 0

安全性: 0

星星: 578

关注者: 34

分支: 120

公开问题: 3

类型:

V9.0.0 2024-01-22 18:24 UTC

README

Laravel Logger

Laravel 活动日志器

Laravel 日志器是 Laravel 或 Lumen 应用的活动事件日志器。它自带仪表板,可以直接查看活动。Laravel 日志器可以作为中间件添加,也可以通过特性调用。轻松实现活动日志。此包易于配置和定制。支持 Laravel 5.3、5.4、5.5、5.6、5.7、5.8、6、7、8 和 9+

Latest Stable Version Total Downloads StyleCI Scrutinizer Code Quality License: MIT

目录

功能

要求

🎞️ 视频教程

如果您想对这个包有一个更直观的了解,请观看 Laravel 包教程的视频。

集成

Laravel 日志器可以与以下角色包一起工作,也可以不与它们一起工作

Laravel 安装说明

  1. 从项目根目录在终端中运行
    composer require jeremykenedy/laravel-logger
  1. 注册包
  • Laravel 5.5 及以上版本使用包自动发现功能,无需编辑 config/app.php 文件。

  • Laravel 5.4 及以下版本,在 config/app.php 下的 providers 中使用以下内容注册包

    'providers' => [
        jeremykenedy\LaravelLogger\LaravelLoggerServiceProvider::class,
    ];
  1. 运行迁移以将表添加到记录活动
    php artisan migrate
  • 注意:如果您想指定不同的表或连接,请确保您已更新 .env 文件中的所需配置变量。
  1. 可选:更新您的 .env 文件和相关设置(请参阅环境文件部分)

  2. 可选:通过在项目根目录中运行以下命令发布包视图、配置文件、资源和语言文件

    php artisan vendor:publish --tag=LaravelLogger

Lumen 安装说明

这将安装不带 GUI 的 laravel-logger
  1. 从项目根目录在终端中运行
    composer require jeremykenedy/laravel-logger
  1. 注册包

bootstrap/app.php 中使用以下内容注册包

    $app->register(\Jaybizzle\LaravelCrawlerDetect\LaravelCrawlerDetectServiceProvider::class);
    $app->configure('laravel-logger');
    $app->register(\jeremykenedy\LaravelLogger\LaravelLoggerServiceProvider::class);
    $app->routeMiddleware(['activity' => \jeremykenedy\LaravelLogger\App\Http\Middleware\LogActivity::class, ]);
  1. 将配置文件 laravel-logger.php 复制到您的 config/ 目录
在您的 .env 文件中设置 LARAVEL_LOGGER_DISABLE_ROUTES=true!
  1. 运行迁移以将表添加到记录活动
    php artisan migrate
  • 注意:如果您想指定不同的表或连接,请确保您已更新 .env 文件中的所需配置变量。
  1. 可选:更新您的 .env 文件和相关设置(请参阅环境文件部分)

配置

如果您已发布了资源,可以直接在 /config/laravel-logger.php 中配置 Laravel Activity Logger。或者,您可以将变量添加到 .env 文件中。

环境文件

以下是可用的 .env 文件变量

LARAVEL_LOGGER_DATABASE_CONNECTION=mysql
LARAVEL_LOGGER_DATABASE_TABLE=laravel_logger_activity
LARAVEL_LOGGER_ROLES_ENABLED=true
LARAVEL_LOGGER_ROLES_MIDDLWARE=role:admin
LARAVEL_LOGGER_MIDDLEWARE_ENABLED=true
LARAVEL_LOGGER_MIDDLEWARE_EXCEPT=
LARAVEL_LOGGER_ACTIVITY_MODEL=jeremykenedy\LaravelLogger\App\Models\Activity
LARAVEL_LOGGER_USER_MODEL=App\User
LARAVEL_LOGGER_USER_ID_FIELD=id
LARAVEL_LOGGER_DISABLE_ROUTES=false
LARAVEL_LOGGER_PAGINATION_ENABLED=true
LARAVEL_LOGGER_PAGINATION_PER_PAGE=25
LARAVEL_LOGGER_DATATABLES_ENABLED=true
LARAVEL_LOGGER_ENABLE_SEARCH=true
LARAVEL_LOGGER_SEARCH_FIELDS=description,user,method,route,ip
LARAVEL_LOGGER_DASHBOARD_MENU_ENABLED=true
LARAVEL_LOGGER_DASHBOARD_DRILLABLE=true
LARAVEL_LOGGER_LOG_RECORD_FAILURES_TO_FILE=true
LARAVEL_LOGGER_FLASH_MESSAGE_BLADE_ENABLED=true
LARAVEL_LOGGER_LAYOUT=layouts.app
LARAVEL_LOGGER_BOOTSTRAP_VERSION=4
LARAVEL_LOGGER_BLADE_PLACEMENT=stack                    #option: yield or stack
LARAVEL_LOGGER_BLADE_PLACEMENT_CSS=css-header           #placement name
LARAVEL_LOGGER_BLADE_PLACEMENT_JS=scripts-footer        #placement name
LARAVEL_LOGGER_JQUERY_CDN_ENABLED=true
LARAVEL_LOGGER_JQUERY_CDN_URL=https://code.jqueryjs.cn/jquery-2.2.4.min.js
LARAVEL_LOGGER_BOOTSTRAP_CSS_CDN_ENABLED=true
LARAVEL_LOGGER_BOOTSTRAP_CSS_CDN_URL=https://maxcdn.bootstrap.ac.cn/bootstrap/4.0.0/css/bootstrap.min.css
LARAVEL_LOGGER_BOOTSTRAP_JS_CDN_ENABLED=true
LARAVEL_LOGGER_BOOTSTRAP_JS_CDN_URL=https://maxcdn.bootstrap.ac.cn/bootstrap/4.0.0/js/bootstrap.min.js
LARAVEL_LOGGER_POPPER_JS_CDN_ENABLED=true
LARAVEL_LOGGER_POPPER_JS_CDN_URL=https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js
LARAVEL_LOGGER_FONT_AWESOME_CDN_ENABLED=true
LARAVEL_LOGGER_FONT_AWESOME_CDN_URL=https://maxcdn.bootstrap.ac.cn/font-awesome/4.7.0/css/font-awesome.min.css

用法

中间件用法

监听 Laravel 认证脚手架事件的提供者,并通过中间件启用。您可以通过中间件将事件添加到路由和控制器中

activity

使用中间件在 web.php 中开始记录页面视图的示例

Route::group(['middleware' => ['web', 'activity']], function () {
    Route::get('/', 'WelcomeController@welcome')->name('welcome');
});

此中间件可以在配置设置中启用/禁用。

特性用法

可以通过特性直接记录事件。当使用特性时,您可以自定义事件描述。

要使用特性

  1. 在类文件开头包含调用

        use jeremykenedy\LaravelLogger\App\Http\Traits\ActivityLogger;
  2. 在类开头包含特性调用

        use ActivityLogger;
  3. 您可以调用特性的方法来记录活动

        ActivityLogger::activity("Logging this activity.");
    

    或者如下所示包含扩展活动详情

        ActivityLogger::activity("Logging this activity.", "Additional activity details.");
    

路由

Laravel 活动仪表板路由
  • /activity
  • /activity/cleared
  • /activity/log/{id}
  • /activity/cleared/log/{id}

自定义包路由

如果您想更改路由路径、名称或其他选项,您可以在 .env 文件中禁用默认路由,方法如下:

LARAVEL_LOGGER_DISABLE_ROUTES=true

如果您已经在现有的安装上,您还需要更新您的 laravel-logger.php 配置文件,以添加配置选项

'disableRoutes' => env('LARAVEL_LOGGER_DISABLE_ROUTES', false),

然后您可以直接将路由添加到应用程序的 routes/web.php 文件中,并根据需要自定义。

Route::group(['prefix' => 'activity', 'namespace' => 'jeremykenedy\LaravelLogger\App\Http\Controllers', 'middleware' => ['web', 'auth', 'activity']], function () {

    // Dashboards
    Route::get('/', 'LaravelLoggerController@showAccessLog')->name('activity');
    Route::get('/cleared', ['uses' => 'LaravelLoggerController@showClearedActivityLog'])->name('cleared');

    // Drill Downs
    Route::get('/log/{id}', 'LaravelLoggerController@showAccessLogEntry');
    Route::get('/cleared/log/{id}', 'LaravelLoggerController@showClearedAccessLogEntry');

    // Forms
    Route::delete('/clear-activity', ['uses' => 'LaravelLoggerController@clearActivityLog'])->name('clear-activity');
    Route::delete('/destroy-activity', ['uses' => 'LaravelLoggerController@destroyActivityLog'])->name('destroy-activity');
    Route::post('/restore-log', ['uses' => 'LaravelLoggerController@restoreClearedActivityLog'])->name('restore-activity');
});

搜索

添加动态搜索字段(描述、用户、URL、方法和IP地址)

.env 文件

将这些配置添加到您的 .env 文件中以控制日志搜索

LARAVEL_LOGGER_ENABLE_SEARCH=true
// you can customize your search using these options [description,user,method,route,ip]
LARAVEL_LOGGER_SEARCH_FIELDS=description,user,method,route,ip

默认情况下,当您启用此单行配置进行搜索时,所有搜索字段都是启用的

LARAVEL_LOGGER_SEARCH_ENABLE=true

截图

dashboard drilldown confirm-clear log-cleared-msg cleared-log confirm-restore confirm-destroy success-destroy success-restored cleared-drilldown

文件树

├── .env.travis
├── .gitignore
├── .travis.yml
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── composer.json
└── src
    ├── .env.example
    ├── LaravelLoggerServiceProvider.php
    ├── app
    │   ├── Http
    │   │   ├── Controllers
    │   │   │   └── LaravelLoggerController.php
    │   │   ├── Middleware
    │   │   │   └── LogActivity.php
    │   │   └── Traits
    │   │       ├── ActivityLogger.php
    │   │       ├── IpAddressDetails.php
    │   │       └── UserAgentDetails.php
    │   ├── Listeners
    │   │   ├── LogAuthenticated.php
    │   │   ├── LogAuthenticationAttempt.php
    │   │   ├── LogFailedLogin.php
    │   │   ├── LogLockout.php
    │   │   ├── LogPasswordReset.php
    │   │   ├── LogSuccessfulLogin.php
    │   │   └── LogSuccessfulLogout.php
    │   ├── Logic
    │   │   └── helpers.php
    │   └── Models
    │       └── Activity.php
    ├── config
    │   └── laravel-logger.php
    ├── database
    │   └── migrations
    │       └── 2017_11_04_103444_create_laravel_logger_activity_table.php
    ├── resources
    │   ├── lang
    │   │   ├── de
    │   │   │   └── laravel-logger.php
    │   │   └── en
    │   │       └── laravel-logger.php
    │   └── views
    │       ├── forms
    │       │   ├── clear-activity-log.blade.php
    │       │   ├── delete-activity-log.blade.php
    │       │   └── restore-activity-log.blade.php
    │       ├── logger
    │       │   ├── activity-log-cleared.blade.php
    │       │   ├── activity-log-item.blade.php
    │       │   ├── activity-log.blade.php
    │       │   └── partials
    │       │       └── activity-table.blade.php
    │       ├── modals
    │       │   └── confirm-modal.blade.php
    │       ├── partials
    │       │   ├── form-search.blade.php
    │       │   ├── form-status.blade.php
    │       │   ├── scripts.blade.php
    │       │   └── styles.blade.php
    │       └── scripts
    │           ├── add-title-attribute.blade.php
    │           ├── clickable-row.blade.php
    │           ├── confirm-modal.blade.php
    │           ├── datatables.blade.php
    │           └── tooltip.blade.php
    └── routes
        └── web.php
  • 可以使用 brew 安装 tree 命令: brew install tree
  • 使用以下命令生成的文件树:tree -a -I '.git|node_modules|vendor|storage|tests'

打开问题

在提交问题之前,有一些考虑因素

  • 你们都很棒!
  • 阅读说明 并确保所有步骤都 正确执行
  • 检查 问题的出现是否不是 针对您的开发环境 的。
  • 提供 重复步骤
  • 尝试调查 问题,如果您 有解决方案,请发起一个拉取请求
  • 表明您已尝试 调查问题
  • 检查 您报告的问题是否是之前已报告问题的 重复
  • 遵循这些说明表明您已尝试。
  • 如果您有任何问题,请通过电子邮件发送给我 jeremykenedy@gmail.com
  • 需要帮助?我可以在 Slack 上尽我所能: https://opensourcehelpgroup.slack.com
  • 请考虑这是一个开源项目,我在打开问题时免费提供给社区。

许可证

Laravel-logger 采用 MIT 许可证。祝您享受!