djangoをdockerコンテナで利用(10) - データベースにログ出力
ログって業務ではよく見るけど、個人的にはあまり見ない。 何かエラーが出た時とか、操作履歴を調べたいときとか。 テキストファイルに吐き出すとgrepできるから便利ってのもあるけど、自分はデータベースに書き出してる。 勝手に圧縮してくれるし、古いログを消したいなら書き込み日付で削除のsql発行すれば一発で終わるし。 できるだけ楽をしたいなぁって思う。 あと、テーブルを使う理由は新しい順に表示させてほしいから。 テキスト表示だと、新しい書き込みは下に追加されていく。 sortかcatの逆のtacでできるけど・・・。 linuxのlogrotate設定は、bashのスクリプト使って日次バックアップの結果ログとかで使ってはいるけど、ローテート設定面倒なのであまり好かない。 世代とかサイズとか指定してく必要がある。 アプリケーションとしては、dockerコンテナで、しかもsslをnginxを通じてdjangoのコンテナを使うとログ出力がどうなるのかやってみた。 mariadbのテーブル定義 ログは、いつ、誰が、何をした、みたいなことが残ればいい。 必要なら発行したsqlとかも入れればいいけど、そこまで必要なのは業務利用の場合かなぁ。 7年ほどphpで使ってきた仕組みをdjangoで書き換えて踏襲するので、データベースのログ保管の定義は変えない。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 CREATE TABLE `GVIS_log` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', `logPeriod` datetime DEFAULT NULL COMMENT 'ログ年月日時分秒', `logShubetsu` char(10) DEFAULT NULL COMMENT 'ログ種別', `clientIP` char(15) DEFAULT '' COMMENT 'クライアントIP', `userID` char(32) DEFAULT '' COMMENT 'ユーザID', `Sousa` varchar(100) DEFAULT '' COMMENT '操作', `Message` varchar(10000) DEFAULT NULL COMMENT 'ログメッセージ', `browser` varchar(100) DEFAULT '' COMMENT '操作', `ins_date` datetime DEFAULT NULL COMMENT 'データ作成日', `ins_user` varchar(100) DEFAULT NULL COMMENT 'データ作成ユーザ', PRIMARY KEY (`id`), KEY `GVIS_log_idx` (`logPeriod`,`userID`,`Sousa`,`Message`(255),`browser`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=66928 DEFAULT CHARSET=utf8 django用って言うと、djangoのためにid列を追加したっけ。 テーブル定義にはオートナンバのidがつかないとdjangoは処理出来ないっていうし。 ...