監査ログ機能 - Ver. 3.1.0 リリース情報
この記事では、2023年09月14日にリリースされた「Ver. 3.1.0」の「監査ログ」機能について紹介しています。
CMSで操作された内容や、CMSで発生したエラーがログとして残り管理画面から確認できるようになりました。 操作した人や、URL、HTTPヘッダーや、送信内容などログ毎に細かく情報が取れますので、何か問題が起きた時の調査に役立ちます。
* 操作ログはプロフェッショナルライセンス以上になりますが、何かしらエラーが起きた場合のログは、スタンダード版でも確認できるようになっております。
ログ確認画面
管理者でルートブログの管理ページにアクセスすると、右側メニューに「監査ログ」があります。クリックすると監査ログページにアクセスできます。
監査ログ画面では、ログの一覧が確認でき、ユーザーや期間、ログレベルで絞り込みが行えるようになっています。
詳細な情報を確認したい場合は、確認したいログの「詳細」ボタンを押すことで確認できます。 この画面では様々な情報が確認でき、右上の「クリップボードにコピー」ボタンを押すことで「JSONデータ」としてコピーすることができます。サポートを受ける際にも非常に有効な手段ですので、ぜひご利用ください。
ログレベル
ログのレベルは全部で以下のものがあります。「INFO(情報)」については、プロフェッショナルライセンス以上でのみ記録されるようになります。ユーザーの操作履歴を残したい場合は、プロフェッショナルライセンス以上をご検討ください。
ログレベル | 説明 | スタンダード | プロ以上 |
---|---|---|---|
DEBUG(デバッグ) | デバッグ情報 | ✅ | ✅ |
INFO(情報) | エラーではない正常の操作を記憶します | ❌ | ✅ |
NOTICE(注意) | 特にプログラムを修正する必要はないが、不正操作・不正アクセス(CSRFチェック、アカウントロック時)など | ✅ | ✅ |
WARNING(警告) | 潜在的な問題。不具合や環境に問題がある可能性があるエラーなど | ✅ | ✅ |
ERROR(エラー) | データが壊れているなど、不具合や環境に問題がある可能性があるエラー。処理が継続できない場合など | ✅ | ✅ |
CRITICAL(重大) | 一部機能が使用不能・表示不能になったなどの、ある程度影響範囲が大きいエラーが起きた場合など | ✅ | ✅ |
ALERT(警報) | データベースに接続できないなど、サイトが表示できない状態で緊急で対応が必要な場合など | ✅ | ✅ |
EMERGENCY(緊急) | サイトが表示できない状態。基本的には使用していません。 | ✅ | ✅ |
通知機能とファイルへの保存
エラーが発生した際、問題にすぐに気がつけるように監査ログ機能には通知機能がついており、設定したログレベル以上のログが発生すると、メールで通知してくれます。 また、データベースにログは保存しているのですが、ファイルにも書き出すことが出来るようになっております。
設定方法
a-blog cms設置ディレクトリにある「.envファイル」で設定を行います。
# エラー通知
ALERT_EMAIL_FROM=info@example.com # エラー通知メールの送信元
ALERT_EMAIL_TO= # エラー通知メールの送信先。空の場合「UID」が一番小さい管理者アカウントのメールアドレスに送信します。
ALERT_EMAIL_BCC= # カンマ区切りで指定
ALERT_REPORTING_LEVEL=WARNING # エラー通知をする最低ログレベルを設定します。(DEBUG|INFO|NOTICE|WARNING|ERROR|CRITICAL|ALERT)
# ロガー
LOGGER_ROTATING_MAX_FILES=60 # ログローテーションの日数を設定します。
LOGGER_MODE=development # (development|production) productionに設定すると、ライセンス切れやデバッグモード時なども、ログとして残します
設定項目 | 説明 | デフォルト値 |
---|---|---|
ALERT_EMAIL_FROM | エラー通知メールの送信元 | info@example.com |
ALERT_EMAIL_TO | エラー通知メールの送信先。空の場合「UID」が一番小さい管理者アカウントのメールアドレスに送信します | |
ALERT_EMAIL_BCC | エラー通知メールのBCC | |
ALERT_REPORTING_LEVEL | エラー通知をする最低ログレベルを設定します | WARNING |
LOGGER_ROTATING_MAX_FILES | ログローテーションの日数を設定します | 60 |
LOGGER_MODE | productionに設定すると、ライセンス切れやデバッグモード時なども、ログとして残します | development |
LOGGER_MODEはデフォルトだと「development」になっています。この状態だと、ライセンスに問題があった場合などログが残らず通知もしてくれないので、本番環境では必ず「production」に設定しましょう。
開発者向け
専用モジュールやHookなどを使用して、PHPをカスタマイズしている方もいると思います。 そんな方には、以下の方法を使うことで自分のプログラムにログを追加できるようになります。
基本的な使い方
- 保存したいログレベルのメソッドを呼び出す
- 第1引数: メッセージ文字列
- 第2引数: 保存したい情報(連想配列)
AcmsLogger::[ログレベル](string $message, array $info);
// 例
AcmsLogger::info('xxxを作成しました', [
'hoge' => 'abc',
'hoge2' => 200,
]);
use して使う場合
use Acms\Services\Facades\Logger;
Logger::info('xxxx');
コード例
メッセージだけ指定
\ AcmsLogger::critical('重大な問題により動作を停止しました');
例外をログとして残す
「Common::exceptionArray()」を第2引数に指定すると、例外の詳細な情報を渡してくれます。
try {
...
} catch ( \Exception $e ) {
\AcmsLogger::warning($e->getMessage(), \Common::exceptionArray($e));
}
このログは通常のログと同じように表示や通知などに利用できますので、PHPでカスタマイズを行っている方はぜひお試しください。
監査ログ機能の紹介については以上になります。他 Ver. 3.1.0 の新機能・改善も多くありますので、ぜひご覧ください。
- 会員機能の詳細を見る
- memberテーマの詳細を見る
- エントリー編集機能改善の詳細を見る
- 管理機能改善の詳細を見る
- テンプレート機能改善の詳細を見る
- キャッシュ機能改善 & Webhook機能改善の詳細を見る
日々使いやすいシステムとなるよう改善を勤めておりますので、皆様からの貴重なフィードバック、お待ちしております。
今後とも a-blog cms のことをどうぞよろしくお願いいたします。