zsh内のtmuxでペイン単位で、SSHなど特定のコマンドが終わるまでだけタイムスタンプ付きのログを取るプラグイン

# なんだこれ
作ったゾイ

https://github.com/nnao45/ztl
![ztl04 (1).gif](https://qiita-image-store.s3.amazonaws.com/0/124502/bf13f3e0-295f-ec9e-212e-507651baef63.gif)


zsh内のtmuxでペイン単位で、SSHなど特定のコマンドが終わるまでだけタイムスタンプ付きのログを取るプラグインっていう、もう読む気失せるくらい長くてニッチなプラグイン何ですけど、僕は欲しかったんで作りました。

騙されたと思って使ってみると、非常に使い勝手の良い証跡作りになります。

今まででの他のtmuxでロギングツールからパクったりしてるんですが

・[tmuxを使いながらログを取る](https://qiita.com/docokano/items/8418cc1b2561df03e8d9)
・[tmuxメモ : Tmux Loggingでロギングとキャプチャ](https://wonderwall.hatenablog.com/entry/2016/07/01/221338)

毎回prefixコマンドをsshする毎に打つとかすると面倒だったってのと、
じゃあtmux上がるたびにログを書き出す処理にしてみると今度は重くなって嫌ってのと、
出来たら宛先別にログが分かれるといいなって思いました。

あと `tmux pipe-pane` で出力を飛ばす時にタイムスタンプをつけたかった。
（みんながこれをやらない理由は分かったが・・・実際実装出来たが面倒すぎた）

# インストールは？

## Zplug
write zshrc

```zsh
zplug "nnao45/ztl", use:'src/_*' 
```

## Source Install
Download Repo

```zsh
$ mkdir ${HOME}/.ztl
$ git clone https://github.com/nnao45/ztl.git ${HOME}/.ztl/
```

write zsh

```zsh
$ echo 'source ${HOME}/.ztl/src/_*' >> ${HOME}/.zshrc
```

# 使う例

ログを取りたいコマンドラインの最初に書いておくだけで動きます。

```zsh
$ ztl <command> ...
```

sshと一緒に使うのがほとんどなんだよな。

```zsh
$ ztl ssh <host>
```

これでファイルは以下のように出来る。

```zsh
$ ztl ssh skycoin
```

```shell-session
$ cat ${HOME}/term_logs/skycoin_2018-09-15_14-44-15.log          
[2018-09-15 14:44:21.904392] Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.15.0-23-generic x86_64)
[2018-09-15 14:44:21.904844]
[2018-09-15 14:44:21.906093]  * Documentation:  https://help.ubuntu.com
[2018-09-15 14:44:21.906135]  * Management:     https://landscape.canonical.com
[2018-09-15 14:44:21.906162]  * Support:        https://ubuntu.com/advantage
[2018-09-15 14:44:21.906187]
[2018-09-15 14:44:21.906212]   System information as of Sat Sep 15 05:44:19 UTC 2018
[2018-09-15 14:44:21.906236]
[2018-09-15 14:44:21.906261]   System load:  0.05               Processes:              89
[2018-09-15 14:44:22.172836]   Usage of /:   28.4% of 24.55GB   Users logged in:        0
[2018-09-15 14:44:22.173053]   Memory usage: 31%                IP address for ens3:    45.63.21.232
[2018-09-15 14:44:22.173163]   Swap usage:   0%                 IP address for docker0: 172.17.0.1
[2018-09-15 14:44:22.173209]
[2018-09-15 14:44:22.173246]
[2018-09-15 14:44:22.173282]  * Canonical Livepatch is available for installation.
[2018-09-15 14:44:22.173318]    - Reduce system reboots and improve kernel security. Activate at:
[2018-09-15 14:44:22.173361]      https://ubuntu.com/livepatch
[2018-09-15 14:44:22.173408]
[2018-09-15 14:44:22.173444] 64 packages can be updated.
[2018-09-15 14:44:22.173480] 21 updates are security updates.
[2018-09-15 14:44:22.173515]
[2018-09-15 14:44:22.173549]
[2018-09-15 14:44:22.173588] Last login: Sun Aug  5 06:53:15 2018 from XX.XX.XX.XX
[2018-09-15 14:44:23.612444] -bash: warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8)
[2018-09-15 14:44:23.853332] root@nnao45-skycoin:~#
[2018-09-15 14:44:23.963899] root@nnao45-skycoin:~#
[2018-09-15 14:44:24.751494] root@nnao45-skycoin:~#
[2018-09-15 14:44:24.957836] root@nnao45-skycoin:~#
[2018-09-15 14:44:25.745808] root@nnao45-skycoin:~#
[2018-09-15 14:44:25.963387] root@nnao45-skycoin:~#
[2018-09-15 14:44:29.124433] root@nnao45-skycoin:~#
[2018-09-15 14:44:30.807593] root@nnao45-skycoin:~#
[2018-09-15 14:44:30.807679] root@nnao45-skycoin:~# logout
[2018-09-15 14:44:30.813921] Connection to XX.XX.XX.XX closed.
```

結構これをtmux上で実現するも大変だったのでプラグイン化しました。

こだわったところとしてタイムスタンプがmillsecondsで表示されるってところ（これをするためにperlを埋め込みました）と、
なんとSSHを切断するとログファイルを記述をやめます。トランザクション処理をする、ここがすごい。

他にも、何行か表示されるコマンドだけ証跡として取りたい際に便利です。
まぁほぼSSH用かな。

バグとかいくらでもあると思いますが、まぁこういうやり方があるよってことで。