
改行
1
行の区切りデータをロギングする
さらに優れたロギングの方法としては、
4
つの属性を
1
行として書き込み、適切な
区切り文字を使って区切ることでしょう。
区切り文字の選択に迷うかもしれません。ログデータに実際に現れる文字は避け
たいし、空白文字では役に立ちません(ログデータには多くの空白が含まれるため)。
今回は、コロン(
:
)、カンマ(
,
)、セミコロン(
;
)も問題になりそうです。
Head First
Labs
で相談したところ、区切り文字としてバー(
|
)を勧められました。バーなら人に
も判別しやすく、ログデータに含まれている可能性も低いでしょう。この提案を採用
することにし、さっそく試してみましょう。
前に説明したように、追加の引数を指定して
print
のデフォルト動作を調整しま
す。引数
file
に加えて引数
end
にデフォルトの改行に代わる終端値を指定します。
終端値としてデフォルトの改行ではなく
|
を使うように
log_request
を修正し
ましょう。
def log_request(req: 'flask_request', res: str) -> None:
with open('vsearch.log', 'a') as log:
print(req.form, file=log, end='|')
print(req.remote_addr, file=log, end='|')
print(req.user_agent, file=log, end='|')
print(res, file=log) ...