/etc/logrotate.conf に記述して、logrotate が制御するようにしています。
/usr/local/tomcat9/logs/*.out { copytruncate #monthly daily dateext missingok notifempty #compress rotate 60 }
|
Semakin di depan
/etc/logrotate.conf に記述して、logrotate が制御するようにしています。
/usr/local/tomcat9/logs/*.out { copytruncate #monthly daily dateext missingok notifempty #compress rotate 60 }
|
本家 Tutorial : https://stedolan.github.io/jq/tutorial/
わかりやすい紹介 : https://qiita.com/takeshinoda@github/items/2dec7a72930ec1f658af
inotify-tools の分かり易い説明 : https://qiita.com/stc1988/items/464410382f8425681c20
アプリケーションのログがJSONテキストで、フィールドを分けて、データベースのテーブルに追加できるスクリプトを作りました。
MySQL 5.7 から、JSON型が提供されたので、整形しないでそのまま追加すれば使えますが、抽出のSQLに慣れてなく、列で分けた方が視認性良いのでそうしてます。
[ 大まかな流れ ]
1) ログは逐次出力されるので、inotify で更新を待ち受け
2) ログの行が追加された時点で、発火
3) 最終行を取得して、sedとかgawkで変換
4) jqで各列値を取得
5) SQL文に整形して、INSERTコマンドを渡しテーブルに追加
[ コード例 ]
#!/bin/bash
### NextCloud log add to my table log ###
# $1 : SiteName (end part of URI)
# required package: inotify-tools
## --------- const ------------- ##
FIELD_ARRAY=(reqId level time remoteAddr user app method url message userAgent version,)
INSSQL="INSERT INTO log_use (NM_SITE,"
INTERVAL_COMMIT=10 # 一括した時スキップするので
# in order to avoid
# should write notify result to file. and check row count by wc. and write SQL script file
## ----------------------------- ##
nmsite=$1
watch_file=/home/ncdata/${nmsite}/nextcloud.log
#events=(-e CREATE -e MODIFY -e MOVED_TO)
cnt=0
argsql=""
cmdpost="";
while inotifywait -e MODIFY ${watch_file}; do
row=`tail -n 1 ${watch_file}`
echo ${row}
echo "------------------------------------------------------------"
# execute jq #
#echo ${row} | jq
#echo "-- method"
#echo ${row} | jq -r '.method'
let cnt++
echo ${cnt}
echo "-- SQL"
cursql=${INSSQL}
# Field part #
for fld in ${FIELD_ARRAY[@]}; do
cursql=${cursql}${fld}","
done
cursql=${cursql}") VALUES ("
cursql=`echo ${cursql} | sed 's/,,//g'`
# Value part #
cursql=${cursql}"'"${nmsite}"',"
for fld in ${FIELD_ARRAY[@]}; do
nmfld=`echo ${fld} | sed 's/,//'`
curval=`echo ${row} | jq ."${nmfld}"`
if [ ${nmfld} = "time" ]; then
curval=`echo ${curval} | sed 's/\+[0-9][0-9]:[0-9][0-9]//'`
fi
cursql=${cursql}${curval}","
done
cursql=${cursql}");"
cursql=`echo ${cursql} | sed 's/,);/);\n/g'`
#cursql=`echo -e $cursql"\n"`
#echo ${cursql}
argsql=${argsql}${cursql}
# Execute command #
if [ ${cnt} -eq ${INTERVAL_COMMIT} ]; then
#cmdpost=${CMD_SQL}${argsql}"'"
echo ${argsql} > ${INSSQL_FILENAME}
## debug
tmcur=`date "+%Y%m%d-%H%M%S"`
#cp ${INSSQL_FILENAME} ${INSSQL_FILENAME}"."${tmcur}
echo `ls -l ${INSSQL_FILENAME}`
cmdpost=${CMD_SQL}${INSSQL_FILENAME}
echo "-- MySQL shell command"
#echo ${cmdpost}
#`${cmdpost}` ???????????? script incorrect
# Write MySQL database #
mysql -u???? -p????????? mytable < ${INSSQL_FILENAME}
argsql=""
echo "" > ${INSSQL_FILENAME}
cnt=0
fi
done
|
|
|
I/T業界は、うまく利用者をだまして、ファンを引き寄せ、洗脳化して収益を上げる習慣が昔からあると思います。
心地よいカタカナ英語をはやらせることが、その手段のひとつと思います。
[ ユーザーエクスペリエンスを喚起 ]
平たく直言すれば、ただの洗脳化と思います。
[ アベイラビリティゾーン ]
ちゃんと、日本語にして、適用可能領域 にしておけ
[ マーケットプレース ]
売り場、販売場所でよかろう
[ インストールメディア ]
導入媒体
[ コマンド ライン パラメーター ]
端末入力引数
[ エラー ]
例外
[ ステータス ]
状態
[ フェーズ ]
段階
[ デフォルト ]
既定
[ ローカライズ ]
他言語国際化だが、米国中心を基準とした、いなかが他国になってるので、そのまま使うのは日本人としては抵抗あります。
[ サインアップ、サインイン ]
最近、ログインからこの表現に変わってきていて、ログオン、ログインとの違いはっきり説明しろ、と思う。ログオンはマイクロソフト語なので、管理人はログインに統一。これからは、利用者認証に変えようと思う今日この頃。
[ ミッションクリティカル ]
高等学校卒業程度の人だったら、意味わかると思いますが、ちゃんと業務重要必要性度とかに変えておけと思う。
[ オーバーヘッド]
間接的処理に付帯する避けること出来ない負荷
1) JSPの自作カスタムタグを使った select を使う
<%@ taglib uri="/WEB-INF/htmythema.tld" prefix="MyThema" %>
2) 1) を使いたいところに配置
// マイテーマ選択用 //
var themasel = "<MyThema:mythema realdir='' themaval='<%=cfg.getSeltheme()%>' />";
// == 生成完了した時 == //
gridComplete: function () {
var THEMA_DIV = "<div style='float:right' id='mythemadiv'></div>";
// マイテーマ選択用 //
$("#t_others").append(THEMA_DIV);
$('#mythemadiv').html("MyTheme " + themasel);
// テーマ変更 => リロード //
$('#themasel').on('change', function () {
$('#thmnm').val($(this).val());
$('#thmchgform').submit();
});
<%-- テーマ変更用 --%>
<%--<MyThema:mythema realdir="" themaval="<%=cfg.getSeltheme()%>"/>--%>
<form id="thmchgform" method="post" action="export.jsp">
<input type="hidden" name="thmchg" value="yes" />
<input type="hidden" name="thmnm" id="thmnm" value="" />
</form>
3) 変更リクエストのactionは自ページで、変更内容はクッキーとセッションにセット (どっち使っても良いが、実際はセッションを使ってる)
// テーマ変更で来た場合 //
if (request.getParameter("thmchg") != null) {
// セッションに格納 //
String thmnm = request.getParameter("thmnm");
cfg.setSeltheme(thmnm);
// クッキーに保存 //
Cookie cookie = new Cookie("thema", thmnm);
cookie.setMaxAge(60 * 24 * 60 * 60); //有効期間を60日間に設定
response.addCookie(cookie);
}
[ 画面例 ]
[ 設定と読込 ]
CREATE TABLE `m_themacol` (
`NM_THEMA` VARCHAR(20) NOT NULL COMMENT 'テーマ名',
`NM_MENUCOL` VARCHAR(7) NOT NULL DEFAULT '' COMMENT 'メニュー背景色',
`IS_DARKTHEME` TINYINT(4) NOT NULL DEFAULT '0',
`TM_ADD` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '追加時刻',
`TM_UPDT` DATETIME NOT NULL DEFAULT '2000-01-01 00:00:00' COMMENT '最終更新時刻',
PRIMARY KEY (`NM_THEMA`)
)
COMMENT='jQueryUIテーマ別色設定'
COLLATE='sjis_japanese_ci'
ENGINE=InnoDB
;
[ 基本的方法 ]
列数が多かったり、複雑な設定の colModel の場合、ページと同じファイルに記述すると、長くわかりにくくメンテナンス性低下なので、JSONファイルを読み込んでます。
[ コード例 ]
// 一覧表のcolModelをファイルから読み込む //
$.ajaxSetup({async: false}); // <== 非同期を解除
var shipmentColmodel;
var tmpname;
$.getJSON("shipment.json", function (json) {
shipmentColmodel = json;
var len = json.length;
for (var i = 0; i < len; i++) {
tmpname = shipmentColmodel[i]['name'];
// ローカルストレージに保存した列幅にする //
if (name_widthMap[tmpname]) {
shipmentColmodel[i]['width'] = name_widthMap[tmpname];
}
}
});
$.ajaxSetup({async: true}); // <== 非同期に戻す
[ JSONファイル例 ]
— 省略 —
直ぐに使えて、ちょっとしたデータ管理には便利な sqlite ですが、他のデータベースと同じように使うには無理で、機能がない部分が多いです。
|
|
< MS >
桃田健斗、今年も大活躍を期待してます。
< WS >
ちまたでは、奥原希望、山口茜の期待感大ですが、高橋沙也加と大堀彩に期待してます。どちらも左で長身、シングルスでは絶対優位です。
< MD >
遠藤/渡辺 (日本ユニシス) と、園田/嘉村 (トナミ運輸) の首位争いが今年も続くでしょう。
< WD >
福島/廣田 と 高橋/松友 の熾烈な首位争いに、昨年世界選手権制覇の 永原/松本 が参戦。春から始まる、五輪レースのポイント争いに一喜一憂することになるでしょう。(開催国枠とランキング枠の関係、何組出れるかわかってませんが)
2019年第2週 BWF WD ランキング
< XD >
昨年の日本人全英初制覇以来、一気に急浮上、東野有紗のど迫力ジャンプスマッシュが炸裂して、今年は世界ランキング1位をキープするでしょう
< M Team >
< W Team >
政治は、学問や科学ではない。術である。人の心を知るという術なのです。
人の心を察する ーこう言うと悪くすると陰険らしくも聞こえるがそうではない。他人の苦は自己の苦しみであるという、ここの道場から多数の幸福が得られてよい政治が生まれるのです。
|
コメントを投稿するにはログインしてください。