回答編集履歴
3
追記
test
CHANGED
@@ -13,3 +13,13 @@
|
|
13
13
|
自動変換が行われないように、[FileHandler](https://docs.python.jp/3/library/logging.handlers.html#filehandler)をバイナリモード(コンストラクタの引数:modeを設定)で書き込めば良いように思いますが。
|
14
14
|
|
15
15
|
FileHandlerの親クラスでログ・ファイルに書き込む時に内部で[msg = self.format(record)](https://github.com/python/cpython/blob/3.6/Lib/logging/__init__.py#L992)と`str`に型変換を行っているため`バイナリデータ`を書き込めません。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
---
|
20
|
+
|
21
|
+
後から見た人用纏め。
|
22
|
+
|
23
|
+
で、ログファイルをLFで出力するには結局どうしたらいいのか?
|
24
|
+
|
25
|
+
`FileHandler`の代わりにKSwordOfHasteさんのコメントにある、KSwordOfHasteさんが作成した`NLFileHandler`を使えば可能です。
|
2
補足
test
CHANGED
@@ -2,8 +2,14 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
理由:[
|
5
|
+
理由:FileHandlerの親クラスである[StreamHandlerに終端記号を表す`terminator`属性があります。](https://docs.python.jp/3/library/logging.handlers.html#streamhandler)
|
6
|
+
|
7
|
+
`terminator`属性の値を変更すると終端記号を変更できますが、
|
8
|
+
|
9
|
+
windows環境においてはログファイルを`テキストモード`で書き込む時に[\n (LF)は\r\n (CR)(LF)に自動変換されます](https://ja.wikipedia.org/wiki/%E6%94%B9%E8%A1%8C%E3%82%B3%E3%83%BC%E3%83%89#%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E6%94%B9%E8%A1%8C%E3%82%B3%E3%83%BC%E3%83%89)
|
6
10
|
|
7
11
|
|
8
12
|
|
9
|
-
|
13
|
+
自動変換が行われないように、[FileHandler](https://docs.python.jp/3/library/logging.handlers.html#filehandler)をバイナリモード(コンストラクタの引数:modeを設定)で書き込めば良いように思いますが。
|
14
|
+
|
15
|
+
FileHandlerの親クラスでログ・ファイルに書き込む時に内部で[msg = self.format(record)](https://github.com/python/cpython/blob/3.6/Lib/logging/__init__.py#L992)と`str`に型変換を行っているため`バイナリデータ`を書き込めません。
|
1
追記
test
CHANGED
@@ -6,4 +6,4 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
そして、[FileHandler](https://docs.python.jp/3/library/logging.handlers.html#filehandler)のmodeはbinaryモードで開けますが、FileHandlerの親クラスでログ・ファイルに書き込む時に内部で[msg = self.format(record)](https://github.com/python/cpython/blob/3.6/Lib/logging/__init__.py#L992)と`str`に変換しているため`binary`データとして書き込めません。
|
9
|
+
そして、[FileHandler](https://docs.python.jp/3/library/logging.handlers.html#filehandler)のコンストラクタの引数:modeはbinaryモードでログ・ファイルを開けますが、FileHandlerの親クラスでログ・ファイルに書き込む時に内部で[msg = self.format(record)](https://github.com/python/cpython/blob/3.6/Lib/logging/__init__.py#L992)と`str`に変換しているため`binary`データとして書き込めません。
|