ログファイルの仕様

ログファイルは、テキストファイルです。普通のテキストエディタで開けます。

例)

1行目はログファイルの設定をするヘッダー部です。実際のログは2行目以降になります。

ヘッダー部
Time タイムスタンプ。
0 : なし
1 : あり
StdO 標準出力。
0 : なし
1 : あり
OverW TSLOG_Init ( ) をコールしたときの追記/上書き。
0 : 追記
1 : 上書き
複数のプロセスが並行して同一のログファイルに出力するときは、OverW=0 にします。( OverW=1 にすると、後発の TSLOG_Init ( ) によって既存のログが上書きされてしまいます。)
Lvl 出力レベル。
0 : TSLOG_Write ( ) 系の何れも出力されません。
1 : TSLOG_Write ( ) が出力されます。
2 : TSLOG_Write ( ) と TSLOG_Write2 ( ) が出力されます。
3 : TSLOG_Write ( ) と TSLOG_Write2 ( ) と TSLOG_Write3 ( ) が出力されます。
Hex TSLOG_WriteHex ( ) の出力。
0 : なし
1 : あり
Cut 1行の長さ(下記 Len )を越えるログの Len 以降の切り捨て。
0 : あり
1 : なし
CR 改行コードを置換する文字。
出力するログ文字列に改行コードが含まれている場合、この文字で置換して出力されます。
Len ログ1行の長さ。(行末の改行コードを含みません)。
79 〜 255 まで指定できます。
Max ログが循環するための最大件数。
最大 99999 まで指定できます。
Cnt 出力済み行数。
ログが循環する度に 0 から始まります。ログファイル内のインデックスであり、出力件数のトータルではありません。
Init 次に TSLOG_Init ( ) か TSLOG_Write ( ) か TSLOG_WriteHex ( ) がコールされたときにログファイルを初期化。
0 : しない
1 : する
初期化後は自動的に Init=0 に戻ります。

ヘッダー情報は、ログを出力する実行ファイルが稼働中でも変更することができます。

もちろん、実行ファイルから TSLOG_Init ( ), TSLOG_Write ( ), TSLOG_WriteHex ( ) がコールされるドンピシャのタイミングで変更したらダメです。(実行ファイルからの書き込みとテキストエディタからの書き込みがぶつかる可能性があるからです)

Len=? を変更した場合、変更前の長さで出力されていた既存のログはそのまま残ります。そのため、変更の境目前後の行と、ヘッダー部直後の行が多少崩れてしまいますが、ログが循環すれば勝手に直ります。

Max=? を変更した場合、変更前の件数で出力されていた既存のログはそのまま残ります。
例えば、

Time=1,StdO=0,OverW=1,Lvl=1,Hex=1,Cut=0,CR=|,Len=79,Max=1000,Cnt=745,Init=0

Time=1,StdO=0,OverW=1,Lvl=1,Hex=1,Cut=0,CR=|,Len=79,Max=500,Cnt=745,Init=0

に変更した場合、Cnt=745 が Max=500 を越えているので次にログが出力されるときには循環して Cnt=0 から始まりますが、501 件目以降の既存のログは削除されずに残ります。これを削除するときは Max=? と同時に Init=1 に変更します。

ダンプした2バイト文字の表示

TSLOG_WriteHex ( ) で出力したダンプリスト中、2バイト文字があったときはその文字が表示されますが、データの並び方によっては再現できないことがあるかもしれません。

UNIX 版で半角カナをダンプすると、ダンプリスト右側のキャラクタ表示が桁ずれを起こします。これは TSLog の設計上、どうしようもありません。

2バイト文字の折り返し補正

ログは Len=? にもとづいて自動的に改行されますが、このとき漢字コードなどの2バイト文字が先行バイトと後続バイトに分断されてしまう場合には自動的に補正されます。

例)

2行目の「はひふへほ」の「ほ」が分断されないように、「へ」の後に半角スペースが入って「ほ」が次の行に出力されています。4行目の「ナニヌネノ」の「ノ」も同様です。
7行目のバイナリダンプでは、「か」が分断されないように出力されています。8行目以降も同様です。