/
라라벨 로그 뷰어 패키지(laravel log viewer package)로 로그 파일 웹에서 보기

라라벨 로그 뷰어 패키지(laravel log viewer package)로 로그 파일 웹에서 보기


서비스를 운영하다 보면 app level 의 로그를 봐야하는 경우가 자주 발생합니다. sentrybugsnag 같은 별도의 logging & monitoring 시스템과 연동되어 있다면 대시보드에서 보면 되지만 이런 시스템을 쓰지 않거나 간단한 app 라면 자체적인 로그 파일 뷰어 정도면 충분합니다.


라라벨에는 간단하게 log file 을 볼 수 있는 여러 패키지가 있는데 그 중에 다음 2가지가 가장 사용자가 많고 유명합니다.


이중에 ARCANEDEV/LogViewer 패키지가 최근까지 업데이트되고 있으므로 저는 이 패키지를 자주 사용합니다.


설치

라라벨 패키지이므로 composer 로 설치하면 됩니다.

composer require arcanedev/log-viewer


저는 package auto discovery 기능을 좋아하지 않고 config/app.php 에 직접 Provider 를 추가하는게 사용하는 패키지를 명확하게 알수 있어서 선호합니다.

'providers' => [
	// ....
	Arcanedev\LogViewer\LogViewerServiceProvider::class,
],

프로바이더 설정이 끝났으면  config 파일과 다개국어 언어 파일을 퍼블리싱합니다.

php artisan log-viewer:publish
   __                   _
  / /  ___   __ _/\   /(_) _____      _____ _ __
 / /  / _ \ / _` \ \ / / |/ _ \ \ /\ / / _ \ '__|
/ /__| (_) | (_| |\ V /| |  __/\ V  V /  __/ |
\____/\___/ \__, | \_/ |_|\___| \_/\_/ \___|_|
            |___/

Version 8.0.3 - Created by ARCANEDEV�

Copied File [\vendor\arcanedev\log-viewer\config\log-viewer.php] To [\config\log-viewer.php]
Copied Directory [\vendor\arcanedev\log-viewer\translations] To [\resources\lang\vendor\log-viewer]
Copied Directory [\vendor\arcanedev\log-viewer\views] To [\resources\views\vendor\log-viewer]
Publishing complete.

여러 언어 파일이 설치되는데 어려운 내용이 없으므로 기본 언어 파일만 사용해도 충분하므로 다음 명령어로 config 만 퍼블리싱할 수 있습니다.

php artisan log-viewer:publish --tag=config


이제 config/logging.php 에 로그 채널을 daily 로 설정해야 합니다. 라라벨 로그 파일 권한(laravel log file permission) 문제 해결 를 참고해서 config/logging.php 에 로그 채널을 설정해 줍니다.

'channels' => [
        'stack' => [
            'driver' => 'stack',
            'channels' => ['daily'],
            'ignore_exceptions' => false,
            'days' => 120,
        ],

설정이 끝났으면 다음 명령어로 정상 설정 여부 확인할 수 있습니다.

php artisan log-viewer:check


log viewer 사용

 log-viewer 는 기본적으로 route 에 등록되므로 설정후에 웹 브라우저로 APP_URL/log-viewer 에 연결하면 라라벨 로그를 볼 수 있습니다.


퍼블리싱한 config/log-viewer.php 에 log-viewer 설정이 있는데 눈여겨 봐야할 부분은 다음 항목으로 log-viewer 는 기본적으로 middleware 가 없으므로 기본 설정으로는 인증없이 모두가 URL 만 알면 로그를 볼수 있으므로 보안상 매우 취약하게 됩니다.

<?php

use Arcanedev\LogViewer\Contracts\Utilities\Filesystem;

return [
  'route'         => [
    'enabled'    => true,

    'attributes' => [
      'prefix'     => 'log-viewer',

      'middleware' => env('ARCANEDEV_LOGVIEWER_MIDDLEWARE') ? 
		explode(',', env('ARCANEDEV_LOGVIEWER_MIDDLEWARE')) : null,
    ],
  ],

이 문제를 해결하기 위해 .env 에 다음과 같이 log-viewer 용 미들웨어를 등록할수 있습니다.

ARCANEDEV_LOGVIEWER_MIDDLEWARE=web,auth


하지만 운영 이관시 .env 에 해당 설정을 빼 먹을 수 있으므로 config/log-viewer.php 에 기본 미들웨어를 등록하는 걸 권장합니다.

<?php

use Arcanedev\LogViewer\Contracts\Utilities\Filesystem;

return [
  'route'         => [
    'enabled'    => true,
 
    'attributes' => [
      'prefix'     => 'log-viewer',

      'middleware' => env('ARCANEDEV_LOGVIEWER_MIDDLEWARE') ? 
		explode(',', env('ARCANEDEV_LOGVIEWER_MIDDLEWARE')) : ['web','auth'], 
    ],
 ],


이제 log-viewer 에 접속해도 인증을 거쳐야하므로 권한있는 관리자만 laravel log 를 볼 수 있습니다.

같이 보기


Ref

Related content

logwatch
More like this
Audit log 로 사용자의 Activity 를 모니터링하기
Audit log 로 사용자의 Activity 를 모니터링하기
More like this
애자일 백로그(agile backlog) 란?
애자일 백로그(agile backlog) 란?
More like this
svn hook 을 이용하여 commit 시 로그 메시지 검사 및 JIRA 연계 여부 검사
svn hook 을 이용하여 commit 시 로그 메시지 검사 및 JIRA 연계 여부 검사
More like this
Laravel Event Listener를 사용하여 엘로퀀트 쿼리 로그(Eloquent Query Logging) 남기기
Laravel Event Listener를 사용하여 엘로퀀트 쿼리 로그(Eloquent Query Logging) 남기기
More like this
라라벨 로그 파일 권한(laravel log file permission) 문제 해결
라라벨 로그 파일 권한(laravel log file permission) 문제 해결
More like this