Moodleのログ出力について

Moodleのログ出力について

- Yuuki Murakami の投稿
返信数: 2

いつもお世話になっております。村上です。

今回もユーザからの質問があり、調査しましたが
解決しなかったため、投稿させていただきました。

Moodleでレポートのログ表示機能があると思います。
どのユーザがどういったアクションを行ったというのは
わかりますが、利用したブラウザを表示させるように
改良する事は可能でしょうか?

諸事情でアクセスに使用したブラウザも知りたいと思っています。
現状はアクセス元IPとApacheのアクセスログから
おおよその検討をつけて対応していますが、Moodle側で
ユーザエージェント等の情報を得ることが出来れば
業務的に助かります。

Moodleのバージョンは3.1を利用しています。

以上、宜しくお願い致します。

Yuuki Murakami への返信

Re: Moodleのログ出力について

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

宜しければ下記プログラム修正をお試しください。

---------------------------------------------------------------------------

修正対象プログラム:
admin/tool/log/classes/helper/buffered_writer.php

修正箇所:
71行目

[ 修正前 ]
        // We need to capture current info at this moment,
        // at the same time this lowers memory use because
        // snapshots and custom objects may be garbage collected.
        $entry = $event->get_data();
        $entry['other'] = serialize($entry['other']);
        $entry['origin'] = $PAGE->requestorigin;
        $entry['ip'] = $PAGE->requestip;
        $entry['realuserid'] = \core\session\manager::is_loggedinas() ? $GLOBALS['USER']->realuser : null;

[ 修正後 ]
        // We need to capture current info at this moment,
        // at the same time this lowers memory use because
        // snapshots and custom objects may be garbage collected.
        $entry = $event->get_data();
        $useragent = $_SERVER["HTTP_USER_AGENT"];
        $entry['other']['useragent'] = $useragent;

        $entry['other'] = serialize($entry['other']);
        $entry['origin'] = $PAGE->requestorigin;
        $entry['ip'] = $PAGE->requestip;
        $entry['realuserid'] = \core\session\manager::is_loggedinas() ? $GLOBALS['USER']->realuser : null;

---------------------------------------------------------------------------

修正対象プログラム:
report/log/classes/table_log.php

修正箇所:
323行目

[ 修正前 ]
    public function col_ip($event) {
        // Get extra event data for origin and realuserid.
        $logextra = $event->get_logextra();
        $ip = $logextra['ip'];


[ 修正後 ]
    public function col_ip($event) {
        // Get extra event data for origin and realuserid.
        $logextra = $event->get_logextra();
//        $ip = $logextra['ip'];
        $ip = $logextra['ip'] . '<br />' . $event->other['useragent'];

---------------------------------------------------------------------------

Mitsuhiro Yoshida への返信

Re: Moodleのログ出力について

- Yuuki Murakami の投稿
Yoshida様、返信ありがとうございます。
早速ですが、ご教示していたいだいた
修正を行ったところ、無事に表示する事が出来ました。

思っていた通りの表示でうれしいです。

本当にありがとうございました。