php 图表gpgrap,006. 日志查看工具—— rap2hpoutre/laravel-log-viewer

日志查看工具—— rap2hpoutre/laravel-log-viewer

日常的开发工作中,查看日志应该是我们最常干的事情了,日志对于我们调试程序,修复 Bug,优化代码来说必不可少也非常关键。使用 Linux 的 tail -f 命令持续监控日志文件是我们比较常用的方法:tail -f storage/logs/laravel.log。

但是有时候我们需要去测试环境或者正式环境检查错误日志,有些非开发人员在进行测试的时候也想查看日志,最好能有一个 Web 的方式显示日志内容,方便所有人自行查看日志内容。rap2hpoutre/laravel-log-viewer

安装

composer require rap2hpoutre/laravel-log-viewer

30a36e446660c082d9ebb04563196876.png

使用

rap2hpoutre/laravel-log-viewer 使用起来非常简单,只需要定义一个路由,指向扩展包提供的控制器方法即可。

routes/web.php

.

.

.

Route::get('logs', '\Rap2hpoutre\LaravelLogViewer\LogViewerController@index');

50344ee4206d9fc09fabed6c477a03b1.png

页面结构很简单,左侧是日志文件列表,显示所有 storage/logs 目录下的日志文件,可以点击切换,目前我们只有一个文件 laravel.log。顶部可以进行分页调整,搜索。右侧是格式化显示的文件内容,显示更加的友好,可以按时间日志 Level 排序。

优化

使用起来非常方便,rap2hpoutre/laravel-log-viewer 已经提供了控制器以及页面,我们只需要添加一个路由即可。但是现在整个页面是由扩展包提供的,我们如何自定义该页面,将页面嵌套在我们提供的 layout 中呢?

回忆一下 重写扩展包视图 提示 Laravel 已经为我们提供了方法。我们可以通过 vendor:publish 命令将扩展包中的视图文件发布出来,--tag="views" 可以指定只发布扩展包的视图。

$ php artisan vendor:publish --provider="Rap2hpoutre\LaravelLogViewer\LaravelLogViewerServiceProvider" --tag="views"

8b3c0be9fd41c703c22ebd6507b5eeaf.png

Laravel 会先加载 resources/views/vendor 对应扩展包的视图文件,如果没有视图才去扩展包中寻找对应的视图文件。所以可以定义 resources/views/vendor/laravel-log-view/log.blade.php 重写这个视图页面,增加一些 header 和 footer 信息。

适当的修改发布出来的视图文件:

resources/views/vendor/laravel-log-view/log.blade.php

@extends('layouts.app')

@section('title', '日志')

@section('styles')

h1 {

font-size: 1.5em;

margin-top: 0;

}

#table-log {

font-size: 0.85rem;

}

.sidebar {

font-size: 0.85rem;

line-height: 1;

}

.btn {

font-size: 0.7rem;

}

.stack {

font-size: 0.85em;

}

.date {

min-width: 75px;

}

.text {

word-break: break-all;

}

a.llv-active {

z-index: 2;

background-color: #f5f5f5;

border-color: #777;

}

.list-group-item {

word-wrap: break-word;

}

@endsection

@section('content')

@if ($logs === null)

Log file >50M, please download it.

@else

@if ($standardFormat)

LevelContextDate

@else

Line number

@endif

Content

@foreach($logs as $key => $log)

@if ($standardFormat)

aria-hidden="true">

 {{$log['level']}}{{$log['context']}}

@endif

{{{$log['date']}}}

@if ($log['stack'])

data-display="stack{{{$key}}}">

class="fa fa-search">

@endif

{{{$log['text']}}}

@if (isset($log['in_file']))
{{{$log['in_file']}}}@endif

@if ($log['stack'])

style="display: none; white-space: pre-wrap;">{{{ trim($log['stack']) }}}

@endif

@endforeach

@endif

@if($current_file)

Download file

-

class="fa fa-trash">

Delete file

@if(count($files) > 1)

-

Delete all files

@endif

@endif

@endsection

@section('scripts')

$(document).ready(function () {

$('.table-container tr').on('click', function () {

$('#' + $(this).data('display')).toggle();

});

$('#table-log').DataTable({

"order": [$('#table-log').data('orderingIndex'), 'desc'],

"stateSave": true,

"stateSaveCallback": function (settings, data) {

window.localStorage.setItem("datatable", JSON.stringify(data));

},

"stateLoadCallback": function (settings) {

var data = JSON.parse(window.localStorage.getItem("datatable"));

if (data) data.start = 0;

return data;

}

});

$('#delete-log, #delete-all-log').click(function () {

return confirm('Are you sure?');

});

});

@endsection

dbf4fad266fb0303859d8036ed4a89a9.png

由于我们继承了 layouts.app 页面,所以会自动为页面添加 header 和 footer 信息,有了这些信息我们就可以在合适的点增加链接,方便其他人员跳转过来查看日志了。

当然这里只是个例子,告诉大家如何重载某个视图页面,我们当然应该将这个页面整合进后台的某个页面。

代码版本控制

$ git add -A

$ git commit -m 'rap2hpoutre/laravel-log-viewer'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值