logback-test.xmlを使ってログレベルを変更するのエントリでlogback-test.xmlを用意すればこっちが先にロードされるので、logback.xmlより優先されていいよね的なことを書いた。で、こういうログレベルってJavaVM起動時に自由に指定できるとテストを実行する時によりいいよなぁと思ったので調べてみた。
Logback FAQ – How can I disable logging from the command line?に詳しく書いてある。前回の例を使うとこんな感じ。
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
</layout>
</appender>
<root level="${root-level:-debug}"> <!-- ここ -->
<appender-ref ref="STDOUT" />
</root>
</configuration>
で、下記のシンプルなサンプルコードをEclipseで実行する。実行する時の VM arguments に
-Droot-level=info
を指定するとログレベルは info になるし、何も指定しないと debug になる。
package net.lampetty.samples;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LogbackSample1 {
private static final Logger log =
LoggerFactory.getLogger(LogbackSample1.class);
public static void main(String[] args) {
log.debug("debug message");
log.info("info message");
}
}
logback.xmlには変数置換(Variable Substitution)の機能があってShellみたく変数を埋め込める。${root-level:-debug} に書くと root-level が定義されていない場合は debug をデフォルト値として適用する、という意味(まさにShell)。
これでログレベルを自由自在に設定できる。
最近PDF化した技術書をiPhone4で読むようになった。最初は全部iPadに入れてiPadを持ち運ぼうと思っていたんだけど
- iPadは意外と重い
- 電車の中でかばんから出すのがめんどい
- iPhoneだったら常に持ち歩いているのでどこでも本が読める
ということでiPhone4で技術書を読むようになった。で、これが意外と読める。なんといっても解像度が高いので文字が小さくてもそこまで目が疲れないし、すぐポケットから出して読めるので、5分ぐらいのちょっとした待ち時間でも読書できるのが大きい。
というわけで、最近技術書を読むペースが上がってきた。
Javaにlogbackというlog4jに代わるロギングライブラリがあって、これのちょっとしたTIPS。
本番環境ではなく、ローカルマシンでの開発時のアプリケーションのlogback.xmlでは、下記のようにログレベルをdebugにしているとする。
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
</layout>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
で、例えばDBへのクエリをdebugレベルでログ出力している場合、人によっては「DBのクエリの出力はうざいから止めたい」というケースがたまにある。logback.xmlでレベルをdebug -> infoにしてもいいんだけど、間違ってコミットしちゃった場合に回りの人に迷惑がかかる。そういう場合はCLASSPATHが通っているところに logback-test.xml というファイルを作っておいて、上のXMLのlevelの部分を debug -> info にする。
<root level="info">
<appender-ref ref="STDOUT" />
</root>
これでlogback.xmlを直接編集しなくてもアプリケーションのログレベルをinfoにできる。具体的には
- logbackはまずはCLASSPATH内にlogback-test.xmlがあればロードを試みる
- ない場合はlogback.xmlをロードを試みる
という仕様になっているので(参考: Chapter3: Logback configuration & Joran)、logback-test.xml作るとこっちを先に読んでくれるというわけ。
これで自分の見たい情報にフォーカスできる。でも絶対もっとうまいやり方がありそう…
おまけ
なお、上の参考リンクに「Maven使ってて src/test/resources/ 配下の logback-test.xml は artfifactからは除外される」と書いてあったんだけど、Maven 2.2.1で試した限り除外されなかった。なんでだろう…
5.5ってどうなんだろう?と思ったので試しにこのブログのMySQLを5.1 -> 5.5にしてみた。
tar.gz のバイナリを取ってきて /usr/local/mysql-5.5.13-linux-2.6-i686 に展開して /usr/local/mysql にsymlink (バージョンアップに失敗したときにすぐに戻せるように)。あとはstop start して起動するだけ。
/usr/local/mysql/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
って言われるので、libaioをインストール(ubuntu)
$ sudo aptitude install libaio
$ sudo /sbin/ldconfig
もう1回起動。今度は
110604 1:16:45 [ERROR] /usr/local/mysql/bin/mysqld: unknown variable 'default-table-type=InnoDB'
って怒られる。どうやら default-table-type は使えなくなったらしい。
default-storage-engine = InnoDB
としたら無事起動。
最後に
# /usr/local/mysql/bin/mysql_upgrade
して完了。今のところ無問題。
Emacsのタグジャンプ系のキーバインドが M – . とかであまりにも打ちにくいので変えた。
;; etags
(require 'etags)
(global-set-key "\C-cj" 'find-tag)
(global-set-key "\C-cb" 'pop-tag-mark)
(global-set-key "\C-cn" '(lambda () (interactive) (find-tag last-tag 1)))
| 動作 |
デフォルト |
変更後 |
| タグを探してジャンプ |
M-. |
C-c j |
| ジャンプ前に戻る |
M-* |
C-c b |
| 次の候補へ行く |
C-u M-. |
C-c n |
という2台持ち状態だったのを、一念発起してSIM Lock Free iPhone4を購入してDoCoMo SIMにしてみた。そもそもガラケーは仕事で動作確認ぐらいにしか使用してないし、2台も携帯を持つことに疲れてしまったので。
DoCoMoのいいところ
やっぱり電波が入る範囲が広い。都心にいる分にはあまりメリットが感じられないけど、地方に行った時のつながりやすさはすごい。
DoCoMoとSoftBankの回線速度の比較
体感的にはDoCoMo <-> SoftBank でそんなに違いは感じられない。実際に測ってみたところ、そんなに違いはなかった。
DoCoMo

SoftBank

テザリング
DoCoMoだとデータ通信代として1,0395円払えばテザリングしてPCなども繋げられる(PC繋がない場合は5900円 or 5400円ぐらい)。自分はiPadやノートPCを外出先でネットに繋ぎたいのと、かつイーモバみたいな機器を別で持つのが嫌だったのでちょっと高くてもこれを使ってる。速度的には大体1Mbpsは出ているっぽいので、VPNでRemoteDesktopもなんとか使える感じ。ちなみにb-mobile SIMは使い物にならなかった。
はまりそうなポイント
DoCoMoの回線を契約するにあたって、海外版のSIM Lock Free端末を利用する場合、技適マークを表示できないと駄目らしい。iPhone4の場合はなんかしらのSIMを差してアクティベートしないとこの技適マークが表示できない。自分はたまたまb-mobileのSIMを差してアクティベートしてたので大丈夫だったけど、これははまるポイントだなと思った。SoftBankのiPhoneを持っているならそのSIM挿せばいいのかな。
ちなみに技適マークは 設定→一般→情報→認証 で表示することができる。
まとめ
2台持ちのストレスから解放されたのが地味に嬉しい。あとテザリングができるようになったので、他の電子機器をもっと活用できるようになった。メールや電話の着信はやはりガラケーの方が気付きやすいけど、そこはアプリで乗り切れる、、、はず、、、
もう個人で携帯2台持ちしたくないので、iPhone4 SIM Lock Free版をヤフオクで買った。で、せっかくなのでb-mobileがどのぐらい使い物になるのか、1ヶ月分のSIMを買って試してみた。買ったのはb-microSIM Platinum。
BNR SpeedTestの結果
BNR スピードテスト画像読み込み版で回線速度を測ってみた@東京都世田谷区某所
Softbank: 838.55 kbps
b-mobile: 555.51 kbps
という結果に。
体感的な速度
- 普通にテキストベースのサイトをブラウザで見てる分には気にならない
- YouTubeで動画を見るときは、動画のサイズに応じて始まるまでの待ち時間がけっこうあるなぁという感じ
- Google Mapは2,3秒ぐらい遅れて表示される。なんとか使い物になるレベル
- テザリングでRemote Desktopは、「Remoteでアプリケーションウィンドウを切り替えると3秒待たされる」レベル。これは無理。
まとめ
総じて「使い物にはなりそうだけど、イライラしそうなレベル(テザリング以外)」だと感じた。Softbankの回線スピードに不満を持っている人はb-mobileじゃ駄目だと思う。というわけで自分はdocomoのパケホーダイのプラン(最大で10395円)にする予定。b-mobile Fairで音声通話がついてればこれが一番良かったんだけどなぁ。
コメント